¿Qué Es Error Guessing?

Error guessing es una técnica de test design basada en experiencia donde los testers usan su conocimiento de errores comunes, defectos típicos y fallas pasadas para anticipar dónde es probable que el software falle. A diferencia de las técnicas formales que siguen reglas, error guessing aprovecha la intuición y la experiencia de dominio.

Por Qué Funciona Error Guessing

Los testers experimentados desarrollan intuición sobre dónde se esconden los defectos. Esto viene de:

  • Años encontrando bugs similares en diferentes proyectos
  • Conocimiento de errores de programación comunes
  • Comprensión de comportamientos típicos del usuario que rompen el software
  • Conciencia de puntos de integración que frecuentemente fallan

El Enfoque de Taxonomía de Defectos

Para hacer el error guessing sistemático, construye una taxonomía de defectos:

graph TD A[Taxonomía de Defectos] --> B[Errores de Input] A --> C[Errores de Cálculo] A --> D[Errores de Estado] A --> E[Errores de Integración] A --> F[Errores de Entorno] B --> B1[Input null/vacío] B --> B2[Caracteres especiales] B --> B3[Input extremadamente largo] B --> B4[Unicode/encoding] C --> C1[División por cero] C --> C2[Integer overflow] C --> C3[Errores de redondeo] D --> D1[Race conditions] D --> D2[Datos obsoletos] E --> E1[API timeout] E --> E2[Falla de red] F --> F1[Disco lleno] F --> F2[Poca memoria]

Categorías Comunes de Errores

Manejo de Input:

Patrón de ErrorTest
Null/vacíoEnviar campos de formulario vacíos
Caracteres especiales<script>alert(1)</script>, '; DROP TABLE--
Extremadamente largoString de 10,000 caracteres en campo nombre
UnicodeEmojis, texto RTL, caracteres chinos
Números negativos-1 en campo de cantidad
Cero0 items, pago de $0
Espacios al inicio/final" admin " como username

Cálculos:

Patrón de ErrorTest
División por ceroCalcular promedio de 0 items
Integer overflowCantidad = 2,147,483,647 + 1
Precisión float$0.1 + $0.2 = ?
Aritmética de fechasAgregar 1 mes a Ene 31

Estado/Timing:

Patrón de ErrorTest
Double submitClick botón enviar dos veces rápido
Botón atrásEnviar formulario, presionar atrás, enviar de nuevo
Sesión expiradaDejar página abierta toda la noche, luego enviar
Edición concurrenteDos usuarios editan el mismo registro

Ejemplo Real: Testing de Carrito de Compras

#Error GuessRazón
1Agregar item, luego se agota el stockRace condition de inventario
2Agregar 999,999 del mismo itemOverflow de cantidad
3Aplicar cupón expiradoValidación de fecha
4Cambiar moneda a mitad del checkoutCorrupción de estado
5Abrir carrito en dos tabs, checkout en ambosModificación concurrente
6Agregar item con precio $0.001Redondeo en total
7Carrito con 100+ items únicosPerformance/renderizado
8Eliminar todos los items y proceder a checkoutManejo de estado vacío

Construyendo Tu Catálogo Personal de Defectos

Framework Estructurado de Error Guessing

Crea un catálogo organizado por:

1. Categoría — ¿Qué tipo de error? 2. Trigger — ¿Qué input o acción lo causa? 3. Síntoma — ¿Qué ve el usuario? 4. Probabilidad — ¿Qué tan común es en tu dominio?

Ejemplo de Entradas del Catálogo:

CategoríaTriggerSíntomaProbabilidad
InputPegar texto con chars Unicode ocultosCorrupción de datosMedia
TimingEnviar durante auto-guardadoDatos duplicados o perdidosAlta
AuthToken expira durante formulario multi-pasoFalla silenciosaAlta
DatosImportar CSV con columnas extraCrash o mapeo incorrectoMedia
DisplayTexto muy largo sin espaciosLayout se rompeAlta
LocaleCampo fecha con DD/MM vs MM/DDFecha incorrecta guardadaAlta

Combinando Error Guessing con Técnicas Formales

flowchart LR A[EP + BVA] --> B[Cobertura Sistemática] C[Decision Tables] --> B D[Error Guessing] --> E[Cobertura de Vacíos] B --> F[Suite de Tests Combinada] E --> F

Mejor práctica:

  1. Aplicar técnicas formales primero
  2. Luego error guessing para encontrar lo que las técnicas formales perdieron
  3. Enfocar error guessing en áreas de mayor riesgo y complejidad

Ejercicio: Sesión de Error Guessing

Escenario: Estás probando una página de edición de perfil con campos: Nombre, Bio (máx 500 chars), Carga de foto de perfil, Fecha de nacimiento y URL de sitio web.

Tarea: Genera al menos 10 test cases de error guessing organizados por categoría.

Pista

Piensa en cada campo: ¿Qué es lo peor que un usuario podría ingresar? ¿Qué pasa en los límites? ¿Qué hay de edge cases de carga de archivos (0 bytes, 10GB, formato incorrecto, archivo ejecutable)?

Solución
#CategoríaTestRazón
1InputNombre = <img src=x onerror=alert(1)>XSS en campo almacenado
2InputBio = exactamente 500 chars + 1 másEnforcement de límite
3InputBio con solo emojis (500 emojis)Manejo Unicode, conteo
4UploadFoto = archivo de 0 bytesManejo de archivo vacío
5UploadFoto = .exe renombrado a .jpgBypass de validación de tipo
6UploadFoto = imagen de 50MBEnforcement de límite de tamaño
7FechaNacimiento = fecha de mañanaFecha futura inválida
8FechaNacimiento = Feb 29, 2023 (no bisiesto)Manejo de fecha inválida
9URLWebsite = javascript:alert(1)XSS por esquema URL
10URLWebsite = URL muy larga (2000+ chars)Validación de longitud
11EstadoEditar nombre, no guardar, navegar fuera¿Advertencia de cambios?
12ConcurrenteEditar perfil en dos tabs, guardar ambos¿Last-write-wins o conflicto?

Tips de Profesional

  • Mantén un diario personal de bugs. Registra cada bug interesante — con el tiempo se convierte en tu activo de testing más valioso.
  • Aprende de incidentes de producción. Los post-mortems revelan patrones de error que el test design formal raramente cubre.
  • Piensa como un atacante. Estudia OWASP Top 10 para patrones de testing web.
  • Considera el entorno del usuario. Redes lentas, browsers antiguos, ad blockers, herramientas de accesibilidad — crean errores que los desarrolladores raramente anticipan.
  • Comparte tu catálogo con el equipo. Una taxonomía de defectos de equipo es más poderosa que el conocimiento individual.