Cómo funciona el ciclo Red Green Refactor en TDD

Autor: | Última modificación: 18 de marzo de 2024 | Tiempo de Lectura: 3 minutos
Temas en este post:

Algunos de nuestros reconocimientos:

Premios KeepCoding

En el campo del desarrollo de software, los términos Test Driven Development (TDD) y ciclo Red Green Refactor (RGR) son el pan de cada día. Pero ¿qué significan exactamente? ¿Cómo se aplican en la vida real de un programador? Eso es precisamente de lo que hablaremos en este post. Sigue leyendo y descubre en qué consiste el ciclo Red Green Refactor en TDD.

¿Qué es el ciclo Red Green Refactor en TDD?

En el universo del desarrollo dirigido por pruebas, el ciclo Red Green Refactor en TDD es uno de los conceptos fundamentales.

  1. Red: en esta etapa, creamos un test que sabemos que va a fallar. Es como un desafío que nos ponemos a nosotros mismos, una promesa de que vamos a resolver un problema que aún no hemos abordado. De esta forma, entramos en la zona roja.
  2. Green: una vez tenemos nuestro test en rojo, el objetivo es conseguir que el test pase. De esta forma, nos movemos de la zona roja a la zona verde. Aquí es donde entra en juego la implementación obvia o la implementación falsa, técnicas que nos permiten lograr que nuestro test pase de forma rápida y segura.
  3. Refactor: finalmente, una vez que el test ha pasado, realizamos un proceso de refactorización. Aquí es donde limpiamos y optimizamos nuestro código para que sea más eficiente y más fácil de entender. La refactorización es una oportunidad para mejorar el diseño de nuestro código sin cambiar su comportamiento externo.

¿Por qué es importante este ciclo?

Establecer este ciclo de desarrollo nos ayuda a mantener el foco, nos da una estructura clara y, lo más importante, nos asegura que nuestro código funciona como se espera. Además, al aplicar ciclo Red Green Refactor en TDD, también mejoramos la calidad de nuestro código y facilitamos su mantenimiento a largo plazo.

Pero ¿qué ocurre cuando no podemos escribir más test? Esto significa que esa implementación ya está realizada. En otras palabras, hemos cubierto todas las posibles situaciones para esa parte del código. Entonces, es hora de saltar a otro requisito.

Ejemplo práctico del ciclo Red Green Refactor en TDD

Imaginemos que estamos creando una función average que calcula el promedio de un array de números. Aquí es donde entra en juego nuestro ciclo Red Green Refactor en TDD:

  • Red: creamos un test que espera que nuestra función average devuelva NaN cuando se le pase un array vacío. Como nuestra función aún no maneja esta situación, el test falla y entramos en la zona roja.
  • Green: ahora, necesitamos hacer que este test pase. Modificamos nuestra función average para que devuelva NaN cuando se le pase un array vacío. Ahora el test pasa y entramos en la zona verde.
  • Refactor: finalmente, revisamos nuestro código y encontramos que podemos optimizarlo un poco. En lugar de utilizar un bucle for para sumar los números, decidimos utilizar el método reduce de los arrays. Nuestro test sigue pasando y hemos terminado nuestro ciclo Red Green Refactor.

Al diseñar tus test, necesitas ser un poco malicioso. Es decir, necesitas pensar en los peores casos y desafíos que pueda enfrentar tu código. Si detectas un fallo y escribes un test que sabes que va a fallar, programarás en consecuencia para corregir ese error.

El ciclo nunca acaba… hasta que acaba

Uno de los aspectos más interesantes del ciclo Red Green Refactor en TDD es que no existe un número fijo de iteraciones. No hay un límite superior de cuántos test puedes o debes escribir. El ciclo continúa hasta que no se te ocurra ningún otro caso de prueba o, en otras palabras, hasta que estés seguro de que tu código está cubierto por todos los lados.

Esta guía es una base para comenzar, pero todavía hay mucho más por aprender. Si quieres profundizar en TDD, desarrollo dirigido por pruebas, refactorización y mucho más, te invitamos a unirte a nuestro Desarrollo Web Full Stack Bootcamp. En pocos meses, te formarás a nivel teórico y práctico para enfrentarte a los desafíos que te depara el mercado laboral. ¿Estás listo para triunfar como desarrollador web? ¡Pide más información ahora e impulsa tu futuro!

¡CONVOCATORIA ABIERTA!

Desarrollo Web

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado