Introducción a T.D.D ( Test Driven Development )

En software tenemos muy radicado el ciclo de vida de desarrollo, donde vemos el proceso de la siguiente forma:

ANÁLISIS ->DISEÑO -> DESARROLLO -> PRUEBAS ->IMPLEMENTACIÓN -> MANTENIMIENTO

Cada fase tiene un responsable que tiene las habilidades necesarias para completar su ciclo y pasar al siguiente, como si fuera un proceso de ensamblaje por fases.

Llevamos un par de décadas trabajando así, para algunos funciona y genera muy buenos resultados , para otros es algo que tiene que evolucionar y adaptarse a las nuevas tendencias mundiales , donde necesitamos software en producción en pocos periodos de tiempo para generar ventaja competitiva(Time to Market).

Test Driven Development (Desarrollo guiado por pruebas) es una práctica que tiene sus cimientos en XP(Programación Extrema) , para algunos autores el nombre no es preciso ya que realmente se considera como “Diseño Guiado por Ejemplos”.

Pilares

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

Para utilizar T.D.D debemos cumplir el ciclo [R.G.R] conocido como:

RED -> GREEN -> REFACTOR -> Repetir de nuevo

Consiste en que cambiemos el mindset y comencemos a realizar los Ejemplos antes de codificar, para ello utilizamos un framework conocidos como Xunit (Existe en muchos lenguajes de programación), que permiten realizar las pruebas unitarias de forma automática, Programar Pruebas.

Se comienza creando un test que compruebe como sería el comportamiento en cierta situación (un Ejemplo), ejecutamos el ejemplo que va a fallar (RED) debido a que todavía no se ha codificado ninguna línea que permita cumplir satisfactoriamente el ejemplo.

Luego codificamos el mínimo código posible (principio K.I.S.S) para que el ejemplo pases correctamente (VERDE). Por ultimo realizamos una Refactorización, según Martín Fowler, Refactorizar es modificar el diseño sin alterar su comportamiento, consiste en “limpiar el código y los test”, buscamos que el código cumpla estándares de codificación o principios de diseño como S.O.L.I.D o sea semántico y agradable para leer y entender.

PASOS

  • Elegir una necesidad desarrollar (Puede ser un criterio de aceptación de una Historia de usuario)
  • Crear el test ( Utilizando un framework Xunit)
  • Ejecutar los tests: falla (ROJO)
  • Crear código específico para resolver el test (keep it simple stupid)
  • Ejecutar de nuevo los tests: pasa (VERDE)
  • Refactorizar el código
  • Volver a Ejecutar los tests para comprobar que el refactor no genero un cambio en el comportamiento : pasa (VERDE)
  • Repetir el ciclo hasta que se abarque todos los posibles caminos que puede tener la necesidad (Caminos felices y caminos tristes).

NOTA : en el siguiente link esta un ejemplo de un programa utilizando T.D.D realizado en java.

https://github.com/igacifuentes/TallerTDDMaquinaDeCafe

Fuentes

Libro Diseño Ágil con T.D.D (Carlos Blé Jurado y colaboradores.)

Blogs

Desarrollo ágil potenciado por prácticas! Láminas sobre TDD, ATDD y CI

http://lordudun.es/2011/04/introduccion-a-tdd-test-driven-development/

Posted by Giovanny

¡Hola! Soy Giovanny Cifuentes, apasionado Consultor en Transformación Digital, con un enfoque principal en impulsar cambios significativos en las organizaciones. Mi misión es ayudar a las organizaciones a aprovechar las oportunidades y esquivar las amenazas mediante la incorporación de la Tecnología, Metodologías de Trabajo y Cambio Cultural.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Descubre más desde Giovanny Cifuentes | Enterprise Lean Agile Consultant & Trainer

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo