Los beneficios del TDD

Conocí el TDD (Test driven development) ya hace un par de meses, al principio no comprendía su utilidad, o cual era el beneficio implícito que no estaba pudiendo ver.

¿Que es el Test driven development?

Lo describiría como una manera de hacer software. Los desarrolladores comúnmente producen código de la siguiente manera:

  1. Hacer toda la funcionalidad.
  2. Hacer los tests
  3. En caso de que los tests fallen, corregir funcionalidad.
  4. En caso de que los tests sigan fallando, corregir tests.

La propuesta del TDD es la siguiente:

  1. Hacer un test pequeño.
  2. Escribir código solo para hacer pasar ese test.
  3. Repetir

Al principio no se logra comprender, pero hay ideas ocultas detrás de todo esto. Voy a comenzar por las 3 reglas del TDD:

  1. Esta prohibido escribir código de producción salvo que sea para que una unit test fallida pase.
  2. Esta prohibido escribir más de lo suficiente a una unit test para que falle, y los fallos de compilación cuentan.
  3. Esta prohibido escribir más código de producción salvo el suficiente para que una unit test fallida pase.

Debes comenzar escribiendo una unit test. Pero por la regla 2, no puedes escribir una unit test demasiado grande, a penas esta falle debes empezar a escribir código. Pero por la regla 3, tampoco puedes escribir mucho código, apenas la unit test pase debes volver a repetir el proceso.

Si entras a una oficina donde están todos trabajando bajo TDD, y les pides que paren de programar, hace exactamente un minuto, todo el código funcionaba. Y esto se debe a que, por los principios de esta metodología, todos se hace en pequeños trozos.\ Y si todo funciona cada minuto, cada cuanto usarías un debugger? \ Si todos los dias haces un par de tests, todas los meces cientos y todos los años miles. Puedes correr todos esos test todo el tiempo y pasarán.\ Y que tal si corregimos código que esta desprolijo? Total tenemos los tests.\ Si quieres conocer como funciona una API, hay un test que ya lo hace.

Y pueden conocer más de esto. Les recomiendo (como lo hicieron conmigo) que lean al famoso UncleBob. El va a tener los mejores argumentos para que lo utilicen.


< Atrás