Estoy releyendo Refactoring por Martin Fowler. En el Capítulo 4, Pruebas de construcción, me encontré con el siguiente pasaje.
De hecho, uno de los momentos más útiles para escribir pruebas es antes de comenzar a programar. Cuando necesite agregar una función, comience escribiendo la prueba. Esto no es tan atrasado como parece. Al escribir la prueba, se pregunta qué debe hacerse para agregar la función. Escribir la prueba también se concentra en la interfaz en lugar de la implementación (siempre es algo bueno). También significa que tiene un punto claro en el que ha terminado de codificar, cuando la prueba funciona.
Aunque ahora soy un defensor del desarrollo basado en pruebas, no recordaba haber sido introducido al concepto cuando leí este libro originalmente hace casi 5 años.
Según Amazon.com, este libro se publicó originalmente el 8 de julio de 1999. ¿Es esta la primera referencia publicada a la programación de prueba primero o hay algo aún más temprano?
Respuestas:
El desarrollo impulsado por pruebas es similar al diseño por contrato, donde tiene condiciones previas, invariantes y condiciones posteriores.
Los métodos formales datan de al menos 1983, y se han utilizado para sistemas críticos de seguridad como el metro de París sin conductor utilizando el método B:
Estas podrían ser algunas de las cosas de las que Kent Beck "ayudó a ser pionero ... el redescubrimiento de la programación de prueba primero".
Más concretamente: al parecer, el Proyecto Mercury de principios de la década de 1960 de la NASA fue el primer proyecto de software que utilizó desarrollo basado en pruebas y otras prácticas ágiles. No pude encontrar ninguna documentación temprana, pero aquí hay un informe de 2003 que cita la comunicación de los miembros del proyecto:
El resto del informe también es interesante, continúa diciendo:
Además de las pruebas automatizadas, el informe de 1968 aboga por la codificación y las pruebas paralelas, si no la prueba primero:
fuente
Jon Bently en Programming Pearls (publicado originalmente en 1986) no menciona específicamente la programación Test-First. Pero en el capítulo "Escribir programas correctos", describe cómo escribir un algoritmo definiendo primero las condiciones previas, invariantes y posteriores, y en el siguiente capítulo describe un marco de prueba automatizado.
No es una prueba, pero definitivamente estaba sentando las bases.
También,
Revista CIO , marzo de 1993, Bug Busters , por Lucie Juneau, página 84 :
fuente
Ese fue Kent Beck , en su libro Extreme Programming , también publicado en 1999 .
fuente