Particiones de equivalencia
En resumen: Los valores que una regla trata de la misma manera forman una partición de equivalencia. 30 € y 40 € son una sola partición para el envío: si un total está bien, el otro también. Por eso basta una prueba por partición. La cobertura es cuántas particiones se prueban. Las particiones inválidas se prueban de una en una, para que un error no se esconda detrás de otro.
Problema
Veinte pruebas, una idea
El tester recibe la regla del envío y escribe pruebas: un carrito de 5 €, 10 €, 15 €, 20 € y así hasta 45 €. Luego 55 €, 60 € y así hasta 100 €. Veinte pruebas, todas pasan.
Después del lanzamiento un cliente pulsa «Pedir» con el carrito vacío y obtiene un pedido de 0,00 € con 4,90 € de envío.
Las veinte pruebas comprobaban dos cosas: envío de pago y envío gratis. Diez veces cada una. La tercera cosa, el carrito vacío, nadie la comprobó.
La idea
Técnicas de caja negra
Probarlo todo es imposible. Los totales posibles de un carrito son millones. Hace falta una manera de elegir pocas pruebas que digan mucho. Eso es el diseño de pruebas, y este módulo trata de sus técnicas.
Las cuatro primeras son técnicas de caja negra: las pruebas salen de la regla, de la especificación, no del código. El tester ve la entrada y la salida. Lo que hay dentro no hace falta.
| Técnica | Qué pregunta | Lección |
|---|---|---|
| particiones de equivalencia | ¿qué valores se comportan de la misma manera? | esta |
| valores límite | ¿dónde termina una partición y empieza la siguiente? | la siguiente |
| tabla de decisión | ¿qué pasa con cada combinación de condiciones? | la tercera |
| transiciones de estado | ¿qué pasa a lo largo del camino de un pedido? | la cuarta |
Después vienen las técnicas de caja blanca (desde el código) y las basadas en la experiencia.
La idea
Una partición, una prueba
La regla: «El envío es gratis desde 50,00 € inclusive, si no es de 4,90 €. Un carrito vacío no se puede pedir».
Esa regla divide los totales en grupos que trata de la misma manera:
| Partición | Totales | Comportamiento |
|---|---|---|
| carrito vacío | 0 € | rechazado |
| envío de pago | de 0,01 a 49,99 € | 4,90 € |
| envío gratis | desde 50,00 € | 0,00 € |
Cada grupo es una partición de equivalencia. Si el sistema calcula bien 30 €, casi seguro que calcula bien también 40 €. Por eso basta una prueba por partición, un representante de la partición.
Cuántas de las particiones se prueban es la cobertura de particiones. Las veinte pruebas del principio tenían una cobertura de 2 de 3. Tres pruebas, una por partición, tienen 3 de 3.
Pruébalo
¿Cuál es una sola partición?
La idea
La tabla de casos de prueba
En las tareas de abajo escribes los casos de prueba como una tabla: una entrada y un resultado esperado por fila. «Ejecutar» los ejecuta contra dos cosas:
- el sistema correcto, donde todas las filas tienen que pasar: si no pasan, tu resultado esperado está mal;
- versiones de la tienda con un error cada una, de los que tienen las tiendas de verdad. Un buen conjunto de pruebas falla en cada una de ellas.
La respuesta dice cuántos errores atrapas y dónde buscar el resto, no qué fila añadir.
Una celda vacía en el resultado esperado no se comprueba. Los importes se escriben como 49,99, y «Rechazado» es «sí» o «no».
Pruébalo
Las particiones del envío
Escribe una prueba para cada partición de la regla del envío. Cuantas menos filas, mejor.
La regla: El envío es gratis en un pedido desde 50 € (incluidos), si no, cuesta 4,90 €. Un carrito vacío no se puede pedir.
| Entrada | Esperado | El sistema correcto | |||
|---|---|---|---|---|---|
| # | Total del carrito | Rechazado | Envío | ||
Una celda de resultado vacía no se comprueba. Los importes se escriben como 49,99.
Solución
| Total del carrito | Rechazado | Envío |
|---|---|---|
| 0 | sí | |
| 30 | no | 4,90 |
| 80 | no | 0 |
Tres filas, tres particiones: 0 € (rechazado), 30 € (4,90 €), 80 € (0,00 €). El carrito de 30 € atrapa la versión en la que el umbral está escrito como 5 € en lugar de 50 €. El carrito de 0 € atrapa el carrito vacío que paga envío. Y 40 € junto a 30 € no atrapa nada nuevo: las dos filas son una misma partición.
La idea
Particiones válidas e inválidas
Las particiones son de dos tipos. Las válidas son los valores que la regla procesa. Las inválidas son las que el sistema tiene que rechazar: un total negativo, un número negativo de unidades, texto en lugar de un número.
Cuando hay varias entradas, cada una tiene sus particiones. El límite del carrito («como mucho 10 unidades de un producto, añades al menos 1 unidad») tiene dos entradas: cuántas hay en el carrito y cuántas se añaden. Las particiones del resultado son tres:
- se acepta añadir: 2 en el carrito, añado 3, pasa a 5;
- se rechaza porque serían más de 10: 5 en el carrito, añado 8;
- se rechaza porque la cantidad es inválida: añado -2 o 0.
Y una regla para las particiones inválidas: una por prueba. Si una fila tiene a la vez -2 unidades y 15 en el carrito, el sistema la rechazará. ¿Pero por cuál? Si falta la comprobación de un número negativo, la prueba pasa igual, porque el límite salvó el día.
Más precisamente, para curiosos
ISTQB CTFL v4.0.1 describe la técnica en la sección 4.2.1 (partición de equivalencia). La cobertura se mide como el número de particiones probadas sobre todas las particiones, en porcentaje. Con varias entradas, la medida más sencilla es la cobertura Each Choice: cada partición de cada entrada se prueba al menos una vez. No exige todas las combinaciones entre las entradas. Las combinaciones son el tema de las tablas de decisión y de las pruebas por pares.
Las particiones no son solo para las entradas. También se dividen las salidas (aceptado, rechazado), y los tiempos (antes del plazo, después), y todo lo que la regla trata de manera distinta.
Ejercicio
Las particiones del límite
1. El límite del carrito. Aquí hay dos entradas, y las particiones siguen el resultado.
Escribe una prueba para cada partición: aceptado, rechazado por el límite, rechazado por una cantidad inválida. Comprueba también lo que queda en el carrito.
La regla: En el carrito puede haber como mucho 10 unidades de un producto. Añadir por encima de 10 se rechaza con un mensaje, y el carrito queda igual. Se añade al menos 1 unidad.
| Entrada | Esperado | El sistema correcto | ||||
|---|---|---|---|---|---|---|
| # | En el carrito | Añado | Rechazado | En el carrito después | ||
Una celda de resultado vacía no se comprueba. Los importes se escriben como 49,99.
Solución
| En el carrito | Añado | Rechazado | En el carrito después |
|---|---|---|---|
| 2 | 3 | no | 5 |
| 5 | 8 | sí | 5 |
| 3 | -2 | sí | 3 |
Tres filas: (2, añadir 3) se acepta y pasa a 5; (5, añadir 8) se rechaza, y el carrito se queda en 5; (3, añadir -2) se rechaza, y el carrito se queda en 3. Si todas las filas parten de un carrito vacío, se escapan dos errores: la versión que compara con 10 solo las unidades añadidas, y la que vacía el carrito al rechazar. Con un carrito vacío las dos parecen correctas.
La idea
Lo que la caja negra no ve
Las particiones salen de la regla. Y la regla no lo dice todo sobre el código.
Supón que en el código se ha quedado una línea de la tarifa vieja: «desde 100 € el envío vuelve a ser 4,90 €». Para la regla, 80 € y 150 € son una misma partición. Para el código son dos. La prueba con 80 € pasará, y el error se quedará.
La caja negra no puede ver una partición que existe solo en el código. Por eso hay otras técnicas: la caja blanca mira el código, y la experiencia sugiere dónde suelen esconderse cosas así. Y el límite entre particiones, donde los errores se concentran más, es la siguiente lección.
Test
Ponte a prueba
Lecciones relacionadas
Sección «Lecciones relacionadas»- Se basa en: Tipos de requisitos · Cuando una tabla es más clara · Criterios de aceptación · Por qué pronto
- Continúa en: Valores límite · Tablas de decisión · Transiciones de estado · Pruebas por pares (pairwise)
- Ejercicios sobre el tema: Técnicas de diseño de pruebas