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
| Estrategia | Cómo Funciona | Mejor Para |
|---|---|---|
| Round-robin | Distribución uniforme por cantidad | Duraciones uniformes |
| Basada en duración | Distribución por tiempo estimado | Duraciones variadas |
| Por archivo | Cada shard recibe archivos completos | Archivos con setup compartido |
| Por etiqueta | Shard por categoría | Tipos de test mixtos |
Mecanismos de Reintento Inteligente
Reglas de Reintento
- Limita reintentos a 1-2 — más indica un problema real
- Logea todos los tests reintentados — rastrea la tasa de inestabilidad
- Diferencia razones — timeout de red vs. fallo de aserción
- Cuarentena tests crónicamente inestables — >5% de fallos necesitan corrección
Priorización de Tests
- Tests cubriendo código recientemente cambiado
- Tests que fallaron recientemente
- Tests de rutas críticas de negocio
- Tests nuevos
- 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
- Sharding es la forma más rápida de reducir tiempo
- Reintentos inteligentes mitigan inestabilidad pero enmascaran problemas si se abusan
- Análisis de impacto da el feedback más rápido en PRs
- Rastrea métricas — duración, tasa de inestabilidad, balance de shards
- Invierte en infraestructura — máquinas más rápidas y runners paralelos se pagan solos