Probar gratis
4 min lectura Guide 832 of 877

Workflow de Test-Driven Development

Los tests guían el diseño. GitScrum ayuda a equipos a trackear adopción de TDD y medir el impacto de prácticas test-first en calidad y velocity.

Fundamentos de TDD

CICLO DE TDD:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ EL CICLO:                                                   │
│ ─────────                                                   │
│                                                             │
│       ┌─────────────────────────────────────┐              │
│       │                                     │              │
│       │    ┌────────┐                       │              │
│       │    │  RED   │ Escribe test que falla│              │
│       │    └───┬────┘                       │              │
│       │        │                            │              │
│       │        ▼                            │              │
│       │    ┌────────┐                       │              │
│       │    │ GREEN  │ Hazlo pasar           │              │
│       │    └───┬────┘ (código mínimo)       │              │
│       │        │                            │              │
│       │        ▼                            │              │
│       │    ┌────────┐                       │              │
│       └────┤REFACTOR│ Mejora diseño         │              │
│            └────────┘ (tests siguen pasando)│              │
│                                                             │
│ ─────────────────────────────────────────────────────────── │
│                                                             │
│ PASO 1 - RED:                                               │
│ Escribe test para comportamiento que no existe aún        │
│ Ejecútalo → Falla (prueba que test funciona)              │
│                                                             │
│ PASO 2 - GREEN:                                             │
│ Escribe solo el código suficiente para pasar el test      │
│ No sobre-ingenierar, no optimizar                         │
│ Solo hazlo funcionar                                       │
│                                                             │
│ PASO 3 - REFACTOR:                                          │
│ Ahora mejora el código                                     │
│ Elimina duplicación, clarifica nombres, mejora diseño     │
│ Tests aseguran que no rompiste nada                       │
│                                                             │
│ REPITE para cada pequeño pedazo de comportamiento         │
└─────────────────────────────────────────────────────────────┘

Ejemplo de Workflow

EJEMPLO DE TDD:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ FEATURE: Calcular total de orden con descuento             │
│                                                             │
│ ─────────────────────────────────────────────────────────── │
│                                                             │
│ PASO 1 - RED (Escribe test que falla):                     │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ def test_apply_discount():                             ││
│ │     order = Order(subtotal=100)                        ││
│ │     order.apply_discount(10)  # 10%                    ││
│ │     assert order.total == 90                           ││
│ │                                                         ││
│ │ # CORRE → FALLA (Order no existe aún)                  ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ PASO 2 - GREEN (Hazlo pasar):                              │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ class Order:                                            ││
│ │     def __init__(self, subtotal):                       ││
│ │         self.subtotal = subtotal                        ││
│ │         self.total = subtotal                           ││
│ │                                                         ││
│ │     def apply_discount(self, percent):                  ││
│ │         self.total = self.subtotal * (1 - percent/100) ││
│ │                                                         ││
│ │ # CORRE → PASA                                          ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ PASO 3 - REFACTOR:                                          │
│ Mejora nombres, estructura si es necesario                │
│ Tests siguen pasando                                       │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Cuándo Usar TDD

CUÁNDO USAR TDD:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│ ✅ BUENO PARA TDD:                                          │
│ • Lógica de negocio                                       │
│ • Algoritmos                                               │
│ • Data transformations                                     │
│ • API endpoints                                            │
│ • Código con requisitos claros                            │
│                                                             │
│ ⚠️ TDD ES OPCIONAL PARA:                                    │
│ • Prototipos exploratorios                                │
│ • UI layout/styling                                        │
│ • Spikes de investigación                                 │
│ • Código descartable                                      │
│                                                             │
│ DESPUÉS DE EXPLORAR → VUELVE A TDD                         │
└─────────────────────────────────────────────────────────────┘

Soluciones Relacionadas de GitScrum