La guayaba tiene casos de prueba unitarios generados automáticamente :
La guayaba tiene un número asombroso de pruebas unitarias: a partir de julio de 2012, el paquete de pruebas de guayaba incluye más de 286,000 casos de prueba individuales. La mayoría de estos se generan automáticamente , no están escritos a mano, pero la cobertura de prueba de Guava es extremadamente exhaustiva, especialmente para com.google.common.collect.
¿Cómo se generaron? ¿Qué técnicas y tecnologías se utilizaron para diseñarlas y generarlas?
java
unit-testing
test-automation
dzieciou
fuente
fuente
Respuestas:
Una gran parte de esta masa de pruebas es para las implementaciones de la colección Guava. Han escrito pruebas genéricas que prueban exhaustivamente las interfaces de recopilación, y esto genera un conjunto por implementación. Véase, por ejemplo, clases llamadas
CollectionAddAllTester
,ListIndexOfTester
.Todo esto está respaldado por una biblioteca llamada testlib, que se envía como parte de Guava. Esto es bastante genérico. Admite escribir pruebas genéricas para cualquier interfaz (no solo colecciones). Puede especificar
Feature
s de posibles implementaciones y probarlas (por ejemplo, si su conjunto no se puede modificar, espera un resultado diferenteset.add()
), y cuando ejecuta las pruebas, especifica qué características admite su implementación.Se basa en JUnit 3, no en 4. Normalmente, tiene una clase que se extiende
TestCase
llena de métodos nombradostestSomething()
, y JUnit los ejecuta reflexivamente. La biblioteca testlib se conecta a la ejecución de estas pruebas para que el ciclo de vida se vea así:TestCase
instanciaTestSubjectGenerator
: esta es la interfaz testlib que extiende donde realmente crea el sujeto de pruebagetSubjectGenerator()
da acceso al sujeto de pruebaEl bit clave es el paso de inicialización adicional que les permite inyectar un sujeto de prueba específico en el caso de prueba genérico.
Yo escribí un post sobre cómo escribir TestLib suites de generación de sus propias interfaces.
(También publicado en la misma pregunta en el sitio sqa ).
fuente
Hay generadores de prueba unitaria. Por ejemplo, en el mundo .NET, algo como Microsoft Pex podría hacer esto.
Por ejemplo, Microsoft Pex intenta, basándose en el análisis de código, todos los valores posibles como argumentos para un método. Se espera que algunos argumentos permitan que el método arroje una excepción. Tales cosas pueden crear automáticamente pruebas para. Los valores estáticos como una cadena vacía que se devuelve en ciertos casos también se pueden probar automáticamente.
fuente