TDD - Test Driven Development

TDD - Test Driven Development

Primero testeamos y luego escribimos.

TEST DRIVEN DEVELOPMENT - Desarrollo de software poco convencional, pero seguro.

Sabemos que al hablar de desarrollo se nos hace inevitable hablar de código, y junto con el código vienen los TEST.

Es cierto que en el 90% (inclusive me atrevo a decir más) de los casos en que se arranca a aprender a programar, no se le da importancia a los test. La mayoria de cursos que enseñan bases de programación no aplican, enseñan o saltan los test, por lo que el usuario aprende a programar sin éste 'plus'. Cada vez mas son las empresas que requieren de desarrolladores que tengan entendimiento de estas técnicas de desarollo de software, ya que aportan valor, calidad y seguridad al código que se escribe.

Una de las técnicas mas conocidas es la de Test Driven Development (a partir de ahora TDD). Esta es una técnica de desarrollo de software que se basa, brevemente, en crear primero los test, luego el diseño de la aplicación y finalmente el código.

Partamos desde la base: La manera en que generalmente el usuario normal desarrolla las aplicaciones es la siguiente

Diseño de aplicación -> Código de la aplicación -> Test.

Leyendo de izquierda a derecha, lo que generalmente se realiza primero es el diseño de la aplicación, luego se pasa a la accion de escribir el código necesario, y finalmente, (no en todos los casos) realizar los test necesarios.

Al hablar de Test Driven Development, cambiamos el orden de estas acciones y quedaría de la siguiente forma:

Desarrollar los test -> Diseñar la aplicación -> Escribir código.

TDD aplica una forma de escribir software mucho más segura, dónde primero se deben realizar los test necesarios de la aplicación (lo que se espera que funcione, el código), para luego pasar a un diseño de la aplicación y escribir el código.

La técnica de TDD tiene un 'mantra' y éste está ligado a colores.

descarga.png

  • Primero tendríamos el ROJO. Aquí es donde se crearán los test 'fallidos' y es lo que esperamos solucionar con el código.

  • Pasariamos el test a VERDE. Una vez que el test esta en ROJO, deberíamos escribir código capaz de pasar el test a VERDE. En esta fase se debe escribir el código que solucione el test previamente escrito.

  • Para finalizar, pasaremos por la parte de REFACTOR (a veces es violeta, pero es independiente del color). En esta fase deberemos mejorar la escritura del código previamente escrito para que quede con las mejores prácticas posibles.

TDD es una técnica que tiene "leyes" y se trata de cumplirlas lo mas posible.

  1. No escribiras código de producción, a no ser que hayas hecho un test para comprobarlo.
  2. No escribiras mas de un test del que sea necesario (solamente los necesarios!)
  3. No escribir más código de producción del que sea necesario.

Para cerrar el artículo, vamos a presentar beneficios que el TDD ofrece:

  1. Tu código termina con un mejor diseño, mas legible y seguro.
  2. Código documentado, ya que los test ofrecen documentación de lo que hace tu aplicación.
  3. Casi cualquier framework actual tiene herramientas para TDD.
  4. Se cree que al realizar TDD, el desarrollo se hace mas lento. Esto es un mito, ya que el desarrollo nunca termina, y si se aplica TDD es mas simple añadir nuevas features a tu aplicación.

Conclusión: Sin dudas esta técnica de desarrollo de software es una técnica sorprendente y que todo programador o desarollador de tecnología debe conocer. Es robusta, te permite escribir código seguro, limpio, escalable y con buenas prácticas. Sin dudas sirve para cualquier tipo de proyecto, sean pequeños, medianos o grandes.