¿Qué es el Exploratory Testing?

El Exploratory Testing es un enfoque simultáneo de aprendizaje, diseño de pruebas y ejecución donde los testers investigan activamente el software para entender su comportamiento y descubrir defectos. A diferencia del testing con scripts donde los casos de prueba están predefinidos, el exploratory testing se basa en la creatividad, intuición y conocimiento del dominio del tester para guiar las actividades de testing en tiempo real.

Características Clave:

  • Actividades simultáneas: Aprendizaje, diseño y ejecución de tests ocurren concurrentemente
  • Exploración sin scripts: Sin casos de prueba paso a paso predefinidos
  • Dirigido por el tester: Aprovecha habilidades, experiencia y creatividad del tester
  • Adaptativo: El testing se adapta basándose en descubrimientos e insights
  • Dependiente del contexto: Se enfoca en áreas de mayor valor o riesgo

El exploratory testing no es caos aleatorio o no estructurado—es un enfoque disciplinado guiado por objetivos de testing, restricciones y heurísticas.

Exploratory vs Scripted Testing

AspectoExploratory TestingScripted Testing
Diseño de TestsDurante la ejecuciónAntes de la ejecución
DocumentaciónNotas ligeras, reportes de sesiónCasos de prueba detallados anticipadamente
FlexibilidadAlta - se adapta a descubrimientosBaja - sigue pasos predefinidos
AprendizajeContinuo durante testingPrincipalmente durante fase de diseño
Mejor ParaEncontrar issues inesperados, casos edgeRegresión, compliance, repetibilidad
CoberturaGuiada por riesgo e intuiciónSistemática y medible
Tiempo para ComenzarInmediatoRequiere tiempo de preparación

Importante: El exploratory y scripted testing son enfoques complementarios, no competidores. Las estrategias de testing maduras usan ambos.

Por Qué Importa el Exploratory Testing

Ventajas

  1. Descubre defectos inesperados: Encuentra issues que los tests con scripts pierden
  2. Feedback rápido: Puede comenzar inmediatamente sin preparación extensiva
  3. Se adapta al cambio: Enfoque flexible ideal para entornos ágiles
  4. Aprovecha expertise: Aprovecha conocimiento e intuición del tester
  5. Testea perspectiva del usuario: Imita exploración de usuario real
  6. Investiga escenarios complejos: Explora interacciones y workflows
  7. Costo-efectivo: Sin overhead de escribir casos de prueba detallados para testing único

Limitaciones

  • Menos repetible: El mismo test puede no ejecutarse idénticamente
  • Depende de habilidad del tester: La calidad varía según capacidad del tester
  • Más difícil medir cobertura: Sin cuenta predefinida de casos de prueba
  • Desafíos de documentación: Requiere disciplina para documentar hallazgos
  • Difícil de delegar: No se puede entregar fácilmente a otros

Cuándo Usar Exploratory Testing

Escenarios ideales:

  • Nuevas features: Entender y testear funcionalidad no familiar
  • Bugs críticos: Investigación profunda de issues de producción
  • Restricciones de tiempo: Necesita feedback rápido sin preparación de casos de prueba
  • Evaluación de usabilidad: Evaluar experiencia de usuario y workflows
  • Integraciones complejas: Testear interacciones entre componentes
  • Suplementos de regresión: Complementar regresión automatizada con insight humano
  • Enfoque basado en riesgo: Investigar áreas de alto riesgo identificadas en análisis de riesgo

Técnicas y Enfoques Centrales

1. Session-Based Test Management (SBTM)

SBTM proporciona estructura al exploratory testing mediante sesiones con time-box y charter.

Componentes:

Test Charter: Una declaración de misión para la sesión de testing

Template de Charter:
EXPLORAR: [área objetivo]
CON: [recursos, herramientas]
PARA DESCUBRIR: [información, riesgos, defectos]

Ejemplo de Charter:

EXPLORAR: Workflow de procesamiento de pagos
CON: Cuentas de tarjetas de crédito de prueba, herramienta de throttling de red
PARA DESCUBRIR: Casos edge en fallos de pago, manejo de timeouts, mensajes de error

Time-box: Duración fija (típicamente 60-90 minutos) para testing enfocado

Debriefing: Documentación post-sesión de hallazgos, preguntas, issues

Ejemplo de Reporte de Sesión:

## Reporte de Sesión de Exploratory Testing

**Charter**: Explorar funcionalidad de login con varias combinaciones de credenciales para descubrir casos edge de autenticación

**Tester**: Sarah Martínez
**Fecha**: 2025-10-02
**Duración**: 90 minutos

### Áreas Cubiertas:
- Combinaciones válidas/inválidas de username y password
- Sensibilidad a mayúsculas en password
- Caracteres especiales en credenciales
- Bloqueo de cuenta después de intentos fallidos
- Comportamiento de timeout de sesión
- Funcionalidad "Remember Me"

### Bugs Encontrados:
1. **[P2]** Bloqueo de cuenta persiste incluso después de reset exitoso de password
2. **[P3]** Mensaje de error revela si username existe (issue de seguridad)
3. **[P4]** "Remember Me" no persiste a través de reinicio de navegador

### Preguntas Levantadas:
- ¿Cuál es la duración prevista del bloqueo de cuenta? (spec poco clara)
- ¿Debería CAPTCHA activarse después de N intentos fallidos?

### Cobertura de Testing: 85% de objetivos de charter
### Nuevas Ideas de Testing Generadas:
- Testear intentos de login concurrentes desde múltiples dispositivos
- Explorar reset de password con tokens expirados

