Skip to content
IRC-CodingIRC-Coding
TDDTest-Driven DevelopmentCI/CDContinuous IntegrationContinuous DeploymentRed Green RefactorAutomatización

TDD y CI/CD explicados: Red-Green-Refactor

Test-Driven Development con ciclo Red-Green-Refactor y pipelines CI/CD automatizados. GitHub Actions, Jenkins y deployments automáticos.

S

schutzgeist

2 min read
TDD y CI/CD explicados: Red-Green-Refactor

TDD & CI/CD – Red-Green-Refactor y pipelines automatizadas

Este artículo es una guía conceptual sobre TDD y CI/CD, incluyendo preguntas de evaluación y referencias.

En resumen

Test-Driven Development (TDD) es un enfoque de desarrollo en el que escribes las pruebas antes que el código. CI/CD describe procesos automatizados para integrar continuamente y entregar software de forma constante.

Descripción técnica compacta

Test-Driven Development (TDD) sigue el ciclo: Red – Green – Refactor. Primero escribes una prueba que falla (Red), luego implementas el código mínimo para que pase (Green), y finalmente optimizas la solución (Refactor). TDD promueve código limpio y verificable, reduciendo errores desde etapas tempranas. CI/CD significa Continuous Integration, que integra automáticamente cambios en la rama principal con pruebas ejecutadas, y Continuous Deployment/Delivery, que entrega cambios automatizados a entornos de staging o producción. CI/CD utiliza herramientas como GitHub Actions, Jenkins o GitLab CI, combinadas con pruebas unitarias, de integración y de aceptación.

Puntos clave para evaluación

  • TDD = Prueba primero, luego implementación
  • Ciclo Red-Green-Refactor
  • CI = Compilación automatizada y pruebas tras cada commit
  • CD = Entrega automatizada a entornos destino (relevante para IHK)
  • TDD aumenta cobertura de pruebas y estructura del código
  • CI/CD reduce errores manuales y riesgos de seguridad
  • Lanzamientos más rápidos mediante automatización
  • Los procesos de compilación y despliegue deben estar documentados

Componentes principales

  1. Unit Tests
  2. Test Frameworks (p. ej. JUnit, pytest)
  3. CI-Server (p. ej. Jenkins, GitHub Actions)
  4. Build Tools (p. ej. Maven, Gradle)
  5. Docker para despliegue
  6. Pipeline scripts
  7. Despliegue automatizado (CD)
  8. Estrategias de rollback
  9. Entornos de staging
  10. Herramientas de cobertura de pruebas y calidad de código

Ejemplo práctico

# Ejemplo TDD (Python con pytest)
def add(a, b):
    return a + b

def test_add():
    assert add(2, 3) == 5

Explicación: Primero escribes la prueba que falla (Red). Luego implementas add() para que pase (Green). Finalmente mejoras la estructura si es necesario (Refactor).

Ventajas e inconvenientes

Ventajas

  • Mayor calidad del código
  • Aseguramiento de calidad automatizado
  • Detección de errores más rápida
  • Despliegues repetibles y seguros

Inconvenientes

  • Mayor esfuerzo inicial
  • Infraestructura necesaria (sistemas CI/CD)
  • Requiere un enfoque disciplinado

Preguntas típicas de evaluación (con respuesta breve)

  1. ¿Qué es “Red-Green-Refactor” en TDD? Escribir la prueba (Rojo), código mínimo (Verde), luego refactorizar.
  2. ¿Cuál es el objetivo de CI? Pruebas automatizadas e integración continua de cambios de código.
  3. ¿Cómo apoya CD el proceso de desarrollo? Mediante entrega automatizada de versiones probadas.
  4. ¿Qué tipos de pruebas se ejecutan automáticamente en CI/CD? Unit tests, tests de integración, tests de aceptación si aplica.
  5. ¿Diferencia entre Continuous Delivery y Deployment? Delivery = hasta staging, Deployment = directamente a producción.
  6. ¿Cómo promueve TDD la calidad de software? Los errores se detectan temprano, el código está mejor estructurado.
  7. ¿Qué herramientas CI/CD se usan frecuentemente? Jenkins, GitHub Actions, GitLab CI, Travis CI.
  8. ¿Cómo documentar un proceso CI/CD? Como configuración de pipeline (archivo YAML) con descripción detallada de todos los pasos.

Fuentes principales

  1. https://martinfowler.com/bliki/TestDrivenDevelopment.html
  2. https://docs.github.com/en/actions
  3. https://www.atlassian.com/continuous-delivery
  4. https://docs.pytest.org/en/latest/
  5. https://learn.microsoft.com/en-us/azure/devops/pipelines/index
Volver al blog
Share:

Nächster Artikel in Arquitectura de Software

Weiterlesen
UML Fundamentos: Diagramas, Clases y Secuencias

Entradas relacionadas