El Problema de Escalado

A medida que las suites crecen, el tiempo de ejecución se convierte en cuello de botella. Una suite de 2 horas significa 2 horas de espera. La orquestación resuelve esto distribuyendo tests inteligentemente.

Test Sharding

Divide la suite en partes iguales y ejecuta cada una en una máquina separada.

Estrategias de Sharding

EstrategiaCómo FuncionaMejor Para
Round-robinDistribución uniforme por cantidadDuraciones uniformes
Basada en duraciónDistribución por tiempo estimadoDuraciones variadas
Por archivoCada shard recibe archivos completosArchivos con setup compartido
Por etiquetaShard por categoríaTipos de test mixtos

Mecanismos de Reintento Inteligente

Reglas de Reintento

  1. Limita reintentos a 1-2 — más indica un problema real
  2. Logea todos los tests reintentados — rastrea la tasa de inestabilidad
  3. Diferencia razones — timeout de red vs. fallo de aserción
  4. Cuarentena tests crónicamente inestables — >5% de fallos necesitan corrección

Priorización de Tests

  1. Tests cubriendo código recientemente cambiado
  2. Tests que fallaron recientemente
  3. Tests de rutas críticas de negocio
  4. Tests nuevos
  5. Tests estables sin fallos recientes

Análisis de Impacto

Mapea cambios de código a tests afectados, ejecutando solo los relevantes.

Ejercicio: Optimiza una Suite Lenta

Tu suite E2E tiene 200 tests tomando 90 minutos en una sola máquina. Objetivo: menos de 15 minutos.

Solución

Paso 1: Analizar estado actual

Categorizar tests por duración, identificar inestables, mapear a features.

Paso 2: Shard por duración

8 shards con balanceo basado en duración, ~11 minutos por shard.

Paso 3: Reintentos inteligentes

1 reintento en CI, cuarentena para >5% de tasa inestable.

Paso 4: Selección para PRs

Ejecutar solo tests afectados + smoke tests (top 20 rutas críticas).

Resultados Esperados

  • Pipeline PR: ~8 minutos
  • Suite completa: ~12 minutos (8 shards)
  • Nocturno: 90 minutos (cobertura completa)

Conclusiones Clave

  1. Sharding es la forma más rápida de reducir tiempo
  2. Reintentos inteligentes mitigan inestabilidad pero enmascaran problemas si se abusan
  3. Análisis de impacto da el feedback más rápido en PRs
  4. Rastrea métricas — duración, tasa de inestabilidad, balance de shards
  5. Invierte en infraestructura — máquinas más rápidas y runners paralelos se pagan solos