¿Por qué?
|
|
|
¿Qué?
|
|
¿Para qué?
-
Prueba lenta: porque el DOC realiza cálculos extensivos o accesos a memoria secundaria o a base de datos, …
-
Prueba errática: porque el DOC suministra al SUT valores de entrada “descontrolados” (aleatório, hora, señal de sensor, …)
-
Prueba interventora: porque el DOC es una interfaz de usuario, como en MVC, cuando el SUT es el controlador.
-
Prueba con Sermón de Preparación: porque la construcción del DOC es un esfuerzo superior a la configuración de un doble
-
Prueba con Dependencia Oculta: porque el DOC es parte de otro componente, por ejemplo, librería de acceso a otro servidor vía tcp/ip, o no debe cambiar su estado por ejemplo, un servicio de correo y no se desea desplegar un servicio de correo alternativo
-
DOC no está disponible: porque no está finalizada por parte de un compañero, o es posterior en desarrollo es top/down, TDD outside-in, … o porque están con una versión anterior
-
… la gran desventaja es que son frágiles al depender de la implantación
-
¿Cómo?
Dobles en el Ciclo de Vida
|
|
Test Last Development
|
|
|
|
|
|
|
|
|
|
|
|
Test First Development
|
|
|
|
|
|
|
|
|
|
|
|
Test Driven Development: Inside-out
|
|
|
|
|
|
|
|
|
|
|
|
Test Driven Development: Outside-in
|
|
|
|
|
|
|
|
|
|
|
|
Comparativas de Pruebas con y sin Dobles
Sin dobles | Con dobles |
---|---|
|
|
|
|
Un cambio de implantación, rediseño por refactoring, optimización, …, |
|
|
|
Un cambio de requisitos de funcionalidad |
|
|
|
Tipos de Dobles
-
Todos los dobles:
-
Debe implementar el mismo interfaz que el DOC.
-
En la clase de prueba se debe definir qué métodos del objeto DOC real queremos que simule el doble, indicando para cada uno de ellos cuál es la respuesta esperada cuando reciba unos parámetros predeterminados. O sea, la respuestas del doble debe ser la misma que esperamos que devuelva el objeto real con la misma entrada cuando esté disponible.
-
Al ejecutar la prueba, cuando el SUT que queremos probar llame a un objeto real que no esté disponible por el criterio que sea y que hemos simulado con el doble, esa llamada será “interceptada” por el doble y devolverá la respuesta que hayamos definido.
-
Resguardo, Stub
|
|
Muñeco, Mock
|
|
Espía, Spy
-
Son stubs que además verifican la interacción entre el SUT y el DOC o son mocks que además verifican los datos de salida a través del DOC.
-
Son la mezcla de stubs y mocks, de Caja Negra y Caja Blanca.
-
Fantasma, Dummy
-
Son dobles necesarios para rellenar en una lista de argumentos pero el ejercicio del SUT no va a colaborar con el DOC, por tanto no tiene comportamiento
Falsete, Fake
-
Son dobles que tienen una implementación real aparentando un funcionamiento correcto pero, por lo general, toman algún atajo que los hace no aptos para la producción.
-
Un falsete, fake, sería un emulador, imita el comporatmiento exterior pero no el interior, otra estructura interna! mientras que un muñeco, mock, sería un simulador, imita el comportamiento exterior y el interior, la misma estructura interna!
-
por ejemplo: una base de datos en la memoria interna, fake o mock?!?
-
Sintesis
Bibliografía
Obra, Autor y Edición | Portada | Obra, Autor y Edición | Portada |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ponente
|
|
|