2. Testing Basado en Heurísticas

Las heurísticas son reglas prácticas que guían la exploración. Heurísticas comunes de testing incluyen:

Heurística CRUD

Testear operaciones de Crear, Leer (Read), Actualizar (Update), Eliminar (Delete) para entidades de datos.

Ejemplo: Testing de sistema de gestión de posts de blog

Crear:
- Crear post con campos mínimos
- Crear con todos los campos poblados
- Crear con caracteres especiales en título
- Crear con contenido muy largo

Leer:
- Ver posts propios vs posts de otros
- Filtrar/buscar posts
- Paginación con tamaños de página variados

Actualizar:
- Actualizar solo título, solo contenido, ambos
- Actualizar posts publicados vs borradores
- Actualizaciones concurrentes desde múltiples usuarios

Eliminar:
- Eliminar borradores vs posts publicados
- Eliminar con comentarios adjuntos
- Recuperar posts eliminados (si está soportado)

Testing de Límites

Explorar límites y boundaries:

  • Valores mínimo/máximo
  • Inputs vacíos/null
  • Inputs muy grandes (overflow)
  • Números negativos donde se esperan positivos

Principio Goldilocks

Testear con inputs que son “muy pequeños,” “muy grandes,” y “justos”

Heurística de Consistencia

Buscar inconsistencias:

  • Comportamiento de elementos UI en diferentes pantallas
  • Reglas de validación de campos en formularios similares
  • Terminología usada en diferentes partes de la aplicación

SFDIPOT (San Francisco Depot)

Triggers de exploración:

  • Structure (Estructura): Arquitectura, componentes, integraciones
  • Function (Función): Features y capacidades
  • Data (Datos): Input/output, formatos, validación
  • Interfaces: APIs, UI, puntos de integración
  • Platform (Plataforma): Variaciones de OS, navegador, dispositivo
  • Operations (Operaciones): Workflows, user journeys
  • Time (Tiempo): Timeouts, scheduling, time zones

3. Tours de la Aplicación

Los “Testing Tours” de James Whittaker proporcionan frameworks de exploración:

The Guidebook Tour

Seguir documentación de usuario/guías de ayuda y verificar precisión.

The Money Tour

Testear features que generan revenue o tienen alto valor de negocio.

The Landmark Tour

Visitar features clave con las que los usuarios interactúan más frecuentemente.

The Intellectual Tour

Testear las features más complejas, técnicamente desafiantes.

The FedEx Tour

Seguir datos a través del sistema completo de extremo a extremo.

The Bad Neighborhood Tour

Explorar áreas con issues conocidos o alta densidad de defectos.

The Saboteur Tour

Intentar intencionalmente romper la aplicación con inputs inválidos.

Ejemplo: Money Tour para E-commerce

1. Navegar productos → Ver detalle de producto
2. Agregar al carrito → Modificar cantidad
3. Proceder al checkout → Ingresar info de envío
4. Ingresar detalles de pago → Completar compra
5. Recibir confirmación → Verificar estado de orden

En cada paso, explorar variaciones:

  • Diferentes tipos de productos
  • Múltiples items en carrito
  • Varios métodos de pago
  • Códigos de descuento
  • Usuario guest vs registrado

4. Attack-Based Testing

Estresar deliberadamente el sistema para exponer debilidades:

Confundir la Aplicación

  • Ingresar tipos de datos inesperados
  • Mezclar mayúsculas/minúsculas inconsistentemente
  • Usar caracteres especiales en todas partes

Abrumar la Aplicación

  • Subir archivos de tamaño máximo
  • Enviar formularios rápidamente
  • Crear miles de registros

Interrumpir Workflows

  • Saltar pasos en procesos multi-paso
  • Usar botón back del navegador en momentos inesperados
  • Refrescar páginas durante procesamiento

Violar Restricciones

  • Manipular URLs/parámetros directamente
  • Modificar campos de formulario ocultos
  • Enviar requests fuera de secuencia

5. Pair Testing

Dos testers (o tester + desarrollador) exploran juntos:

  • Uno conduce (opera la aplicación)
  • Uno observa (toma notas, sugiere ideas)
  • Combinan diferentes perspectivas y expertise

Beneficios:

  • Compartir conocimiento en tiempo real
  • Cobertura más amplia (dos pares de ojos)
  • Discusión inmediata de hallazgos
  • Oportunidades de mentoring

Conclusión

El exploratory testing es un complemento poderoso al scripted testing, aprovechando la creatividad e intuición humana para descubrir defectos que los casos de prueba predefinidos pierden. Al proporcionar estructura mediante session-based management, charters y heurísticas, el exploratory testing se convierte en una práctica disciplinada y medible que entrega valor significativo.

Puntos Clave:

  • El exploratory testing es investigación estructurada, no clic aleatorio
  • Usa charters y time-boxes para proporcionar enfoque y límites
  • Aplica heurísticas y tours para guiar la exploración sistemáticamente
  • Combina con automatización para cobertura comprehensiva
  • Documenta continuamente para capturar insights valiosos
  • Mide y mejora usando reportes de sesión y métricas

En el desarrollo de software moderno, donde los requisitos evolucionan rápidamente y las expectativas de los usuarios son altas, el exploratory testing proporciona la flexibilidad y el insight necesarios para entregar aplicaciones verdaderamente robustas y user-friendly. Hazlo una parte central de tu estrategia de testing.