TDD, Test Driven Development, dice que no escribe software hasta que haya escrito primero las pruebas para él. Las pruebas se escriben desde afuera, probando la funcionalidad del software, no desde adentro, probando lo que acaba de escribir. Por lo tanto, tiene el valor, considerable, de que su mente no está contaminada al escribir las pruebas por la memoria del código que acaba de escribir. Porque eso significa que es muy probable que cometas el mismo error en el código y las pruebas. En sentido inverso, si diseñó las pruebas después de una cuidadosa consideración de la especificación, su conocimiento de las pruebas le pedirá que escriba un mejor código, pensando en cosas como casos extremos antes.
El TDD completo significa que primero debe escribir el conjunto de pruebas de la competencia, antes de escribir una palabra de código. Si falla porque no ha creado el código. Luego, escribe apéndices que existen, pero devuelve los errores como no implementados. Por lo tanto, primero prueba su manejo de errores. Luego, etapa por etapa, implementas tu código. Cuando pasan todas las pruebas, ha terminado. Debido a que su conjunto de pruebas se completó, no hay nada más que escribir, y la lista cada vez más corta de fallas en las pruebas le brinda a la administración una visión general cómoda de su progreso, lo que los hace felices.
Es un poco más difícil de implementar en código incrustado que en código de modo de usuario, en parte debido a las dependencias en el hardware. Pero recomiendo hacer todo lo posible. La disciplina de diseñar pruebas antes de implementar el código es muy saludable. Y mi experiencia es que ofrece menos código con errores que cualquier otra metodología que haya encontrado.
- Programación de computadoras: ¿Qué compañía tiene los mejores desarrolladores del mundo?
- ¿Cómo se hacen amigos los ingenieros con los diseñadores de arte?
- ¿Qué conocimientos básicos de código y programación debo tener si quiero obtener un título en CS?
- ¿Es posible hacer que seis figuras trabajen como programador o desarrollador sin haber estudiado informática? ¿Qué pasa en lugares como Google y Microsoft?
- ¿Qué hace que un desarrollador de iOS sea un ingeniero de software senior?