Download - Clase 05c niveles de pruebas
![Page 1: Clase 05c niveles de pruebas](https://reader037.vdocuments.co/reader037/viewer/2022100309/558ffd6f1a28abb40d8b469f/html5/thumbnails/1.jpg)
1
Pruebas de SoftwareNiveles de Pruebas
Universidad de los AndesDemián Gutierrez
Febrero 2013
![Page 2: Clase 05c niveles de pruebas](https://reader037.vdocuments.co/reader037/viewer/2022100309/558ffd6f1a28abb40d8b469f/html5/thumbnails/2.jpg)
2
¿Cómo Probar?
¿cómo probamos algo como esto?¿por qué es tan difícil hacer pruebas?
Sumar 2 Números
int sumarAyB(int a, int b) { return a + b;}
![Page 3: Clase 05c niveles de pruebas](https://reader037.vdocuments.co/reader037/viewer/2022100309/558ffd6f1a28abb40d8b469f/html5/thumbnails/3.jpg)
3
¿Cómo Probar?
OtraAplicación
Envío deCorreo
Inte
rfaz
de
Usu
ario
¿cómo probamos algo como esto?
![Page 4: Clase 05c niveles de pruebas](https://reader037.vdocuments.co/reader037/viewer/2022100309/558ffd6f1a28abb40d8b469f/html5/thumbnails/4.jpg)
4
Niveles de Pruebas /Pruebas Según su Alcance
PRUEBASSegún su Alcance
Unitarias
De Integración
De Sistema¿fin a fin? G
rano
Más F
ino
Más N
um
eros as
Más R
á pid
as
![Page 5: Clase 05c niveles de pruebas](https://reader037.vdocuments.co/reader037/viewer/2022100309/558ffd6f1a28abb40d8b469f/html5/thumbnails/5.jpg)
5
Niveles de Pruebas /Pruebas Unitarias
¿cómo probamos algo como esto?
salidasentradas
...
...
Inte
rfaz
de
Usu
ario
![Page 6: Clase 05c niveles de pruebas](https://reader037.vdocuments.co/reader037/viewer/2022100309/558ffd6f1a28abb40d8b469f/html5/thumbnails/6.jpg)
6
Niveles de Pruebas /Pruebas de Integración
¿cómo probamos algo como esto?
...
...
Inte
rfaz
de
Usu
ario
entradas salidas
![Page 7: Clase 05c niveles de pruebas](https://reader037.vdocuments.co/reader037/viewer/2022100309/558ffd6f1a28abb40d8b469f/html5/thumbnails/7.jpg)
7
Niveles de Pruebas /Pruebas De Sistema / Subsistema
¿cómo probamos algo como esto?
...
...
Inte
rfaz
de
Usu
ario
entradassalidas
![Page 8: Clase 05c niveles de pruebas](https://reader037.vdocuments.co/reader037/viewer/2022100309/558ffd6f1a28abb40d8b469f/html5/thumbnails/8.jpg)
8
bien, pero¿cuál es el problema?
![Page 9: Clase 05c niveles de pruebas](https://reader037.vdocuments.co/reader037/viewer/2022100309/558ffd6f1a28abb40d8b469f/html5/thumbnails/9.jpg)
9
Niveles de Pruebas /Pruebas De Sistema / Subsistema
esto es fácil de probar
...
...
Inte
rfaz
de
Usu
ario
entradassalidas
ponga a correr el sistema y comience a hacer clicks(se puede automatizar)
![Page 10: Clase 05c niveles de pruebas](https://reader037.vdocuments.co/reader037/viewer/2022100309/558ffd6f1a28abb40d8b469f/html5/thumbnails/10.jpg)
10
Niveles de Pruebas /Pruebas Según su Alcance
en estos dos casos tenemos problemas
¿qué tipo de problemas?
salidasentradas entradas salidas
![Page 11: Clase 05c niveles de pruebas](https://reader037.vdocuments.co/reader037/viewer/2022100309/558ffd6f1a28abb40d8b469f/html5/thumbnails/11.jpg)
11
Niveles de Pruebas /Pruebas Según su Alcance
los componentes que queremos probartienen dependencias
salidasentradas
![Page 12: Clase 05c niveles de pruebas](https://reader037.vdocuments.co/reader037/viewer/2022100309/558ffd6f1a28abb40d8b469f/html5/thumbnails/12.jpg)
12
Niveles de Pruebas /Pruebas Según su Alcance
que a su vez tienen dependencias
lo que hace difícilprobarlos por separado
salidasentradas
![Page 13: Clase 05c niveles de pruebas](https://reader037.vdocuments.co/reader037/viewer/2022100309/558ffd6f1a28abb40d8b469f/html5/thumbnails/13.jpg)
13
¿cómo se resuelve?
salidasA
C
entradas
B
![Page 14: Clase 05c niveles de pruebas](https://reader037.vdocuments.co/reader037/viewer/2022100309/558ffd6f1a28abb40d8b469f/html5/thumbnails/14.jpg)
14
Elimina
r Com
pone
ntes
Verda
dero
s
salidasA
C(verdadero)
entradas
B(verdadero)
salidasA
C(FALSO)(MOCK)
entradas
B(FALSO)(MOCK)
C(FALSO)(MOCK)
B(FALSO)(MOCK)
C(verdadero)
B(verdadero)
Cambiarlos por
“Componentes Falsos”
![Page 15: Clase 05c niveles de pruebas](https://reader037.vdocuments.co/reader037/viewer/2022100309/558ffd6f1a28abb40d8b469f/html5/thumbnails/15.jpg)
15
salidasA
C(verdadero)
entradas
B(verdadero)
salidasA
C(FALSO)(MOCK)
entradas
B(FALSO)(MOCK)en producción
(en funcionamiento)
Conductor de la Prueba
bajo prueba(en modo prueba)
![Page 16: Clase 05c niveles de pruebas](https://reader037.vdocuments.co/reader037/viewer/2022100309/558ffd6f1a28abb40d8b469f/html5/thumbnails/16.jpg)
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
JMockhttp://jmock.org/
Mockitohttp://code.google.com/p/mockito/
![Page 17: Clase 05c niveles de pruebas](https://reader037.vdocuments.co/reader037/viewer/2022100309/558ffd6f1a28abb40d8b469f/html5/thumbnails/17.jpg)
17
¿cómo mejorar la “testeabilidad”?
¿cómo escribir software “testeable”?
![Page 18: Clase 05c niveles de pruebas](https://reader037.vdocuments.co/reader037/viewer/2022100309/558ffd6f1a28abb40d8b469f/html5/thumbnails/18.jpg)
18
¿Cómo escribir código que sea “testeable”? ¡Cuatro consejos clave!
Establecer “contratos” entre los distintos componentes por medio de interfaces
Usar el principio de “inversión de dependencias” (Dependency Inversion)
(La “D” de SOLID)
Evitar usar el operador new para crear instancias concretas de un tipo dado (preferir interfaces)
¿qué? ¿cómo?
Apoyarse en frameworks de inyección de dependencias, por ejemplo, Spring
![Page 19: Clase 05c niveles de pruebas](https://reader037.vdocuments.co/reader037/viewer/2022100309/558ffd6f1a28abb40d8b469f/html5/thumbnails/19.jpg)
19
Gracias
¡Gracias!