jueves, mayo 31, 2007

TDD (El test antes del código) (1)

¿Qué es TDD?

TDD son las siglas de Test Driven Development (desarrollo guiado por pruebas), que no es más que una manera de tirar código basandonos en los resultados que debe dar.
Es una de las técnicas del eXtremme Programming, y tiene bastantes ventajas e inconvenientes.
Las ventajas:
El código es más fiable al estar más sometido a tests que el código normal.
Se desarrolla el código justo para que funcione. No se tiran lineas que no aporten valor.
Ahorramos tiempo en fases posteriores a la de build.

Los inconvenientes
La lista de tests con la que contamos debe ser lo más completa posible. Eso requiere conocer muy bien las reglas de negocio.
Hay que tener una cierta experiencia a la hora de desarrollar, que permita completar las (casi siempre) incompletas listas de tests.
Alarga la fase de build (acorta las posteriores), lo que no siempre se entiende en los proyectos.

El proceso para desarrollar con TDD sería:
(1) Analizar las reglas de negocio.
(2) Obtener una primera lista de tests (mala señal si es la definitiva) con lo que deberíamos obtener ante una serie de datos de entrada.
(3) Codificamos el primer test, lo lanzamos y comprobamos que el test falla.
(4) Codificamos lo justo para que el test pase y lo comprobamos.
(5) Pasamos al siguiente test.
(6) Lo codificamos, lo lanzamos y comprobamos que falla.
(7) Codificamos lo justo para pasar este test y comprobamos que pasa.
(8) Comprobamos que pasan TODOS los tests hasta ahora, por si hemos roto algo.
(9) Refactorizamos el código (en el test y el código)
(10) Volvemos a 5

Importante: si creemos que son necesarios más tests, porque hay situaciones que no hemos comprobado, añadimos los tests. No hay que tener miedo a corregir, sino a pensar que está bien algo que no lo está.

No hay comentarios.: