Pruebas de Software
  Niveles de Pruebas




    Universidad de los Andes
          Demián Gutierrez
           Febrero 2013
                               1
¿Cómo Probar?




                Sumar 2 Números

         int sumarAyB(int a, int b) {
           return a + b;
         }




    ¿cómo probamos algo como esto?
   ¿por qué es tan difícil hacer pruebas?
                                            2
¿Cómo Probar?

                                                   Otra
                                                 Aplicación




                Interfaz de Usuario




                                      Envío de
                                       Correo


     ¿cómo probamos algo como esto?                           3
Niveles de Pruebas /
Pruebas Según su Alcance




                       De Sistema
                        ¿fin a fin?




                                                        Más Numerosas
                                       Grano Más Fino




                                                                        Más Rápidas
      PRUEBAS
                      De Integración
   Según su Alcance



                        Unitarias




                                                                                      4
Niveles de Pruebas /
Pruebas Unitarias
     ¿cómo probamos algo como esto?

      entradas   salidas


                                                       ...




                           Interfaz de Usuario

                                                 ...
                                                             5
Niveles de Pruebas /
Pruebas de Integración
     ¿cómo probamos algo como esto?

     entradas      salidas


                                                         ...




                             Interfaz de Usuario

                                                   ...
                                                               6
Niveles de Pruebas /
Pruebas De Sistema / Subsistema
     ¿cómo probamos algo como esto?

                                                ...

                    Interfaz de Usuario




          salidas                                     entradas




                                          ...

                                                                 7
bien, pero
¿cuál es el problema?


                        8
Niveles de Pruebas /
Pruebas De Sistema / Subsistema
                    esto es fácil de probar
                                                  ...



                      Interfaz de Usuario


          salidas                                       entradas




                                            ...


   ponga a correr el sistema y comience a hacer clicks
                 (se puede automatizar)                            9
Niveles de Pruebas /
Pruebas Según su Alcance

  en estos dos casos tenemos problemas




    entradas      salidas   entradas     salidas




               ¿qué tipo de problemas?
                                                   10
Niveles de Pruebas /
Pruebas Según su Alcance




                 entradas   salidas




  los componentes que queremos probar
          tienen dependencias
                                        11
Niveles de Pruebas /
Pruebas Según su Alcance
      que a su vez tienen dependencias




              entradas     salidas




               lo que hace difícil
            probarlos por separado       12
¿cómo se resuelve?
                              B
     entradas
                A   salidas




                              C

                                  13
B           B         “C
                                                  (verdadero)   (FALSO)         om Ca
                                                                                  po mb




                                              s
                                                                (MOCK)




                                            te
                                                                                    ne iar




                                       os en
                                                                                      nt los




                                     er on
                                                                                        es p




                                   ad p
                                                                 C

                                rd om
                                                     C                                     Fa or




                             Ve r C
                                                                                             ls
                                                                                               os



                                 a
                              in
                                                                (FALSO)                          ”

                            im
                                                  (verdadero)
                         El
                                                                (MOCK)


                         B                                                                                     B
                                                                                                           (FALSO)
                   (verdadero)
                                                                                                           (MOCK)


entradas
           A   salidas                                               entradas
                                                                                        A            salidas




                         C                                                                                     C
                                                                                                           (FALSO)
                   (verdadero)
                                                                                                           (MOCK)




                                                                                                                     14
B             bajo prueba
                        (verdadero)      (en modo prueba)

    entradas
               A    salidas

                                                               B
                              C
                                                           (FALSO)
   en producción                                           (MOCK)

(en funcionamiento) (verdadero)
                                      entradas
                                                 A   salidas




                                                               C
                                                           (FALSO)
                                                           (MOCK)


                                      Conductor de la Prueba



                                                                     15
Los Mocks y Stubs se pueden
  implementar sin la ayuda de ningún
    framework, pero usualmente es
aconsejable apoyarse en alguna librería
 Dos muy conocidas en el mundo Java
                    JMock
                   http://jmock.org/

                   Mockito
           http://code.google.com/p/mockito/

                                               16
¿cómo mejorar la
    “testeabilidad”?

¿cómo escribir software
    “testeable”?
                          17
¿Cómo escribir código que sea “testeable”?
¡Cuatro consejos clave!

   Establecer “contratos” entre los distintos componentes
                 por medio de interfaces

     Evitar usar el operador new para crear instancias
      concretas de un tipo dado (preferir interfaces)
                      ¿qué? ¿cómo?

      Usar el principio de “inversión de dependencias”
                   (Dependency Inversion)
                      (La “D” de SOLID)

         Apoyarse en frameworks de inyección de
           dependencias, por ejemplo, Spring
                                                            18
Gracias




   ¡Gracias!


               19

Más contenido relacionado

PDF
Clase 05b pruebas introduccion
PDF
Tema 9 pruebas unitarias por gio
PDF
Ejercicios de evaluación de fundametnos de programacion en JAva
PPTX
Lenguaje de programacion java, conceptos
PDF
Caja negra
PDF
ejemplos de pruebas unitarias y de integracion
PDF
Jyoc java-cap23 j unit
Clase 05b pruebas introduccion
Tema 9 pruebas unitarias por gio
Ejercicios de evaluación de fundametnos de programacion en JAva
Lenguaje de programacion java, conceptos
Caja negra
ejemplos de pruebas unitarias y de integracion
Jyoc java-cap23 j unit

