El desarrollo dirigido por pruebas, o TDD (Test-Driven Development), es una herramienta, una mentalidad y un proceso que ayuda a desarrollar un código robusto, basado en SOLID y escalable. Fomenta un cambio hacia una base de código agnóstica a la implementación.
Es una herramienta que te ayuda a trabajar de forma inteligente, escribiendo sólo el código suficiente para que una prueba pase; un proceso que te permite añadir valor a través de las nuevas características que construyes, asegurándote de que no van a romper el resto de tu código; y una mentalidad que encarna la propiedad de tu código base hasta el final.
La base de TDD es el ciclo Rojo-Verde-Refactorización:
Escribes la prueba, la ejecutas y falla (Rojo)
Se escribe el código suficiente para que pase (Verde)
Se mejora el código (Refactorización)
La idea que subyace es que construyas la funcionalidad rápidamente y sin arriesgar la estabilidad del código base restante, y -una vez que la prueba pase- puedas refactorizar.
Sin embargo, vale la pena mencionar que el propósito de TDD no es aumentar la cobertura de las pruebas - como con todas las cosas ágiles, la calidad gana sobre la cantidad. Tampoco se trata de un conjunto de pruebas único, utilizado en una fase específica previa al desarrollo: más bien, se trata de código de producción.
Aunque, en esencia, "ganamos" nuestro conjunto de pruebas unitarias "gratis", las ventajas de TDD se extienden mucho más allá de la escalabilidad del código: empezar cada funcionalidad con una prueba lleva a simplificar las interfaces y el diseño, que es mucho más fácil de usar y accesible por naturaleza, por no mencionar que facilita la implementación y las pruebas de una serie de características de accesibilidad, lo que acerca nuestro producto a un mayor número de usuarios.
¿Quieres saber más? Empieza por los enlaces que aparecen a continuación (Aviso: este contenido puede no estar en español):
Aviso legal: Las declaraciones y opiniones expresadas en este artículo son las del autor/a o autores y no reflejan necesariamente las posiciones de Thoughtworks.