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
- Unit Tests
- Test Frameworks (p. ej. JUnit, pytest)
- CI-Server (p. ej. Jenkins, GitHub Actions)
- Build Tools (p. ej. Maven, Gradle)
- Docker para despliegue
- Pipeline scripts
- Despliegue automatizado (CD)
- Estrategias de rollback
- Entornos de staging
- 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)
- ¿Qué es “Red-Green-Refactor” en TDD? Escribir la prueba (Rojo), código mínimo (Verde), luego refactorizar.
- ¿Cuál es el objetivo de CI? Pruebas automatizadas e integración continua de cambios de código.
- ¿Cómo apoya CD el proceso de desarrollo? Mediante entrega automatizada de versiones probadas.
- ¿Qué tipos de pruebas se ejecutan automáticamente en CI/CD? Unit tests, tests de integración, tests de aceptación si aplica.
- ¿Diferencia entre Continuous Delivery y Deployment? Delivery = hasta staging, Deployment = directamente a producción.
- ¿Cómo promueve TDD la calidad de software? Los errores se detectan temprano, el código está mejor estructurado.
- ¿Qué herramientas CI/CD se usan frecuentemente? Jenkins, GitHub Actions, GitLab CI, Travis CI.
- ¿Cómo documentar un proceso CI/CD? Como configuración de pipeline (archivo YAML) con descripción detallada de todos los pasos.
Fuentes principales
- https://martinfowler.com/bliki/TestDrivenDevelopment.html
- https://docs.github.com/en/actions
- https://www.atlassian.com/continuous-delivery
- https://docs.pytest.org/en/latest/
- https://learn.microsoft.com/en-us/azure/devops/pipelines/index



