TDD – Desarrollo dirigido por test

Hoy les voy a hablar sobre una técnica de desarrollo de software, que lamentablemente no he tenido la experiencia de trabajar en un equipo que la aplique, aunque me interesa muchísimo por el rol que desempeña testing.

El termino proviene del inglés Test Driven Development (TDD) y es una técnica de desarrollo de software incluida dentro de la metodología ágil Extreme programming (XP).

En este post describiré a grandes rasgos la técnica. TDD plantea iteraciones pequeñas en las que se diseña y desarrolla el software en base a las pruebas, y se mejora el código refactorizando en cada iteración con el objetivo de obtener un código modular y mantenible.

Si pensamos a TDD como un algoritmo se podría describir así:

  • Escribir el test
  • Implementar el código que pase el test, si no pasa
  • Refactorizar: modificar el código para mejorar el diseño

tdd

El equipo de testing comienza a trabajar al inicio del proyecto, participando en las instancias de análisis de requisitos, diseñando las pruebas antes que se desarrolle el software y guiando el desarrollo. Las pruebas son una herramienta de diseño de código (sigue siendo recomendable utilizar patrones de diseño y otras buenas prácticas). Se da máxima importancia y prioridad a los requisitos de negocio.

La arquitectura emerge de los requisitos, usando TDD la arquitectura se crea  iterando y refactorizando.

Al finalizar se comienza una nueva iteración y se toma otro requisito del cliente y se vuelven a repetir los pasos.  La clave está en dividir, priorizar y conquistar 🙂 .

 Pilares de TDD

  1. La implementación de las funciones justas que el cliente necesita y no más
  2. La minimización del número de defectos que llegan a producción
  3. La producción de software modular, altamente reutilizable y preparado para el cambio

Utilizando TDD los testers diseñamos un conjunto de pruebas adecuadas para los requisitos del negocio, pensando en ejemplos certeros para eliminar ambigüedades.

Las ventajas de utilizar TDD

  • La calidad del software aumenta
  • Conseguimos código altamente reutilizable
  • El trabajo en equipo se torna más fácil
  • Aumenta la comunicación entre los miembros del equipo
  • El programador obtiene un feedback rápido sobre la calidad del código

La verdad es que sin importar el paradigma y la metodología que se use, el testing juega un papel fundamental y dependiendo del proyecto una metodología es más apropiada que otra. Siempre recomiendo que el testing se integre cuanto antes al proyecto. En TDD se utilizan principalmente pruebas unitarias y de aceptación de XP.

Podemos utilizar algunas herramientas open source como JUnit(se integra al IDE de Eclipse) y FitNesse para las pruebas de aceptación

Anuncios

2 thoughts on “TDD – Desarrollo dirigido por test

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s