Un test double es un software utilizado en la automatización de pruebas de software que satisface una dependencia de modo que la prueba no necesita depender del código de producción. Un test double proporciona funcionalidad a través de una interfaz que el software bajo prueba no puede distinguir del código de producción.
Un programador generalmente utiliza una prueba doble para aislar el comportamiento del código consumidor del resto de la base de código.
Una prueba doble suele ser una versión simplificada del código de producción y puede incluir capacidades específicas para las pruebas.
Los dobles de prueba se utilizan para construir arneses de prueba .
Se puede utilizar una prueba doble para simplificar y acelerar la ejecución de la prueba.
Por ejemplo, un programa que utiliza un servidor de base de datos es relativamente lento y consume una cantidad significativa de recursos del sistema , lo que dificulta la productividad de las pruebas. Además, un caso de prueba puede requerir valores fuera de los almacenados en la base de datos. Un doble de prueba puede proporcionar un valor estático en lugar de acceder a una base de datos.
Se puede usar una prueba doble para probar parte del sistema que está lista para ser probada incluso si sus dependencias no lo están.
Por ejemplo, en un sistema con módulos Login, Home y User, supongamos que Login está listo para la prueba, pero los otros dos no. Las funciones consumidas de Home y User se pueden implementar como dobles de prueba para que Login se pueda probar.
Los dobles de prueba se categorizan de muchas maneras.
Aunque no es universalmente aceptado, Gerard Meszaros [1] clasifica los dobles de prueba como:
Si bien no existe un estándar abierto para las categorías, Martin Fowler utilizó estos términos en su artículo, Mocks Aren't Stubs [2], haciendo referencia al libro de Meszaros. Microsoft también utilizó los mismos términos y definiciones en un artículo titulado Exploring The Continuum Of Test Doubles [3] .
Para los sistemas de arquitectura orientada a servicios (SOA) y los microservicios , los evaluadores utilizan dobles de prueba que se comunican con el sistema bajo prueba a través de un protocolo de red. [4] [5] Estos dobles de prueba reciben diferentes nombres por parte de los proveedores de herramientas. Un término comúnmente utilizado es virtualización de servicios . Otros nombres utilizados incluyen simulación de API , simulación de API, [6] stub HTTP, simulación HTTP, doble de prueba por cable [7] . [8]
Una falsificación verificada es un objeto falso cuyo comportamiento se ha verificado para que coincida con el del objeto real mediante un conjunto de pruebas que se ejecutan tanto contra la falsificación verificada como contra la implementación real. [9]
Gerard Meszaros:
Martín Fowler:
Código abierto: