Ir al contenido
wannacode

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?

1. Un carrito de 30 € y un carrito de 40 €. ¿Cuántas particiones son para la regla del envío?
2. ¿Cuántas particiones tiene la regla «gratis desde 50,00 € inclusive, si no 4,90 €, un carrito vacío no se puede pedir»?
3. Un carrito de 50,00 € y un carrito de 1000 €. ¿Están en una misma partición?
4. Un carrito de -10 €. ¿Qué es eso?

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.

EntradaEsperadoEl sistema correcto
#Total del carritoRechazadoEnvío

Una celda de resultado vacía no se comprueba. Los importes se escriben como 49,99.

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.

EntradaEsperadoEl sistema correcto
#En el carritoAñadoRechazadoEn el carrito después

Una celda de resultado vacía no se comprueba. Los importes se escriben como 49,99.

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

1. ¿Qué es una partición de equivalencia?
2. Las pruebas del envío son 10, 20, 30 y 40 €. ¿Cuál es la cobertura de particiones?
3. ¿Por qué las particiones inválidas se prueban una por prueba?
4. ¿Por qué esta es una técnica de caja negra?
5. ¿Qué no puede atrapar esta técnica por sí sola?

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