Lo que está describiendo como un flujo de trabajo no es, en mi opinión, el espíritu de TDD.
La sinopsis del libro de Kent Becks en Amazon dice:
En pocas palabras, el desarrollo basado en pruebas está destinado a eliminar el miedo en el desarrollo de aplicaciones.Si bien algo de miedo es saludable (a menudo visto como una conciencia que le dice a los programadores que "tengan cuidado"), el autor cree que los subproductos del miedo incluyen programadores tentativos, gruñones y poco comunicativos que no pueden absorber las críticas constructivas. Cuando los equipos de programación compran TDD, inmediatamente ven resultados positivos. Eliminan el miedo involucrado en sus trabajos y están mejor equipados para enfrentar los desafíos difíciles que enfrentan. TDD elimina los rasgos tentativos, enseña a los programadores a comunicarse y alienta a los miembros del equipo a buscar críticas. Sin embargo, ¡incluso el autor admite que el mal humor debe resolverse individualmente! En resumen, la premisa detrás de TDD es que el código debe ser continuamente probado y refactorizado.
TDD práctico
Pruebas formales automatizadas, especialmente Pruebas unitarias, cada método de cada clase es tan malo como un antipatrón y no prueba nada. Hay un equilibrio para tener. ¿Estás escribiendo pruebas unitarias para cada setXXX/getXXX
método, también son métodos!
Además, las pruebas pueden ayudar a ahorrar tiempo y dinero, pero no olvide que cuestan tiempo y dinero desarrollarlas y que son código, por lo que cuestan tiempo y dinero mantenerlas. Si se atrofian por falta de mantenimiento, se convierten en una responsabilidad más que un beneficio.
Como todo esto, hay un equilibrio que no puede ser definido por nadie más que por ti mismo. Cualquier dogma de cualquier manera es probablemente más incorrecto que correcto.
Una buena métrica es el código que es crítico para la lógica del negocio y está sujeto a modificaciones frecuentes basadas en los requisitos cambiantes. Esas cosas necesitan pruebas formales que estén automatizadas, eso sería un gran retorno de la inversión.
Va a ser muy difícil encontrar muchas tiendas profesionales que funcionen de esta manera. Simplemente no tiene sentido comercial gastar dinero probando cosas que, para todos los fines prácticos, nunca cambiarán después de realizar una simple prueba de humo. Escribir pruebas unitarias automatizadas formales para .getXXX/.setXXX
métodos es un excelente ejemplo de esto, una completa pérdida de tiempo.
Han pasado dos décadas desde que se señaló que las pruebas del programa pueden demostrar de manera convincente la presencia de errores, pero nunca pueden demostrar su ausencia. Después de citar devotamente este comentario bien publicitado, el ingeniero de software vuelve al orden del día y continúa refinando sus estrategias de prueba, al igual que el alquimista de antaño, que continuó refinando sus purificaciones crioscósmicas.
- Edsger W. Djikstra . (Escrito en 1988, ahora está más cerca de 4.5 décadas).
Ver también esta respuesta .