Desarrollo Orientado por Pruebas

¿Qué es el Desarrollo Orientado por Pruebas?

El Test Driven Development o Desarrollo Orientado por Pruebas es una práctica plenamente integrada en el modelo de desarrollo de Logiciel. De forma resumida, esta práctica se estructura en dos fases:

  • En primer lugar, diseñamos y escribimos los casos de prueba y las pruebas unitarias en base a requisitos del software y a la arquitectura del proyecto.
  • En segundo lugar, codificamos la aplicación de tal manera que el código implementado cumpla los test diseñados previamente.

El propósito del desarrollo guiado por pruebas es lograr un código que funcione y sea seguro ante los cambios. La clave es partir de los requisitos. Estos deben ser traducidos a test unitarios de tal forma que cuando todas las pruebas superen los requisitos y todas sus derivadas, se podrá asegurar que la aplicación va a funcionar correctamente.

En la práctica, el diseño de test unitarios es un proceso que va a convivir durante todo el ciclo de vida de un producto, desde su diseño inicial hasta la fase de explotación, con el mantenimiento de la misma.

¿Cuáles son las ventajas de este planteamiento?

  • Los test son útiles porque ayudan a organizar mejor el código y a entender mejor los requisitos y las funcionalidades que debe implementar el software.
  • Facilita la gestión de los cambios. Cualquier cambio que rompa la lógica del código o sea incoherente con los requisitos puede descubrirse rápidamente.
  • Automatiza las pruebas, con una evidente mejora en la productividad del equipo, lo que garantiza de una forma rápida que los cambios introducidos son coherentes con los casos de prueba definidos.
  • En definitiva, el código escrito en base a TDD  es más fácil de cambiar y más fácil de mantener.

Fases relevantes del TDD en nuestro modelo de desarrollo

  • Fase de Diseño. Se definen los casos de prueba a implementar partiendo de los requerimientos.
  • Fase de Desarrollo.
    • Para cada una de las tareas de una iteración se implementan los casos de prueba traduciéndolos en test unitarios.
    • Durante la tarea se diseñan nuevos test unitarios y se ejecutan todas las pruebas con NUnit
  • Fase de Producción.
    • El mantenimiento del producto exige cambios y/o refactorizaciones que van asociadas a nuevos de test unitarios.