Estoy trabajando en un sistema heredado (con eso quiero decir que fue escrito sin pruebas). Hemos tratado de probar parte del sistema escribiendo pruebas de integración que prueban la funcionalidad desde el exterior.
Esto me da cierta confianza para refactorizar partes del código sin preocuparme de romperlo. Pero el problema es que estas pruebas de integración requieren una implementación (más de 2 minutos) y muchos minutos para ejecutarse. Además, son un dolor de mantenimiento. Cada uno de ellos cubre miles de líneas de código y cuando uno de ellos se rompe puede tomar horas para depurar por qué.
He estado escribiendo muchas pruebas unitarias para estos cambios funcionales que he estado haciendo últimamente, pero antes de comprometerme siempre hago una nueva implementación y ejecuto todas las pruebas de integración, solo para asegurarme de que no me pierda nada. En este punto, sé que mis pruebas unitarias y algunas de las pruebas de integración se superponen a lo que prueban.
¿Cómo sé cuándo mis buenas pruebas unitarias están cubriendo adecuadamente una mala prueba de integración para poder eliminar esa prueba de integración?
fuente
Las pruebas de unidades no son el santo grial de las pruebas, son solo una de las muchas herramientas que deberían usarse para probar una base de código. Por lo tanto, ninguna cantidad de pruebas unitarias debe considerarse segura para reemplazar otras pruebas. Si tiene una mala prueba de integración, debe trabajar para que sea una buena prueba de integración, no reemplazarla por otra cosa, es decir, reemplazar su puerta de entrada con una cerca perimetral y una puerta.
fuente