¿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

TipoVida útilPropósitoFoco de Testing
Release flagsCorta (días-semanas)Ocultar features incompletosAmbos estados on/off
Experiment flagsMedia (semanas-meses)A/B testing, métricasComportamiento de variantes
Ops flagsLarga duraciónCircuit breakers, kill switchesModos de fallo
Permission flagsLarga duraciónFeatures 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:

  1. Testea cada flag independientemente en ambos estados (2N tests)
  2. Identifica flags dependientes que interactúan y testea esas combinaciones
  3. Testea transiciones — activar/desactivar un flag durante una sesión de usuario
  4. 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”:

EscenarioEstadoQué Testear
Feature off (default)OFFCheckout legacy funciona correctamente
Feature onONCheckout nuevo funciona correctamente
Transición: off → onOFF → ONCambio mid-session no corrompe datos del carrito
Transición: on → offON → OFFRollback no pierde datos del usuario
Servicio de flags caídoFALLBACKAplicación degrada graciosamente al default

Herramientas de Feature Flags

HerramientaTipoCaracterística Clave
LaunchDarklySaaSEnterprise, actualizaciones en tiempo real
Split.ioSaaSExperimentación integrada
UnleashOpen sourceSelf-hosted, extensible
FlagsmithOpen sourceAPI-first, config remota
ConfigCatSaaSSimple, 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

  1. Limpia flags viejos. Son deuda técnica. Al lanzar completamente, elimina el flag y el código antiguo.
  2. Testea el comportamiento de fallback. Si el servicio de flags cae, ¿qué pasa?
  3. Nunca anides feature flags profundamente. Máximo dos niveles.
  4. Usa overrides de flags en entornos de test.
  5. Monitorea cambios de estado de flags. Logea cuándo y quién los cambió.