La actualidad más candente (19)

PDF
APO1 - Presentacion nivel 1
PDF
Testing intro-a
PDF
Presentacion ip algoritmia_2012_ii
PPTX
Lenguaje c tarea 3
PPT
Junit y Jmock
PPTX
Modulo de programación 10
PPT
Algoritmos
PDF
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)
PDF
71456126 enunciado-practica1-afd
PPTX
PPTX
Tipos de datos_para_c_(2)
PPT
4. Instrucciones Y Excepciones
PDF
Programación del robot mitsubishi con el software cosirop
PPTX
Pares algoritmos
PPTX
Pruebas de caja blanca y negra
PDF
Prueba
DOCX
Progra
PDF
2) introduccion al lenguaje java
APO1 - Presentacion nivel 1
Testing intro-a
Presentacion ip algoritmia_2012_ii
Lenguaje c tarea 3
Junit y Jmock
Modulo de programación 10
Algoritmos
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)
71456126 enunciado-practica1-afd
Tipos de datos_para_c_(2)
4. Instrucciones Y Excepciones
Programación del robot mitsubishi con el software cosirop
Pares algoritmos
Pruebas de caja blanca y negra
Prueba
Progra
2) introduccion al lenguaje java
Publicidad

Destacado (20)

PDF
Estrategias y técnicas de pruebas de software
PDF
Clase 09a frameworks_ejemplo
PDF
Clase 05a calidad verificacion validacion
PDF
Hg mini manual
PDF
Clase 03 XP
PDF
Clase 05d cobertura de codigo
PDF
Clase 10 mvc
PDF
Clase 01 agilidad
PDF
Clase 01 presentacion
PDF
Clase 09a frameworks
PDF
Clase 08c ejemplo_maquina_virtual
PDF
Clase 12a uml_clases
PDF
Clase 08b ejemplo_capas_cleda
PDF
Clase 07b patrones_diseno_ejemplo
PDF
Clase 11 uml_casos_de_uso
PDF
Clase 07a patrones_diseno
PDF
Clase 04a requerimientos introduccion
PDF
Clase 06 diseno_arquitectura
PDF
Pruebas unitarias
PDF
Clase 08a estilos_arquitectonicos
Estrategias y técnicas de pruebas de software
Clase 09a frameworks_ejemplo
Clase 05a calidad verificacion validacion
Hg mini manual
Clase 03 XP
Clase 05d cobertura de codigo
Clase 10 mvc
Clase 01 agilidad
Clase 01 presentacion
Clase 09a frameworks
Clase 08c ejemplo_maquina_virtual
Clase 12a uml_clases
Clase 08b ejemplo_capas_cleda
Clase 07b patrones_diseno_ejemplo
Clase 11 uml_casos_de_uso
Clase 07a patrones_diseno
Clase 04a requerimientos introduccion
Clase 06 diseno_arquitectura
Pruebas unitarias
Clase 08a estilos_arquitectonicos
Publicidad

Más de Demián Gutierrez (9)

PDF
Clase 04 diseno_ui
PDF
Estructuras de Datos Espaciales (Topico Especial)
PDF
Clase 14b uml_actividades
PDF
Clase 14a uml_estados
PDF
Clase 13 uml_paquetes
PDF
Clase 12b uml_clases_ejemplos
PDF
Clase 09c seleccion
PDF
Clase 04b requerimientos documentacion
PDF
Clase 02 Scrum
Clase 04 diseno_ui
Estructuras de Datos Espaciales (Topico Especial)
Clase 14b uml_actividades
Clase 14a uml_estados
Clase 13 uml_paquetes
Clase 12b uml_clases_ejemplos
Clase 09c seleccion
Clase 04b requerimientos documentacion
Clase 02 Scrum

Último (20)

