TDD

tdd_flow

TDD (Test-driven development) és una técnica de desarrollo de programación que se basa en realizar primero las pruebas y refactorizar. TDD nos enseña a:

  • Escribir test que aumenten la fiabilidad del código
  • Escribir test de aceptación que nos ayudaran a centrarnos, específicamente, en el problema a resolver.
  • Mejora nuestros diseños para hacerlos más simples y flexibles.
  • Escribir código fácil de mantener.
  • Encajar TDD dentro del paradigma ágil y relacionarlo con otras técnicas como la integración continua.

Cada prueba que realicemos será lo suficientemente pequeña como para que permita determinar unívocamente si el código probado pasa o no la verificación que esta le impone. Esto favorece el diseño ya que evitara el “sobre diseño” de las aplicaciones y se logran interfaces más claras y un código más cohesivo.

Los pasos que se deben seguir son:

  • Elegir un requisito: Se elige de una lista el requerimiento que se cree que nos dará mayor conocimiento del problema y que a la vez sea fácilmente implementable.
  • Escribir una prueba: Se comienza escribiendo una prueba para el requisito.
  • Verificar que la prueba falla: Si la prueba no falla es porque el requerimiento ya estaba implementado o porque la prueba es errónea.
  •  Escribir la implementación: Escribir el código más sencillo que haga que la prueba funcione.
  •  Ejecutar las pruebas automatizadas: Verificar si todo el conjunto de pruebas funciona correctamente.
  • Eliminación de duplicación: El paso final es la refactorización, que se utilizara principalmente para eliminar código duplicado.
  • Actualización de la lista de requisitos: Se actualiza la lista de requisitos tachando el requisito implementado. Asimismo se agregan requisitos que se hayan visto como necesarios durante este ciclo y se agregan requerimientos de diseño.

Si se tiene un único repositorio universal de pruebas facilita complementar TDD con otra práctica recomendada por los procesos ágiles de desarrollo, la “Integración Frecuente”, que permite que nuestro trabajo con el del resto del equipo de desarrollo permite ejecutar toda batería de pruebas y así descubrir si nuestra última versión es compatible con el resto del sistema.

Ventajas del TDD:

  • Permite reducir o eliminar la necesidad de utilizar el depurado o debugger.
  • Permite producir aplicaciones de más calidad y en menos tiempo.
  • Puede guiar el diseño de un programa.
  • Centrándose en los casos de prueba primero permite al programador imaginar cómo los usuarios utilizaran el programa, por lo tanto al programador solo le importa la interfaz y no la implementación.
  • Al avanzar en pequeños pasos permite centrarse en la tarea actual.
  •  Se asegura que todo el código escrito está cubierto por una prueba.

Limitaciones del TDD: El TDD requiere que las pruebas puedan automatizarse. Esto resulta complejo en algunos dominios.

  • Interfaces Gráficas de Usuario.
  • Objetos distribuidos.
  • Bases de datos.
Anuncios

Publicado el 31/01/2014 en Desarrollo ágil de software. Añade a favoritos el enlace permanente. Comentarios desactivados en TDD.

Los comentarios están cerrados.

A %d blogueros les gusta esto: