SalmorejoTech 2024 - Spring Boot <3 Testcontainers
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
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
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