¿Qué Son Feature Flags?
Los feature flags (también llamados feature toggles) son sentencias condicionales en código que controlan si un feature está activo. Desacoplan el despliegue de código del lanzamiento de features — puedes desplegar código a producción con features nuevos ocultos, luego habilitarlos gradualmente.
Para ingenieros QA, los feature flags agregan complejidad al testing pero también proporcionan capacidades poderosas: puedes testear features en producción de forma segura, controlar experimentos A/B y revertir features problemáticos instantáneamente sin redesplegar.
Tipos de Feature Flags
| Tipo | Vida útil | Propósito | Foco de Testing |
|---|---|---|---|
| Release flags | Corta (días-semanas) | Ocultar features incompletos | Ambos estados on/off |
| Experiment flags | Media (semanas-meses) | A/B testing, métricas | Comportamiento de variantes |
| Ops flags | Larga duración | Circuit breakers, kill switches | Modos de fallo |
| Permission flags | Larga duración | Features por usuario (premium, beta) | Comportamiento por grupo |
Estrategia de Testing para Feature Flags
El Desafío Combinatorio
Con N flags independientes, hay 2^N combinaciones posibles. Con solo 10 flags, eso es 1,024 combinaciones.
Enfoque pragmático:
- Testea cada flag independientemente en ambos estados (2N tests)
- Identifica flags dependientes que interactúan y testea esas combinaciones
- Testea transiciones — activar/desactivar un flag durante una sesión de usuario
- Testea el estado por defecto — qué ven los usuarios cuando el servicio de flags está caído
Ejemplo de Matriz de Tests
Para un feature flag “new-checkout”:
| Escenario | Estado | Qué Testear |
|---|---|---|
| Feature off (default) | OFF | Checkout legacy funciona correctamente |
| Feature on | ON | Checkout nuevo funciona correctamente |
| Transición: off → on | OFF → ON | Cambio mid-session no corrompe datos del carrito |
| Transición: on → off | ON → OFF | Rollback no pierde datos del usuario |
| Servicio de flags caído | FALLBACK | Aplicación degrada graciosamente al default |
Herramientas de Feature Flags
| Herramienta | Tipo | Característica Clave |
|---|---|---|
| LaunchDarkly | SaaS | Enterprise, actualizaciones en tiempo real |
| Split.io | SaaS | Experimentación integrada |
| Unleash | Open source | Self-hosted, extensible |
| Flagsmith | Open source | API-first, config remota |
| ConfigCat | SaaS | Simple, accesible |
Ejercicio: Diseña una Estrategia de Testing de Flags
Tu equipo lanza un nuevo motor de recomendaciones detrás de un feature flag con tres variantes: “off” (legacy), “basic” y “advanced” (ML). Rollout progresivo: 1% → 10% → 50% → 100%.
Solución
Fase 1: Pre-Rollout
Tests funcionales por variante:
- OFF: Página de producto legacy, sin sección de recomendaciones
- BASIC: Sección de recomendaciones muestra productos relacionados por categoría
- ADVANCED: Recomendaciones ML, personalizadas por usuario
Tests de transición:
- OFF → BASIC: recomendaciones aparecen sin problemas de recarga
- BASIC → ADVANCED: recomendaciones ML reemplazan las básicas
- ADVANCED → OFF: sección desaparece limpiamente
Fase 2: Rollout Progresivo
Al 1%: Smoke tests en producción, monitorear tasa de error Al 10%: Comparar métricas entre variantes (test A/B/C) Al 50%: Regresión completa contra cada variante Al 100%: Validación final, planificar eliminación del flag
Mejores Prácticas
- Limpia flags viejos. Son deuda técnica. Al lanzar completamente, elimina el flag y el código antiguo.
- Testea el comportamiento de fallback. Si el servicio de flags cae, ¿qué pasa?
- Nunca anides feature flags profundamente. Máximo dos niveles.
- Usa overrides de flags en entornos de test.
- Monitorea cambios de estado de flags. Logea cuándo y quién los cambió.