Academia sin Humo

Glosario de técnicas de diseño de pruebas

No alcanza con saber el nombre de la técnica: hay que entender QUÉ problema resuelve y CUÁNDO usarla. Cada técnica está conectada con los bugs que te ayuda a encontrar en esta Academia.

🧩

Partición de equivalencia

Qué problema resuelve

No podés probar infinitos valores de entrada. Pero muchos se comportan igual: si un email con dominio válido funciona, no hace falta probar mil variaciones del mismo tipo. La técnica agrupa las entradas en clases que el sistema trata de la misma forma.

Cómo se aplica

Dividí el dominio de entrada en particiones (clases de equivalencia) válidas e inválidas. Elegí un representante de cada clase y probalo. Un caso por partición cubre toda la clase, sin redundancia.

En este playground

El email del registro (clases válido / sin dominio / sin arroba), el tipo de archivo del CV (PDF vs todo lo demás) y el orden de fechas de una reserva. En cada caso, un representante de la clase inválida revela validaciones que faltan.

Bugs relacionados:R-2D-2U-1
📏

Análisis de valores límite

Qué problema resuelve

Los bugs viven en los bordes. Los off-by-one (usar < en vez de <=, contar desde 0 o desde 1) son de los errores más comunes y se esconden justo en el límite de un rango.

Cómo se aplica

Para cada rango, probá el valor límite y sus vecinos inmediatos: el mínimo y mínimo-1, el máximo y máximo+1. Si el rango válido es 8 a 64, los casos clave son 7, 8, 64 y 65.

En este playground

La longitud de la contraseña (64/65/66) y el contador de intentos de login (4 vs 5). También las fechas de reserva (borde de 30 días), la paginación (conteo de páginas y borde de cada página) y el tamaño del CV (límite de 2 MB).

Bugs relacionados:R-1L-1D-1N-1N-2U-2
🗂️

Tabla de decisión

Qué problema resuelve

Cuando el resultado depende de la COMBINACIÓN de varias condiciones, probar cada condición por separado no alcanza. Las combinaciones esconden casos que individualmente parecen correctos.

Cómo se aplica

Listá las condiciones, armá una tabla con todas sus combinaciones posibles y definí el resultado esperado de cada fila. Después diseñás un caso de prueba por cada combinación relevante.

En este playground

La inscripción a cursos combina dos condiciones: prerequisito completado (sí/no) y cupo disponible (sí/no). Cuatro combinaciones, cuatro resultados esperados (inscrito, lista de espera, rechazado). Algunas filas no se respetan, ni en la UI ni en la API.

Bugs relacionados:I-1I-3I-4
🔀

Transición de estados

Qué problema resuelve

Un objeto con ciclo de vida (un curso que pasa por inscrito, en progreso, completado…) tiene transiciones permitidas y prohibidas. El error típico: permitir un salto que debería estar prohibido, o no proteger un estado terminal.

Cómo se aplica

Modelá los estados y las transiciones válidas en un diagrama. Después diseñá casos para las transiciones válidas (deben funcionar) Y para las inválidas (deben ser rechazadas). Las inválidas son las que más bugs revelan.

En este playground

El ciclo de vida del curso: Inscrito → En progreso → Completado → Certificado, con Abandonado como estado terminal. Probá las transiciones prohibidas: ¿podés retomar un curso abandonado? ¿podés certificar dos veces?

Bugs relacionados:P-1P-2

Conceptos relacionados

No son técnicas de diseño ISTQB clásicas, pero aparecen en los bugs y conviene tenerlos en el radar.

Idempotencia

Una operación es idempotente si ejecutarla varias veces produce el mismo resultado que ejecutarla una vez. Generar un certificado debería serlo: dos clics, un solo certificado.

Consistencia UI ↔ estado

Lo que muestra la pantalla debe reflejar el estado real del sistema. Un badge que dice 'Inscrito' cuando en verdad estás en lista de espera es un bug de consistencia, aunque la lógica de fondo sea correcta.

Paridad UI ↔ API

Las reglas de negocio deben valer en todas las capas. Si la UI bloquea algo pero la API lo permite, un atacante (o un test) que llame al endpoint directo saltea la validación.

Ya conocés las técnicas. Ahora leé la especificación y empezá a comparar la spec con el comportamiento real.