2. Test-Driven Development(TDD)
• Una metodología en la que primero se hace un test y luego el
código necesario para que el test pase.
• Para escribir las pruebas generalmente se utilizan las pruebas
unitarias.
• En primer lugar se escribe una prueba y se verifica que las
pruebas fallen, luego se implementa el código que haga que
la prueba pase satisfactoriamente y seguidamente se
refactoriza el código escrito.
• La idea es que los requisitos sean traducidos a pruebas, de
este modo, cuando las pruebas pasen se garantizará que los
requisitos se hayan implementado correctamente.
3. TDD = Test-First Development + Refactoring
(Re)Escribir un
test
TDD involucra otras dos
prácticas:
[Pasa] Verificar si el
• Test-First Development(TFD) test falla
y [Falla]
• Refactoring.
Realizar los
cambios
[Pasa,
continúa
[Falla] Ejecutar los desarrollo]
tests
[Pasa, finaliza desarrollo]
4. El lema del TDD “Rojo, Verde, Refactor"
Crear una prueba y hacer que falle
Escribir el mínimo código para hacer pasar la
prueba.
Cambiar el código para eliminar la duplicación y
para mejorar el diseño al tiempo que se garantice
que todas las pruebas anteriores pasen el test.
5. Características
• Una ventaja de esta forma de programación es el evitar escribir
código innecesario ("You Ain't Gonna Need It" (YAGNI)).
• Se intenta escribir el mínimo código posible, y si el código pasa una
prueba aunque sepamos que es incorrecto nos da una idea de que
tenemos que modificar nuestra lista de requerimientos agregando
uno nuevo.
• La generación de pruebas para cada funcionalidad hace que el
programador confíe en el código escrito.
• Otra característica del TDD es que requiere que el programador
primero haga fallar los casos de prueba. La idea es asegurarse de
que los casos de prueba realmente funcionen y puedan recoger un
error.
6. Ventajas
• Cuando se utiliza el TDD en un proyecto virgen se encuentra que en raras
ocasiones se tiene la necesidad de utilizar el depurador o debugger.
• El desarrollo con TDD puede proporcionar un gran valor añadido en la
creación de software, produciendo aplicaciones de más calidad y en menos
tiempo.
• El poder del TDD radica en la capacidad de avanzar en pequeños pasos
cuando se necesita.
• Inicialmente no se consideran los casos excepcionales y el manejo de
errores. Estos, se implementan después de que se haya alcanzado la
funcionalidad principal.
• Otra ventaja es que, cuando es utilizada correctamente, se asegura de que
todo el código escrito está cubierto por una prueba.
7. Limitaciones
Resulta complejo en los siguientes dominios:
– Interfaces Gráfica de usuario (GUIs), aunque hay
soluciones parciales propuestas.
– Objetos distribuidos, aunque los objetos simulados
(MockObjects) pueden ayudar.
– Bases de datos. Hacer pruebas de código que trabaja
con base de datos es complejo porque requiere poner en
la base de datos unos datos conocidos antes de hacer las
pruebas y verificar que el contenido de la base de datos
es el esperado después de la prueba.
8. Conclusión
Test-Driven Development(TDD) es una técnica
avanzada que utiliza las pruebas unitarias para
impulsar el diseño de software.
El propósito del Test-Driven Development(TDD) es
lograr un código limpio que funcione.