PPT
Protocolos de seguridad y mecanismos encriptación
PDF
TRABAJO DE TECNOLOGIA.pdf...........................
DOCX
Trabajo informatica joel torres 10-.....................
PPTX
Sistema de Gestión Integral TCA Ingenieros.pptx
PPTX
Presentación final ingenieria de metodos
PPTX
Curso de generación de energía mediante sistemas solares
PDF
capacitación de aire acondicionado Bgh r 410
PPTX
Historia Inteligencia Artificial Ana Romero.pptx
PDF
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
PPTX
El uso de las TIC en la vida cotidiana..
PPTX
Reconocimiento-Automatico-de-Placas-Vehiculares-con-IA.pptx
PDF
Documental Beyond the Code (Dossier Presentación - 2.0)
PPTX
Mecanismos-de-Propagacion de ondas electromagneticas
PPTX
Diapositivas Borrador Rocha Jauregui David Paolo (3).pptx
PDF
Estrategia de Apoyo de Daylin Castaño (5).pdf
PDF
Distribucion de frecuencia exel (1).pdf
PDF
Final Tecno .pdfjdhdjsjdhsjshshhshshshhshhhhhhh
PDF
informe_fichas1y2_corregido.docx (2) (1).pdf
PPTX
Formato de texto, párrafo, documentos, columnas periodísticas, referencias.
PPTX
la-historia-de-la-medicina Edna Silva.pptx
Protocolos de seguridad y mecanismos encriptación
TRABAJO DE TECNOLOGIA.pdf...........................
Trabajo informatica joel torres 10-.....................
Sistema de Gestión Integral TCA Ingenieros.pptx
Presentación final ingenieria de metodos
Curso de generación de energía mediante sistemas solares
capacitación de aire acondicionado Bgh r 410
Historia Inteligencia Artificial Ana Romero.pptx
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
El uso de las TIC en la vida cotidiana..
Reconocimiento-Automatico-de-Placas-Vehiculares-con-IA.pptx
Documental Beyond the Code (Dossier Presentación - 2.0)
Mecanismos-de-Propagacion de ondas electromagneticas
Diapositivas Borrador Rocha Jauregui David Paolo (3).pptx
Estrategia de Apoyo de Daylin Castaño (5).pdf
Distribucion de frecuencia exel (1).pdf
Final Tecno .pdfjdhdjsjdhsjshshhshshshhshhhhhhh
informe_fichas1y2_corregido.docx (2) (1).pdf
Formato de texto, párrafo, documentos, columnas periodísticas, referencias.
la-historia-de-la-medicina Edna Silva.pptx

Clase 05c niveles de pruebas

  • 1. Pruebas de Software Niveles de Pruebas Universidad de los Andes Demián Gutierrez Febrero 2013 1
  • 2. ¿Cómo Probar? Sumar 2 Números int sumarAyB(int a, int b) { return a + b; } ¿cómo probamos algo como esto? ¿por qué es tan difícil hacer pruebas? 2
  • 3. ¿Cómo Probar? Otra Aplicación Interfaz de Usuario Envío de Correo ¿cómo probamos algo como esto? 3
  • 4. Niveles de Pruebas / Pruebas Según su Alcance De Sistema ¿fin a fin? Más Numerosas Grano Más Fino Más Rápidas PRUEBAS De Integración Según su Alcance Unitarias 4
  • 5. Niveles de Pruebas / Pruebas Unitarias ¿cómo probamos algo como esto? entradas salidas ... Interfaz de Usuario ... 5
  • 6. Niveles de Pruebas / Pruebas de Integración ¿cómo probamos algo como esto? entradas salidas ... Interfaz de Usuario ... 6
  • 7. Niveles de Pruebas / Pruebas De Sistema / Subsistema ¿cómo probamos algo como esto? ... Interfaz de Usuario salidas entradas ... 7
  • 8. bien, pero ¿cuál es el problema? 8
  • 9. Niveles de Pruebas / Pruebas De Sistema / Subsistema esto es fácil de probar ... Interfaz de Usuario salidas entradas ... ponga a correr el sistema y comience a hacer clicks (se puede automatizar) 9
  • 10. Niveles de Pruebas / Pruebas Según su Alcance en estos dos casos tenemos problemas entradas salidas entradas salidas ¿qué tipo de problemas? 10
  • 11. Niveles de Pruebas / Pruebas Según su Alcance entradas salidas los componentes que queremos probar tienen dependencias 11
  • 12. Niveles de Pruebas / Pruebas Según su Alcance que a su vez tienen dependencias entradas salidas lo que hace difícil probarlos por separado 12
  • 13. ¿cómo se resuelve? B entradas A salidas C 13
  • 14. B B “C (verdadero) (FALSO) om Ca po mb s (MOCK) te ne iar os en nt los er on es p ad p C rd om C Fa or Ve r C ls os a in (FALSO) ” im (verdadero) El (MOCK) B B (FALSO) (verdadero) (MOCK) entradas A salidas entradas A salidas C C (FALSO) (verdadero) (MOCK) 14
  • 15. B bajo prueba (verdadero) (en modo prueba) entradas A salidas B C (FALSO) en producción (MOCK) (en funcionamiento) (verdadero) entradas A salidas C (FALSO) (MOCK) Conductor de la Prueba 15
  • 16. Los Mocks y Stubs se pueden implementar sin la ayuda de ningún framework, pero usualmente es aconsejable apoyarse en alguna librería Dos muy conocidas en el mundo Java JMock http://jmock.org/ Mockito http://code.google.com/p/mockito/ 16
  • 17. ¿cómo mejorar la “testeabilidad”? ¿cómo escribir software “testeable”? 17
  • 18. ¿Cómo escribir código que sea “testeable”? ¡Cuatro consejos clave! Establecer “contratos” entre los distintos componentes por medio de interfaces Evitar usar el operador new para crear instancias concretas de un tipo dado (preferir interfaces) ¿qué? ¿cómo? Usar el principio de “inversión de dependencias” (Dependency Inversion) (La “D” de SOLID) Apoyarse en frameworks de inyección de dependencias, por ejemplo, Spring 18
  • 19. Gracias ¡Gracias! 19