Pruebas de regresión
Se trata de pruebas de regresión .
Imagine que el próximo desarrollador observa su método y se da cuenta de que está usando números mágicos. Le dijeron que los números mágicos son malvados, por lo que crea dos constantes, una para el número dos y la otra para el número tres: no hay nada de malo en hacer este cambio; no es como si estuviera modificando su implementación ya correcta.
Distraído, invierte dos constantes.
Confirma el código, y todo parece funcionar bien, porque no hay pruebas de regresión ejecutándose después de cada confirmación.
Un día (podrían ser semanas después), algo se rompe en otro lugar. Y por otra parte, me refiero a la ubicación completamente opuesta de la base del código, que parece no tener nada que ver con la polynominal
función. Horas de depuración dolorosa conducen al culpable. Durante este tiempo, la aplicación continúa fallando en la producción, causando muchos problemas a sus clientes.
Mantener las pruebas originales que escribió podría prevenir ese dolor. El desarrollador distraído cometería el código y casi de inmediato vería que rompió algo; dicho código ni siquiera llegará a la producción. Las pruebas unitarias serán adicionalmente muy precisas sobre la ubicación del error . Resolverlo no sería difícil.
Un efecto secundario ...
En realidad, la mayoría de las refactorizaciones se basan en gran medida en las pruebas de regresión. Haz un pequeño cambio. Prueba. Si pasa, todo está bien.
El efecto secundario es que si no tiene pruebas, prácticamente cualquier refactorización se convierte en un gran riesgo de romper el código. Dado que hay muchos casos, ya es difícil explicarle a la gerencia que se debe refactorizar , sería aún más difícil después de que sus intentos de refactorización anteriores introdujeran múltiples errores.
Al tener un conjunto completo de pruebas, está alentando la refactorización y, por lo tanto, un código mejor y más limpio. Sin riesgos, se vuelve muy tentador refactorizar más, de forma regular.
Cambios en los requisitos.
Otro aspecto esencial es que los requisitos cambian. Es posible que se le solicite que maneje números complejos y, de repente, debe buscar en su registro de control de versiones para encontrar las pruebas anteriores, restaurarlas y comenzar a agregar nuevas pruebas.
¿Por qué toda esta molestia? ¿Por qué eliminar las pruebas para agregarlas más tarde? Podrías haberlos mantenido en primer lugar.