El problema de selección de técnica
Has aprendido más de 20 técnicas de test design en este módulo. El desafío ya no es “¿qué técnicas existen?” sino “¿cuál debo usar ahora?”
Elegir la técnica incorrecta desperdicia esfuerzo. Usar EP en un protocolo con estado pierde bugs de transición. Usar state transition testing en un motor de cálculo pierde defectos de boundary.
Framework de decisión
Paso 1: ¿Qué tipo de feature estás testeando?
| Tipo de Feature | Técnicas más adecuadas |
|---|---|
| Validación de input (formularios) | EP + BVA |
| Reglas de negocio con condiciones | Tablas de decisión |
| Workflows, protocolos, sesiones | State transition testing |
| Configuración/compatibilidad | Testing pairwise |
| Cálculos, fórmulas | Domain analysis + BVA |
| APIs con múltiples parámetros | Testing combinatorio |
| Algoritmos críticos (finanzas, seguridad) | MC/DC + path coverage |
| Journeys de usuario complejos | Use case testing + state transitions |
Paso 2: ¿Qué información tienes?
| Información disponible | Técnicas aplicables |
|---|---|
| Solo requisitos/especificaciones | Black-box: EP, BVA, tablas de decisión, state transitions |
| Código fuente disponible | White-box: coverage de sentencias/decisiones, path, MC/DC |
| Sin documentación | Basadas en experiencia: error guessing, testing exploratorio |
| Modelo formal existe | Testing basado en modelos |
Paso 3: ¿Cuál es el nivel de riesgo?
| Nivel de riesgo | Enfoque recomendado |
|---|---|
| Safety-critical | MC/DC + domain analysis + mutation testing |
| Financiero/regulatorio | Tablas de decisión + BVA + testing combinatorio |
| Lógica de negocio core | EP + BVA + state transitions + path coverage |
| Features estándar | EP + BVA + error guessing |
| Bajo riesgo/cosmético | Error guessing + checklist-based |
Mapeo de técnicas por categoría
Testing de entrada de datos
- Empezar con EP — identificar clases válidas e inválidas
- Aplicar BVA — testear boundaries de cada clase
- Agregar domain analysis — si múltiples inputs interactúan
- Usar error guessing — inputs erróneos comunes
Testing de lógica de negocio
- Empezar con tablas de decisión — mapear combinaciones
- Agregar state transitions — si el comportamiento depende del estado previo
- Aplicar cause-effect graphing — si las condiciones tienen dependencias complejas
- Usar testing combinatorio — si muchos parámetros interactúan
Testing estructural (White-Box)
- Statement coverage — mínimo básico
- Decision coverage — ambos branches de cada decisión
- MC/DC — si safety-critical
- Path coverage — algoritmos críticos
- Mutation testing — validar que los tests son efectivos
Ejemplos del mundo real
Ejemplo 1: Formulario de login
- Campo username: EP + BVA (longitud min/max)
- Campo password: EP + BVA
- Botón login: State transitions (bloqueo tras 3 intentos fallidos)
- General: Error guessing (SQL injection, XSS, campos vacíos)
Ejemplo 2: Calculadora de seguro
- Cálculo de prima: Tablas de decisión
- Rangos de input: BVA + Domain analysis
- Niveles de tarifa: EP
- Combinaciones de descuento: Pairwise testing
Ejemplo 3: Checkout de e-commerce
- Estados del carrito: State transition testing
- Métodos de pago: Pairwise testing
- Reglas de envío: Tablas de decisión
- Flujo end-to-end: Use case testing
Ejercicio: Selección de técnicas
Problema 1
Para cada feature, selecciona técnicas primaria y secundaria:
- Motor de cálculo de impuestos con diferentes tasas por tramo de ingreso
- Reproductor de música con play, pause, skip, shuffle, repeat
- Función de búsqueda con filtros opcionales
- Sistema de control de elevadores para edificio de 20 pisos
- Medidor de fortaleza de contraseñas
Solución
Impuestos: Primaria: Tablas de decisión; Secundaria: BVA (boundaries de tramos) + Domain analysis + Path coverage
Reproductor: Primaria: State transition testing; Secundaria: Pairwise (combinaciones shuffle/repeat) + Error guessing
Búsqueda: Primaria: EP; Secundaria: Pairwise (filtros) + BVA (rangos de fecha) + Error guessing
Elevadores: Primaria: State transition testing; Secundaria: Model-based testing + Testing combinatorio
Fortaleza de contraseña: Primaria: EP (categorías débil/media/fuerte); Secundaria: BVA (umbrales) + Tablas de decisión + Error guessing
Problema 2
Crea una estrategia de testing para un sistema de reservas de hotel mapeando cada sub-feature a técnicas.
Solución
| Sub-Feature | Técnica primaria | Técnica secundaria | Justificación |
|---|---|---|---|
| Búsqueda de fechas | BVA | EP | Boundaries claros (check-in antes de check-out) |
| Conteo de huéspedes | BVA + EP | Error guessing | Boundaries (min 1, max por habitación) |
| Precios dinámicos | Tablas de decisión | Domain analysis | Reglas complejas por temporada |
| Ciclo de reserva | State transitions | Use case testing | Estados: pendiente, confirmada, cancelada |
| Procesamiento de pago | State transitions | Error guessing | Estados de pago + edge cases |
| Configuración | Pairwise | Checklist-based | Combinaciones browser/device |
Anti-patrones en selección de técnicas
Usar solo una técnica. Equipos que solo aplican EP pierden bugs dependientes de estado.
Omitir técnicas basadas en experiencia. Las técnicas formales no cubren todo.
Sobre-ingeniería en features de bajo riesgo. MC/DC en una landing page es desperdicio.
Ignorar técnicas white-box. Datos de cobertura estructural revelan brechas.
Puntos clave
- Ninguna técnica es suficiente sola — el testing efectivo requiere combinar técnicas
- Mapea técnica a tipo de feature: dependiente de estado → state transitions, reglas → tablas de decisión, inputs → EP+BVA
- El nivel de riesgo determina el rigor
- La información disponible restringe las opciones
- Siempre complementa técnicas formales con error guessing y testing exploratorio
- Construye el hábito de selección — para cada feature, pregunta conscientemente “¿cuál técnica encaja mejor?”