2009-03-27 14 views
8

Existe una buena herramienta para generar casos de pruebas unitarias dado, por ejemplo, un proyecto .NET o Java, genera casos de pruebas unitarias que cubrirían casi un 100% de cobertura de código. El número de casos de prueba podría ser directamente proporcional a la complejidad ciclomática del código (cuanto mayor sea la anidación de bucles y condiciones, mayor será la complejidad ciclomática), donde cuanto mayor sea la complejidad ciclomática, mayor será el conjunto de casos de prueba generados. No espero que sea completamente funcional (digamos que voy a construir las pruebas unitarias y ejecutarlo después de que se haya generado), pero diría que puede tener un estilo de plantilla en el caso de prueba donde se debe modificar el caso que se adapta a sus necesidades previstas. Pero también debe tener un método de instalación y desmontaje apropiado y es lo suficientemente bueno para detectar si se deben usar objetos simulados para pruebas unitarias en caso de que existan dependencias. Entonces, ¿existe tal herramienta?Generación automática de casos de prueba unitarios para .NET y Java

Respuesta

14

Para .NET, Microsoft tiene Pex, que con suerte se incorporará a .NET 4.0, junto con Code Contracts. Recomiendo ver el video del canal 9.

Me parece que este tipo de cosas son muy buenas para las clases muy controladas por datos - analizadores, etc. No puedo ver que con mucha frecuencia empiezo , pero es una herramienta útil para tener en su arsenal sin embargo.

+0

¡Maldición, 12 segundos en ella! –

+1

¿Qué puedo decir, Marc? O lo tienes o no lo has hecho ...;) –

+0

Al "comenzar" con él: las pruebas de Pex son más como especificaciones ejecutables. Pensar en el input de ejemplo es realmente un trabajo aburrido que se maneja mejor con el software ... conoce todos los casos de esquina que el devloper está tratando de ignorar;) –

5

Para C# (o .NET en general), PEX podría ser esa herramienta. Funciona en el nivel IL e intenta forzar su camino en cada rama. Ha descubierto con éxito una amplia gama de errores (en el BCL, etc.).

5

Aunque parece contrario a la intuición, también podría estar interesado en los marcos de generación de pruebas aleatorias. La investigación ha demostrado que puede ser igual de eficaz en la búsqueda de errores que los enfoques sistemáticos basados ​​en la cobertura, como usted sugiere.

Consulte Randoop ambos para .NET y Java. Funciona al generar una secuencia más o menos aleatoria de llamadas a métodos, y comprueba contratos, bloqueos, etc. Es completamente automático.

También le recomendamos que consulte otras herramientas de prueba aleatorias basadas en QuickCheck, p. para Java, Scala, F #. que son más similares a Pex, es decir, usted proporciona una especificación, o una prueba de unidad parametrizada, y la herramienta verifica una cantidad de argumentos de entrada generados.

He encontrado que esta forma "parametrizada" de escribir pruebas unitarias es en realidad mucho más natural en al menos el 60% de los casos, y encuentra muchos errores más.

+1

La página web del proyecto Randoop se ha movido a http://mernst.github.io/randoop/. – mernst

0

Para Java, puede marcar EvoSuite, que es de código abierto y actualmente está activo (exención de responsabilidad, yo soy uno de sus colaboradores). Consulte también question para obtener una lista de más herramientas.

Cuestiones relacionadas