SlideShare uma empresa Scribd logo
1 de 19
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

Mais procurados (19)

APO1 - Presentacion nivel 1
APO1 - Presentacion nivel 1APO1 - Presentacion nivel 1
APO1 - Presentacion nivel 1
 
Testing intro-a
Testing intro-aTesting intro-a
Testing intro-a
 
Presentacion ip algoritmia_2012_ii
Presentacion ip algoritmia_2012_iiPresentacion ip algoritmia_2012_ii
Presentacion ip algoritmia_2012_ii
 
Lenguaje c tarea 3
Lenguaje c tarea 3Lenguaje c tarea 3
Lenguaje c tarea 3
 
Junit y Jmock
Junit y JmockJunit y Jmock
Junit y Jmock
 
Modulo de programación 10
Modulo de programación 10Modulo de programación 10
Modulo de programación 10
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)
OCP, JSE 6 Programmer (1Z0-851) - Guia practica 6 de 7(Colecciones y Genericos)
 
71456126 enunciado-practica1-afd
71456126 enunciado-practica1-afd71456126 enunciado-practica1-afd
71456126 enunciado-practica1-afd
 
java y xml
java y xmljava y xml
java y xml
 
Tipos de datos_para_c_(2)
Tipos de datos_para_c_(2)Tipos de datos_para_c_(2)
Tipos de datos_para_c_(2)
 
4. Instrucciones Y Excepciones
4.  Instrucciones Y Excepciones4.  Instrucciones Y Excepciones
4. Instrucciones Y Excepciones
 
Programación del robot mitsubishi con el software cosirop
Programación del robot mitsubishi con el software cosiropProgramación del robot mitsubishi con el software cosirop
Programación del robot mitsubishi con el software cosirop
 
Pares algoritmos
Pares algoritmosPares algoritmos
Pares algoritmos
 
Pruebas de caja blanca y negra
Pruebas  de caja blanca y negraPruebas  de caja blanca y negra
Pruebas de caja blanca y negra
 
Prueba
PruebaPrueba
Prueba
 
Clase9
Clase9Clase9
Clase9
 
Progra
PrograProgra
Progra
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje java
 

Destaque (20)

Estrategias y técnicas de pruebas de software
Estrategias y técnicas de pruebas de softwareEstrategias y técnicas de pruebas de software
Estrategias y técnicas de pruebas de software
 
Clase 09a frameworks_ejemplo
Clase 09a frameworks_ejemploClase 09a frameworks_ejemplo
Clase 09a frameworks_ejemplo
 
Clase 05a calidad verificacion validacion
Clase 05a calidad verificacion validacionClase 05a calidad verificacion validacion
Clase 05a calidad verificacion validacion
 
Hg mini manual
Hg mini manualHg mini manual
Hg mini manual
 
Clase 03 XP
Clase 03 XPClase 03 XP
Clase 03 XP
 
Clase 05d cobertura de codigo
Clase 05d cobertura de codigoClase 05d cobertura de codigo
Clase 05d cobertura de codigo
 
Clase 10 mvc
Clase 10 mvcClase 10 mvc
Clase 10 mvc
 
Clase 01 agilidad
Clase 01 agilidadClase 01 agilidad
Clase 01 agilidad
 
Clase 01 presentacion
Clase 01 presentacionClase 01 presentacion
Clase 01 presentacion
 
Clase 09a frameworks
Clase 09a frameworksClase 09a frameworks
Clase 09a frameworks
 
Clase 08c ejemplo_maquina_virtual
Clase 08c ejemplo_maquina_virtualClase 08c ejemplo_maquina_virtual
Clase 08c ejemplo_maquina_virtual
 
Clase 12a uml_clases
Clase 12a uml_clasesClase 12a uml_clases
Clase 12a uml_clases
 
Clase 08b ejemplo_capas_cleda
Clase 08b ejemplo_capas_cledaClase 08b ejemplo_capas_cleda
Clase 08b ejemplo_capas_cleda
 
Clase 07b patrones_diseno_ejemplo
Clase 07b patrones_diseno_ejemploClase 07b patrones_diseno_ejemplo
Clase 07b patrones_diseno_ejemplo
 
Clase 11 uml_casos_de_uso
Clase 11 uml_casos_de_usoClase 11 uml_casos_de_uso
Clase 11 uml_casos_de_uso
 
Clase 07a patrones_diseno
Clase 07a patrones_disenoClase 07a patrones_diseno
Clase 07a patrones_diseno
 
Clase 04a requerimientos introduccion
Clase 04a requerimientos introduccionClase 04a requerimientos introduccion
Clase 04a requerimientos introduccion
 
Clase 06 diseno_arquitectura
Clase 06 diseno_arquitecturaClase 06 diseno_arquitectura
Clase 06 diseno_arquitectura
 
Pruebas unitarias
Pruebas unitariasPruebas unitarias
Pruebas unitarias
 
Clase 08a estilos_arquitectonicos
Clase 08a estilos_arquitectonicosClase 08a estilos_arquitectonicos
Clase 08a estilos_arquitectonicos
 

Mais de Demián Gutierrez

Mais de Demián Gutierrez (9)

Clase 04 diseno_ui
Clase 04 diseno_uiClase 04 diseno_ui
Clase 04 diseno_ui
 
Estructuras de Datos Espaciales (Topico Especial)
Estructuras de Datos Espaciales (Topico Especial)Estructuras de Datos Espaciales (Topico Especial)
Estructuras de Datos Espaciales (Topico Especial)
 
Clase 14b uml_actividades
Clase 14b uml_actividadesClase 14b uml_actividades
Clase 14b uml_actividades
 
Clase 14a uml_estados
Clase 14a uml_estadosClase 14a uml_estados
Clase 14a uml_estados
 
Clase 13 uml_paquetes
Clase 13 uml_paquetesClase 13 uml_paquetes
Clase 13 uml_paquetes
 
Clase 12b uml_clases_ejemplos
Clase 12b uml_clases_ejemplosClase 12b uml_clases_ejemplos
Clase 12b uml_clases_ejemplos
 
Clase 09c seleccion
Clase 09c seleccionClase 09c seleccion
Clase 09c seleccion
 
Clase 04b requerimientos documentacion
Clase 04b requerimientos documentacionClase 04b requerimientos documentacion
Clase 04b requerimientos documentacion
 
Clase 02 Scrum
Clase 02 ScrumClase 02 Scrum
Clase 02 Scrum
 

Último

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 

Último (10)

Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 

Niveles de Pruebas de Software y Técnicas para Escribir Código Testeable

  • 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