Ir al contenido
wannacode

Tablas de decisión

En resumen: En una tabla de decisión cada columna es una combinación de condiciones con un resultado, y cada columna es un caso de prueba. Tres condiciones con «sí» o «no» dan 8 columnas. Las columnas con el mismo resultado que se diferencian en una sola condición se fusionan con «—» (no importa), y hay menos pruebas. Una celda vacía o discutida es una pregunta para el dueño.

Problema

Tres pruebas, un precio equivocado

Conoces la regla de los descuentos: el código promocional da un 10 % y no vale para productos en oferta; los clientes fieles reciben un 5 %, también en productos en oferta; los descuentos no se suman, se aplica el mayor.

El tester escribe tres pruebas: un cliente con código (10 %), un cliente fiel sin código (5 %), un cliente sin nada (0 %). Pasan.

Después del lanzamiento un cliente fiel introduce un código en un producto que no está en oferta y obtiene un 15 %. Se probó cada condición. No se probó la combinación donde vivía el error.

La idea

Cada columna es una prueba

En la lección «Cuando una tabla es más clara» la tabla de decisión era un requisito. Ahora es diseño de pruebas: cada columna es un caso de prueba.

1 2 3 4 5 6 7 8
El código es válido sí sí sí sí no no no no
El producto está en oferta sí sí no no sí sí no no
El cliente es fiel sí no sí no sí no sí no
Descuento ? ? ? 10 % ? ? 5 % 0 %

Las pruebas del principio eran las columnas 4, 7 y 8. El error estaba en la columna 3. La cobertura de la tabla es cuántas columnas se prueban: aquí, 3 de 8.

La tabla completa es fácil de construir: las condiciones se convierten en filas, y las columnas son todas las combinaciones. Tres condiciones con «sí» o «no» dan 2 × 2 × 2 = 8.

Pruébalo

Columnas como pruebas

Rellena el descuento de cada una de las ocho columnas. Aquí las columnas de la tabla son filas: cada fila es un caso de prueba.

La regla: Un código promocional válido da un 10 %, pero no en productos en oferta. Un cliente fiel tiene un 5 %, también en los productos en oferta. Los descuentos no se suman: vale el mayor.

EntradaEsperadoEl sistema correcto
#Código válidoEn ofertaFielDescuento

El descuento se escribe como número: 10 o 10 %. Una celda de resultado vacía no se comprueba.

La idea

La fusión

Mira las columnas 1 y 5. Se diferencian solo en el código, y el resultado es el mismo: 5 %. Cuando el producto está en oferta y el cliente es fiel, el código no importa. Las dos columnas se fusionan en una, y en lugar del código se escribe «—».

1+5 2+6 3+4 7 8
El código es válido — — sí no no
El producto está en oferta sí sí no no no
El cliente es fiel sí no — sí no
Descuento 5 % 0 % 10 % 5 % 0 %

Ocho pruebas pasan a ser cinco. Esto es fusionar la tabla.

Su precio: fusionar dice «según la regla esta condición no importa». Pero la caja negra no sabe si el código está de acuerdo. Las columnas 3 y 4 se fusionan en «código sí, oferta no», y la columna 3 es justo donde el código daba un 15 %. Si de la columna fusionada pruebas solo a un cliente que no es fiel, el error se escapa.

Una prueba no puede ser «—»: en lugar de la raya eliges un valor. Elige aquel donde un error es más probable. Por eso para las reglas arriesgadas se prueba la tabla completa, y se fusiona cuando las pruebas son caras y el riesgo es pequeño.

Más precisamente, para curiosos

ISTQB CTFL v4.0.1 describe la técnica en la sección 4.2.3 (pruebas con tablas de decisión). Las condiciones y las acciones son filas, las columnas son las reglas (las combinaciones). La notación: «T» y «F» para las condiciones, «—» para una condición que no importa, «N/A» para una combinación irrealizable, «X» para una acción que ocurre. La cobertura es el número de columnas probadas sobre todas las realizables. La fusión (minimización) reduce el número de pruebas, pero el plan de estudios advierte de que así se pierde parte de la comprobación.

Pruébalo

Fusiona las columnas

Construye la tabla fusionada: como mucho 5 filas que sigan atrapando todos los errores. Donde la lección tiene «—», elige un valor.

La regla: Un código promocional válido da un 10 %, pero no en productos en oferta. Un cliente fiel tiene un 5 %, también en los productos en oferta. Los descuentos no se suman: vale el mayor.

EntradaEsperadoEl sistema correcto
#Código válidoEn ofertaFielDescuento

El descuento se escribe como número: 10 o 10 %. Una celda de resultado vacía no se comprueba.

La idea

Más de dos valores

«El código es válido» parece «sí» o «no». En la tienda no lo es. El código puede estar sin introducir, válido, caducado o ya usado, y cada uno le da al cliente algo distinto:

1 2 3 4 5
Se introduce un código no sí sí sí sí
Ha caducado N/A no sí no sí
Se ha usado N/A no no sí sí
El cliente ve el total sin código el descuento «El código ha caducado» «El código ya se usó» ?

Se ven dos cosas a la vez.

Combinaciones imposibles. Un código que no se introdujo no puede haber caducado. Esas columnas se marcan como imposibles (N/A) y no se prueban.

La celda vacía. Columna 5: el código ha caducado y además se ha usado. ¿Qué mensaje? La regla no lo dice. El tester no decide por el dueño. Esto es un hallazgo, y salió de la tabla antes de que hubiera código. Por eso el diseño de pruebas también es una revisión.

Las columnas crecen rápido: una condición con cuatro valores y dos con dos cada una dan 4 × 2 × 2 = 16. Con diez condiciones de «sí o no» son 1024. Entonces la regla se divide en tablas más pequeñas, y las combinaciones se eligen con otra técnica, como las pruebas por pares más adelante en el módulo.

Ejercicio

Las tablas del código

1. ¿Qué dice la tabla? Cuatro preguntas que encuentra el tester al escribir la tabla.

1. Se introduce el código, ha caducado y ya se usó. ¿Qué mensaje ve el cliente?
2. La condición «el código ha caducado» en la columna «no se introdujo código». ¿Qué va en la celda?
3. La condición del código tiene cuatro valores: sin código, válido, caducado, usado. La oferta y la fidelidad son «sí» o «no». ¿Cuántas columnas tiene la tabla completa?
4. El carrito es de 55 € antes del descuento y de 49,50 € después. ¿Cuánto es el envío?

Test

Ponte a prueba

1. Las pruebas son de las columnas 4, 7 y 8 de la tabla de descuentos. ¿Cuál es su cobertura?
2. ¿Qué es un caso de prueba en una tabla de decisión?
3. ¿Cuántas columnas tiene la tabla completa con 4 condiciones de «sí» o «no»?
4. ¿Cuándo se pueden fusionar dos columnas?
5. ¿Qué encuentra una tabla de decisión además de pruebas?
6. La tabla tiene 10 condiciones. ¿Qué haces?

Creado por Ivo Gergov como parte de la campaña de Evo Tech por una educación accesible en programación ·