TDD, Test Driven Development, es una técnica que establece que primero se escriben las pruebas y luego el código del aplicativo.

Estas pruebas se efectúan de acuerdo a lo que se espera que haga el aplicativo, es por eso que algunos popes de esta disciplina dicen que practicándola intensivamente podemos prescindir de la documentación ya que el código de las pruebas es en si mismo documentación acerca del aplicativo.

En otras palabras las pruebas especifican lo que se espera de la aplicación a desarrollar.

Esta práctica es de amplia difusión en las Metodologías Ágiles, con esto se garantiza código de calidad desde el inicio del proceso de desarrollo y proporciona un buen elemento para el establecimiento de métricas.

El Ciclo TDD se compone de los siguientes pasos:

  • Escribir un test, aún de algo que todavía no hayamos codificado,
  • Compilar, va a dar error, ya que todavía no hemos codificado lo que estamos probando,
  • Escribir la mínima cantidad de código para que compile, aunque sea la cabecera del método o función a probar,
  • Compilar, ahora no da error, estamos en condiciones de ejecutar nuestro Test,
  • Ejecutar el test, falla, ya que habíamos escrito la mínima cantidad de código que garantice la compilación, pero no la ejecución del Test,
  • Escribir la mínima cantidad de código para que el Test no falle,
  • Ejecutar el test, esta vez no falla,
  • Refactorizar, este es un tema aparte, hay variadas técnicas de refactorización y muchos buenos libros escritos, más adelante veremos someramente alguna de esas técnicas,
  • Recomenzar escribiendo un nuevo Test.

Es habitual encontrar TDD asociado a estas tres palabras en sus respectivos colores:

Red, Green, Refactor

Estos son términos y colores asociados a la familia de herramientas de Test Unitarios xUnit, dela que usaremos NUnit, se pueden descargar la última versión desde http://www.nunit.org, también van a encontrar documentación.

Red, está asociado a la ejecución fallida de uno o más Tests.

Green, es el color que se ve en la IDE de NUnit al ejecutar exitosamente uno o más Test.

Refactor, lo podemos ver cuando estamos refactorizando nuestro proyecto de Testing.

Es muy importante que las modificaciones se hagan en pequeños pasos, esto hace a la estabilidad del código probado a lo largo del proceso de desarrollo. Una buena estrategia de Testing evita los grandes objetos, los Test integrales, la interdependencia entre las pruebas.

Una buena estructura TDD tiende a que el equipo de desarrollo esté más y mejor comunicado. Como se elimina la probabilidad de romper funcionalidad existente al liberar código nuevo, se eliminan temores a “papelones”.

La Barra Verde que nos muestra NUnit cuando los Test son exitosos se convierten en un factor motivacional positivo.

Por su propia naturaleza, TDD elimina los problemas derivados de las contínuas postergaciones del Debugging.

¿Y?… ¿cómo se hace?…

Te pido que me esperes a que termine el próximo post.🙂