¿Qué es TDD (Test Driven Development / Desarrollo Dirigido por Test)?
Es una técnica de diseño e implementación de software incluida dentro de la metodología Xtreme Programming.
Un nombre más apropiado hubiera sido Diseño Dirigido por Ejemplos.
¿Cuales son los pilares del TDD?
- La implementación de las funciones justas que el cliente necesita
y no más. - La minimización del número de defectos que llegan al software en
fase de producción. - La producción de software modular, altamente reutilizable y pre-
parado para el cambio.
¿Como lo implementamos?
Se diseña adecuadamente según los requisitos.
Se piensa en ejemplos certeros que eliminen la ambigüedad creada por la prosa en nuestro idioma.
Con TDD se intenta traducir el caso de uso o tarea en X ejemplos, hasta que el número de ejemplos sea suficiente como para describir la tarea sin lugar a malinterpretaciones de ningún tipo.
Se deja que la propia implementación de pequeños ejemplos, en constantes iteraciones, haga emerger la arquitectura que se necesita usar.
Con TDD se produce una arquitectura que emerge de la no-ambigüedad de los tests automatizados, lo cual no exime de las revisiones de código entre compañeros ni de hacer preguntas a los desarrolladores más veteranos del equipo.
¿Por qué usar TDD?
- La calidad del software aumenta.
- Conseguimos código altamente reutilizable.
- El trabajo en equipo se hace más fácil, une a las personas.
- Nos permite confiar en nuestros compañeros aunque tengan menos experiencia.
- Multiplica la comunicación entre los miembros del equipo.
- Las personas encargadas de la garantía de calidad adquieren un
rol más inteligente e interesante. - Escribir el ejemplo (test) antes que el código nos obliga a escribir
el mínimo de funcionalidad necesaria, evitando sobrediseñar. - Cuando revisamos un proyecto desarrollado mediante TDD, nos
damos cuenta de que los tests son la mejor documentación téc-
nica que podemos consultar a la hora de entender qué misión
cumple cada pieza del puzzle. - Incrementa la productividad.
- Nos hace descubrir y afrontar más casos de uso en tiempo de
diseño. - La jornada se hace mucho más amena.
- Uno se marcha a casa con la reconfortante sensación de que el
trabajo está bien hecho.
¿Para que roles dentro del equipo es útil utilizar TDD?
Para todo el rango de integrantes del equipo es útil:
- Arquitecto: Es una guía que le hace clarificar el dominio de negocio a cada test y que le permite confiar en su equipo aunque tenga menos experiencia.
- Programador Junior: Le cuenta cual es el siguiente paso a implementar. Y así, un paso tras otro, le guía en la implementación de la tarea
que le ha sido asignada.
Fuente: Diseño Ágil con TDD