c# - unitarias - Generación automática de casos de prueba unitaria para.NET y Java
testing in c# visual studio (5)
Aunque parezca 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.
Echa un vistazo a Randoop tanto para .NET como para 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 es posible que desee comprobar algunas otras herramientas de prueba aleatorias basadas en QuickCheck , por ejemplo, para Java, Scala, F #. que son más similares a Pex, es decir, usted da una especificación, o prueba de unidad parametrizada, y la herramienta lo verifica para una cantidad de argumentos de entrada generados.
Descubrí 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.
¿Existe una buena herramienta para generar casos de pruebas unitarias, por ejemplo, un proyecto .NET o Java, genera casos de pruebas unitarias que cubrirían una cobertura de casi el 100% del 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?
Para .NET, Microsoft tiene Pex que, con suerte, se convertirá en la corriente principal de .NET 4.0, junto con los Contratos de Código . Recomiendo ver el video del canal 9.
Me parece que este tipo de cosas son muy buenas para las clases basadas en datos: analizadores, etc. No veo que a menudo empiece con eso, pero una herramienta útil para tener en tu arsenal, no obstante.
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.).
Para Java, pruebe JUnit-Tools . Tiene su propio plugin de eclipse junto con una buena documentación.