¿Por qué combinar técnicas?

Cada técnica tiene puntos ciegos. EP pierde defectos de boundary. BVA pierde bugs dependientes de estado. State transition testing pierde errores de cálculo. Ninguna técnica sola provee cobertura completa.

Cuando las combinas estratégicamente, las fortalezas de una compensan las debilidades de otra.

El modelo de tres capas

Capa 1: Basada en especificación (Black-Box)

Forman la base. Verifican que el sistema cumple sus requisitos.

  • EP, BVA, tablas de decisión, state transitions

Capa 2: Basada en estructura (White-Box)

Llenan brechas de la Capa 1 analizando qué caminos de código no están cubiertos.

  • Cobertura de sentencias/decisiones, paths, MC/DC, data flow

Capa 3: Basada en experiencia

Atrapan defectos que las técnicas formales pierden.

  • Error guessing, testing exploratorio, checklists

El flujo de combinación

Paso 1: Empezar con tests basados en especificación

Feature: Registro de usuario
├── Campo email → EP + BVA
├── Campo password → EP + BVA
├── Campo edad → EP + BVA
├── Reglas de registro → Tabla de decisión
└── Ciclo de vida de cuenta → State transitions

Paso 2: Medir cobertura estructural

Ejecutar los tests de Capa 1 y analizar brechas.

Paso 3: Agregar tests basados en estructura

Para cada bloque no cubierto, determinar si debe testearse.

Paso 4: Aplicar técnicas basadas en experiencia

Error guessing, testing exploratorio, checklists.

Caso de estudio: Procesamiento de pagos

Capa 1 (~45 tests)

Sub-FeatureTécnicaTests clave
Tipo de pagoEP3 válidos + 1 inválido
Número de tarjetaEP + BVAVisa/MC/Amex válidos + formatos inválidos
Fecha de expiraciónBVAHoy, mañana, ayer, futuro lejano
Conversión de monedaBVA + EPMisma moneda, pares soportados
Reglas de pagoTabla de decisióntipo x monto x moneda x fraud_score
Ciclo de transacciónState transitionsPending → Authorized → Captured → Refunded
Ventana de reembolsoBVADía 0, 1, 29, 30, 31

Capa 2 (~15 tests adicionales)

Análisis de cobertura revela FraudDetector con 52% decision coverage. Agregar tests para paths de detección de fraude.

Capa 3 (~10 tests + sesiones)

Error guessing: doble submit, timeout, 3D Secure. Testing exploratorio con red lenta.

Total: ~70 test cases + 2 sesiones exploratorias.

Ejercicio: Diseño combinado de tests

Problema 1

Diseña una estrategia combinada para reserva de vuelos:

  • Búsqueda por origen, destino, fechas, pasajeros (1-9), clase
  • Resultados con filtros y ordenamiento
  • Booking con detalles de pasajero y pago
  • Modificación (con cargo) y cancelación
Solución

Capa 1 (~50 tests)

Sub-FeatureTécnicaTests clave
Inputs de búsquedaEP + BVACiudades válidas/inválidas, rangos de fecha
Lógica de fechasBVAMismo día, retorno antes de ida
Pasajero x clasePairwise3 clases x cantidades
Sort/filtroEPCada opción
Reglas de bookingTabla de decisiónClase x modificación x cancelación
Ciclo de ticketState transitionsBuscado → Reservado → Modificado → Cancelado

Capa 2 (~15 tests): Paths de cálculo de precios, lógica de disponibilidad, manejo de errores.

Capa 3 (~10 tests + sesiones): Edge cases de pasajeros, accesibilidad, localización.

Problema 2

Después de EP y BVA en un calculador de descuentos, cobertura es: sentencias 68%, decisiones 55%.

Código no cubierto:

  • Líneas 34-40: Cálculo de tier loyalty para miembros platinum
  • Líneas 55-62: Precios especiales de fin de semana festivo
  • Líneas 78-85: Override de descuento para empleados
  • Líneas 92-98: Manejo de montos negativos
  • Líneas 105-110: Check de feature flag deprecado
Solución
Código no cubiertoAnálisisAcción
Loyalty tier platinumClase EP faltanteAgregar clase EP + BVA para boundaries de tier
Precios festivosComportamiento temporalAgregar tests por tiempo: día normal, festivo, fin de semana
Descuento empleadoTipo de usuario especialAgregar clase EP + tabla de decisión para stacking
Monto negativoCódigo defensivoAgregar test negativo
Feature flag deprecadoCódigo muertoVerificar flag apagado. Marcar para eliminación

Medición de efectividad combinada

MétricaObjetivoPropósito
Cobertura de requisitos100%Cada requisito tiene tests
Cobertura de sentencias80%+La mayoría del código se ejecuta
Cobertura de decisiones75%+La mayoría de branches se testea
Mutation score80%+ en código críticoTests realmente atrapan fallas
Tasa de detecciónIncrementandoEl enfoque combinado encuentra más bugs

Puntos clave

  • Ninguna técnica sola es suficiente — combina basadas en especificación, estructura y experiencia
  • Empieza con técnicas de especificación como base
  • Usa análisis de cobertura para identificar brechas estructurales
  • Llena brechas con tests dirigidos, no aleatorios
  • Aplica técnicas de experiencia para edge cases del mundo real
  • Mide efectividad con métricas de cobertura, mutation score y tasa de defectos escapados
  • El enfoque de tres capas no es secuencial — itera según aprendes del sistema