Estoy mirando una pequeña base de código C # (.NET 4.0, algo de Silverlight) (~ 70kLOC incluyendo generado) que tiene una cobertura de prueba muy baja. El código en sí funciona porque ha pasado las pruebas de aceptación del usuario, pero es frágil y en algunas áreas no está muy bien factorizado. Me gustaría agregar una cobertura de prueba de unidad sólida alrededor del código heredado utilizando los sospechosos habituales (NMock, NUnit, StatLight para los bits de Silverlight).
Mi enfoque normal es comenzar a trabajar en el proyecto, las pruebas unitarias y la refactorización, hasta que esté satisfecho con el estado del código. Lo he hecho muchas veces en el pasado y funcionó bien.
Sin embargo, esta vez estoy pensando en usar un generador de prueba (en particular, Pex ) para crear el marco de prueba, y luego desarrollarlo manualmente.
Mi pregunta es: ¿ha utilizado generadores de pruebas unitarias en el pasado al comenzar a trabajar en una base de código heredada y, de ser así, los recomendaría?
Mi temor es que las pruebas generadas pierdan los matices semánticos de la base de código, lo que lleva a la temida situación de tener pruebas por la métrica de cobertura, en lugar de pruebas que expresan claramente el comportamiento previsto en el código.
fuente
Respuestas:
Sugeriría mirar las cosas un poco diferente. Agregar un nuevo código de prueba unitaria a una aplicación existente sin incidentes podría no brindarle los mejores resultados. Si está haciendo esto para familiarizarse con la base del código o si realmente tiene tiempo para matar y desea probar los generadores de prueba, ignore mis comentarios.
Para ser pragmático, debe revisar todas las listas de errores. Luego, cree pruebas unitarias para cada uno de los errores, lo que da como resultado cómo debería comportarse. Idealmente, solo agregaría un nuevo código para cada error a medida que lo alcanza.
Tiempos para agregar el código de prueba de la unidad:
Es difícil cuantificar el valor de agregar pruebas unitarias después del hecho.
Normalmente no me permito escribir respuestas que vayan en contra de lo que quiere el autor de la pregunta, pero creo que esta es una buena lección para transmitir.
fuente