Muchas reglas de negocio dependen de más de una condición. Por ejemplo, un sistema puede aplicar un descuento según el tipo de cliente, el importe de la compra y si existe una promoción activa. Probar solo una condición por separado puede dejar combinaciones importantes sin cubrir.
Las tablas de decisión son una técnica de diseño de pruebas que permite ordenar condiciones, combinaciones y acciones esperadas. Son especialmente útiles cuando una decisión depende de varias reglas.
En este tema veremos cómo construir tablas de decisión y cómo convertirlas en casos de prueba.
Una tabla de decisión es una representación tabular de condiciones y acciones. Cada columna suele representar una regla o combinación posible. Cada fila representa una condición o una acción.
La tabla ayuda a responder:
Esta técnica obliga a mirar la lógica completa, no solo casos aislados.
Una tabla de decisión suele tener dos partes:
Ejemplo simple:
| Regla 1 | Regla 2 | |
|---|---|---|
| Condición: usuario autenticado | Sí | No |
| Acción: permitir acceso | Sí | No |
En casos reales puede haber más condiciones y muchas más combinaciones.
Conviene usar esta técnica cuando:
No hace falta usar tablas de decisión para reglas simples con una sola condición. Su valor aparece cuando la lógica combinada se vuelve difícil de seguir mentalmente.
Una forma práctica de construirla es:
El objetivo no es hacer una tabla grande porque sí, sino aclarar la lógica y seleccionar pruebas con criterio.
Regla:
Condiciones:
Acción:
| R1 | R2 | R3 | R4 | |
|---|---|---|---|---|
| Autenticado | Sí | Sí | No | No |
| Administrador | Sí | No | Sí | No |
| Permitir acceso | Sí | No | No | No |
Esta tabla muestra que solo una combinación permite el acceso: usuario autenticado y administrador.
Cada regla puede convertirse en un caso de prueba:
| Regla | Caso de prueba | Resultado esperado |
|---|---|---|
| R1 | Acceder con usuario autenticado administrador. | Permitir acceso. |
| R2 | Acceder con usuario autenticado no administrador. | Rechazar acceso. |
| R3 | Acceder sin sesión, pero con un usuario que sería administrador. | Rechazar acceso y solicitar inicio de sesión. |
| R4 | Acceder sin sesión y sin rol administrador. | Rechazar acceso. |
En algunos contextos, R3 puede ser imposible porque si no hay sesión no se conoce el rol. En ese caso se marca como combinación no aplicable o se redefine la tabla.
No toda combinación teórica es posible en el sistema. Una tabla puede generar combinaciones que no tienen sentido en la realidad.
Ejemplo: "usuario no autenticado" y "rol administrador" puede ser una combinación difícil de probar porque si no hay sesión, el sistema no conoce el rol del usuario. Podemos representarlo con "No aplica" o simplificar la tabla.
Una tabla útil no solo enumera combinaciones, también ayuda a descubrir cuáles son válidas, imposibles o necesitan aclaración.
Regla:
Condiciones:
| R1 | R2 | R3 | R4 | R5 | R6 | R7 | R8 | |
|---|---|---|---|---|---|---|---|---|
| Cliente premium | Sí | Sí | Sí | Sí | No | No | No | No |
| Compra > $1000 | Sí | Sí | No | No | Sí | Sí | No | No |
| Promoción activa | Sí | No | Sí | No | Sí | No | Sí | No |
| Descuento esperado | 15% | 15% | 10% | 10% | 5% | 0% | 5% | 0% |
La tabla deja claro que, para clientes premium, la promoción activa no cambia el descuento porque aplican reglas propias del cliente premium.
A veces varias columnas producen la misma acción porque una condición no influye en ese caso. En el ejemplo anterior:
Podemos usar un guion para indicar "no importa":
| R1 | R2 | R3 | R4 | |
|---|---|---|---|---|
| Cliente premium | Sí | Sí | No | No |
| Compra > $1000 | Sí | No | - | - |
| Promoción activa | - | - | Sí | No |
| Descuento esperado | 15% | 10% | 5% | 0% |
La simplificación reduce casos cuando una condición no afecta la acción esperada.
Regla simplificada:
Tabla:
| R1 | R2 | R3 | R4 | |
|---|---|---|---|---|
| Ingresos suficientes | Sí | No | Sí | Sí |
| Deuda vencida | No | - | Sí | No |
| Documentación completa | Sí | - | - | No |
| Aprobar préstamo | Sí | No | No | No |
La tabla simplificada muestra reglas clave: si no hay ingresos suficientes, no importa el resto; si hay deuda vencida, no se aprueba; si falta documentación, tampoco se aprueba.
Una tabla completa muestra todas las combinaciones posibles. Si hay 3 condiciones binarias, hay 8 combinaciones. Si hay 4 condiciones binarias, hay 16. La cantidad crece rápido.
Una tabla simplificada combina reglas cuando algunas condiciones no importan para cierta acción. Esto reduce casos, pero debe hacerse con cuidado para no ocultar combinaciones relevantes.
Si una tabla se vuelve demasiado grande, puede ser señal de que la regla necesita dividirse, aclararse o probarse con más técnicas.
No todas las condiciones son solo Sí o No. Algunas pueden tener varios valores.
Ejemplo:
En estos casos la tabla puede crecer. Conviene agrupar valores equivalentes cuando sea correcto o dividir la regla en tablas más pequeñas.
Una tabla de decisión define combinaciones lógicas, pero los casos de prueba necesitan datos concretos.
Ejemplo para descuento:
| Regla | Condiciones | Datos concretos | Resultado esperado |
|---|---|---|---|
| R1 | Premium, compra > $1000 | Cliente premium, compra de $1500 | 15% de descuento. |
| R2 | Premium, compra no supera $1000 | Cliente premium, compra de $800 | 10% de descuento. |
| R3 | No premium, promoción activa | Cliente común, compra de $800, promoción activa | 5% de descuento. |
| R4 | No premium, sin promoción | Cliente común, compra de $800, promoción inactiva | 0% de descuento. |
Sin datos concretos, la tabla todavía no es un caso ejecutable.
Las tablas de decisión tienen varias ventajas:
También ayudan a justificar por qué se seleccionaron ciertos casos.
La técnica también tiene límites:
Si el foco está en cómo cambia un objeto de estado a estado, puede ser mejor usar transiciones de estado, técnica que veremos en el próximo tema.
Al usar tablas de decisión, algunos errores frecuentes son:
La tabla debe ayudar a pensar, no convertirse en una matriz incomprensible.
Para aplicar bien esta técnica conviene:
Las tablas de decisión son una técnica muy útil para probar reglas de negocio con múltiples condiciones. Permiten visualizar combinaciones, acciones esperadas y posibles huecos en la especificación.
Su valor está en ordenar la lógica antes de ejecutar pruebas. Una buena tabla ayuda a conversar con el equipo, aclarar reglas y derivar casos de prueba concretos.
En el próximo tema estudiaremos transiciones de estado, una técnica especialmente útil cuando el sistema cambia de un estado a otro según eventos o acciones.