¿Qué es Test-Driven Development (TDD)?

5min

TDD o Test-Driven Development (es decir, desarrollo dirigido por tests) es una metodología de programación en la que se escriben primero las pruebas, normalmente unitarias, y después se escribe el código fuente de tal manera que supere dichos tests. Una vez llegados a este punto, se refactorizará el código escrito. Al hacerlo así, se consigue mejorar la calidad del software final y, además, se reducen los costes de mantenimiento.

Por medio de esta técnica se puede conseguir un código más robusto y, entre otras cosas, agilizar notablemente el desarrollo. Los desarrolladores pueden escribir las pruebas y hacerlas fáciles de establecer si se siguen tres mecánicas importantes, como son la documentación continua, el rediseño periódico del código, y establecer una red de seguridad para que los cambios se realicen con confianza en el resultado.

Índice

Ventajas del Test-Driven Development

¿Cómo funciona TDD? Podríamos decir que el ciclo de desarrollo empieza escribiendo una prueba que falle, luego se desarrolla el código para hacer que se supere esa prueba y, por último, se refactoriza. Se suele llamar a este ciclo rojo, verde, refactorizar (red, green, refactor).

La fase roja es el punto de partida del ciclo, donde se definen las expectativas para el fragmento de código que se está probando, y se deja que la prueba falle. ¿Por qué dejar que falle la prueba? De esta manera sabremos que la prueba es una buena prueba. Durante la fase verde se implementa la lógica necesaria para pasar la prueba. Por último, durante la fase de refactorización hay que considerar cómo se podría optimizar el código sin añadir ninguna funcionalidad adicional. Veamos las principales ventajas del enfoque TDD:

El diseño software se vuelve modular

Con el enfoque TDD, los desarrolladores se centran en una única característica cada vez. Así, no se pasa a la siguiente fase hasta que se supera la prueba unitaria asociada. Por tanto, la calidad del código mejora de forma natural, algo que facilita el descubrimiento de errores y la reutilización del código.

Como el código se construye de manera modular se está mejorando, a la vez, la arquitectura de la solución, lo que se corresponde de manera natural con los principios de diseño de software modular y enseña a los desarrolladores a mantener el código limpio.

El código es más fácil de mantener

Un código ordenado es más fácil de abordar cuando se plantean modificaciones. Con un código más limpio, legible y manejable, la tarea de centrarse en trozos de código más pequeños y digeribles requiere menos esfuerzo por parte de los desarrolladores. Esto, además, facilita el cumplimiento de los requisitos de las pruebas planificadas. Otra ventaja derivada de esta facilidad a la hora de mantener el código es que las tareas se pueden transferir entre miembros del mismo equipo sin que eso suponga una barrera.

La cobertura de las pruebas es muy alta

La cobertura de pruebas indica el porcentaje de código que se ve sometido a pruebas. Cuanto más alta sea esta cobertura, mayor confianza podemos tener en que el código sea funcional en un amplio espectro de casos y situaciones. TDD permite esto de forma orgánica, ya que, siguiendo esta metodología, no debería existir ningún fragmento de código escrito que no tenga pruebas asociadas.

Mejora de la calidad del código

El foco de desarrollo se pone en la escritura de código para pasar las pruebas descritas. Esto significa que no vas a necesitar piezas de código extra ni otras complicaciones para pasar dichas pruebas, lo que da como resultado un código de mayor calidad, limpio, organizado y optimizado.

Evita errores al principio del proceso de desarrollo

Con este enfoque, cada fragmento del código se diseña para pasar las pruebas y, por tanto, se valida en ese contexto. A medida que se añaden funcionalidades al código, este va construyéndose libre de errores, por lo que ganamos en seguridad desde el inicio del proceso. La alternativa de desarrollar grandes fragmentos y probarlos después es lo que nos lleva a cometer errores difíciles de encontrar y solventar.

Facilidad para añadir funciones al código

Es frecuente tener la necesidad de añadir nuevas funcionalidades al código que estamos desarrollando. Gracias a la amplia cobertura de pruebas que lleva esta metodología, cualquier añadido que queramos desarrollar lo haremos, en primer lugar, siguiendo la metodología TDD; y, en segundo lugar, añadiremos la funcionalidad a un código ya muy probado y validado, seguro y sin errores. De este modo, se genera un código altamente confiable.

Fernando Fuentes

Productos relacionados: