Realmente no hay ninguna manera de asegurarse de que sus casos de prueba sean correctos, excepto concentrándose realmente bien al crearlos: comprender el requisito, comprender el código y asegurarse de que estén de acuerdo. El objetivo de tener un conjunto de pruebas es que solo tiene que hacer esto una vez, y a partir de ese momento puede volver a ejecutar las pruebas y verificar que pasen, mientras que sin un conjunto de pruebas tendría que concentrarse realmente todo el tiempo , es decir, siempre que haga algo a su base de código. Pero el problema fundamental de tener que asegurarse de que estaba haciendo lo correcto en primer lugar sigue siendo que las computadoras simplemente no son lo suficientemente inteligentes como para liberarnos de esa tarea.
Por lo tanto, (1) si su conjunto de pruebas está incompleto, no hay una manera simple de ver eso. El análisis de cobertura de código puede probar que algunas líneas de código nunca se ejecutan, es decir, que el conjunto es deficiente de alguna manera, pero no cuán grave es esa deficiencia, y nunca puede probar que sea suficiente. Incluso con una cobertura de código del 100%, no tiene garantía de que todos los estados relevantesdel sistema se ejercen, y la cobertura estatal completa es imposible para cualquier sistema realista debido al número combinatorio de estados que podrían existir. Una buena técnica para asegurarse de que su caso de prueba sea al menos correcto para verificar lo que desea verificar es escribir la prueba, verificar que realmente falla, escribir / cambiar el código y luego verificar que ahora pasa. De ahí el entusiasmo por el desarrollo basado en pruebas: le permite estar bastante seguro de que una prueba individual hace lo correcto, y si crea toda su base de código de esa manera, puede obtener un nivel similar de confianza incluso en un sistema grande.
(2) Un conjunto de pruebas normalmente se vuelve insuficiente cada vez que cambian los requisitos; no tiene que adivinar. Si el cliente desea que se cambie un comportamiento particular, y sus pruebas tendrían éxito tanto antes como después del cambio, entonces claramente no estaban ejerciendo esa relación particular de entrada / salida.
En cuanto a los sistemas heredados que no tienen cobertura de prueba, o donde no sabes cuál es la cobertura, no hay prueba formal, pero (asesoramiento de los padres: ¡sigue la opinión personal!) Hablando por experiencia, es abrumadoramente probable que las pruebas No son adecuados. Cuando las pruebas se ven como una actividad posterior al hecho, opcional, que mejora la calidad pero no es realmente necesaria, tiende a ser incompleta y no sistemática porque el incentivo para asegurarse de que las pruebas sigan el código base simplemente no es ahí