Test Driven Development (TDD)

TDD es una técnica para desarrollar y diseñar software. Consiste en escoger un requisito a desarrollar y aplicar estas reglas.

  1. No escribir código ninguno, escribir primero una prueba (test)para el requisito.
  2. Verificar que la prueba falla.
  3. Escribir el código para pasar la prueba.
  4. Ejecutar la prueba y comprobar que el código funciona.
  5. Refactorizar el código para evitar duplicación.

Aserciones

Antes de entrar en materia, debemos conocer las aserciones, cada vez que escribimos N test debemos comprobar si se cumple una condición. Para ello PHPUnit nos provee de una serie de funciones llamadas asserts.

En la Wikipedia podemos ver que una aserción es un predicado (i.e., una sentencia verdadero-falso) incluido en un programa como indicación de que el programador piensa que dicho predicado siempre se cumple en ese punto del flujo de programa.

Aquí la tabla con las aserciones que se pueden utilizar en PHPUnit http://phpunit.de/manual/3.6/en/appendixes.assertions.html, pero no debemos preocuparnos no hay nada que “crtl + espacio” (autocompletado) no pueda solucionar.

Retos

  • La curva de aprendizaje: TDD es una técnica valiosa que produce frutos, sin embargo es difícil de aprender.
  • Cambiar en énfasis del desarrollo a las pruebas: TDD implica un cambio de paradigmas
  • Dificultades para adaptar código de sistemas legados: TDD es difícil de aplicar en situaciones en las cuales se está dando mantenimiento o evolucionando sistemas legados de alta complejidad.
  • Dificultad cuando se aplica a sistemas dependientes de aplicaciones externas: TDD puede ser difícil de aplicar cuando existan dependencias con otros sistemas externos, que no están bajo el control del equipo de desarrollo.
  • Constantes iteraciones y refactorizaciones: Una de las características del desarrollo bajo TDD son las constantes iteraciones y refactorizaciones son comunes.
  • Alto costo de errores no identificados: El costo de errores no identificados es más alto, dado que si una condición no es identificada hasta el final, podrían requerirse modificaciones que obliguen a repetir casos de pruebas.

Links de interés

Video Workshop con Camilo Sanchez – 13 de Abril 2016
Libro Test-Driven Development: By Example.
Libro Working effectively with legacy code.
Presentacion Introducción al Test-Driven Development (TDD) de Andres Cuervo Adame

Patricia AyusoTest Driven Development (TDD)

Deja un comentario