← dev-notes
TESTING · PARTE 2 DE 2

TDD
Test Driven Development

Ciclos cortos red-green-refactor y diseño guiado por feedback automatizado

00Cuándo usar TDD
Encaja muy bien en
  • Lógica de dominio con reglas claras y casos borde.
  • APIs nuevas con contratos todavía en diseño.
  • Módulos críticos donde romper cuesta caro.
No siempre conviene empezar por TDD
  • Spikes exploratorios o prototipos descartables.
  • Integraciones muy inestables sin contrato definido.
  • Tareas 100% de wiring sin lógica propia.
01Ciclo red-green-refactor
🔴
01
Red
Escribe primero una prueba que falla por comportamiento aún no implementado.
🟢
02
Green
Implementa lo mínimo para pasar, sin adelantarte a escenarios no requeridos.
03
Refactor
Mejora diseño y legibilidad manteniendo la red de seguridad de pruebas en verde.
MICRO-CICLO TDD — JAVA (RED → GREEN)
// RED
@Test
void shouldApplyTenPercentDiscountForVipCustomer() {
    PriceCalculator calc = new PriceCalculator();
    BigDecimal total = calc.finalPrice(BigDecimal.valueOf(100), true);
    assertEquals(BigDecimal.valueOf(90), total);
}

// GREEN (mínimo para pasar)
public BigDecimal finalPrice(BigDecimal base, boolean vip) {
    return vip ? base.multiply(BigDecimal.valueOf(0.9)) : base;
}
02Heurísticas didácticas
🧠
04
Del ejemplo al diseño
Empieza por casos simples y deja que aparezcan abstracciones cuando ya hay duplicación real.
05
Fake vs mock
Prefiere fakes para flujos de negocio; usa mocks cuando necesites verificar interacción explícita.
Regla operativa: en TDD no diseñas “todo” antes; diseñas el siguiente paso que la prueba actual te exige, y refactorizas con evidencia.
03Errores frecuentes en TDD
🏎
06
Tests enormes
Cuando un test valida demasiadas cosas, falla sin indicar causa y bloquea refactor.
🧱
07
Acoplarse a implementación
Pruebas frágiles que dependen de internals rompen con cualquier mejora de diseño.
📉
08
Saltarse refactor
Acumular “greens” sin limpiar deriva en deuda técnica y pérdida de velocidad futura.
04Checklist de sesión TDD
1
CHECK
¿La prueba falla por la razón correcta?
Evita falsos rojos por setup incorrecto.
2
CHECK
¿El green fue mínimo?
No implementar features no pedidas por la prueba.
3
CHECK
¿Refactor mantuvo verde?
Ejecuta suite relevante tras cada limpieza importante.
4
CHECK
¿El nombre del test explica comportamiento?
El test debe leerse como documentación viva.