Ir al contenido
wannacode

Lo que la cobertura no dice

En resumen: La cobertura de requisitos cuenta cuántos requisitos tienen al menos una prueba. No dice si la prueba caza el error, si comprueba todo el requisito, qué pasa cuando se encuentran dos reglas, ni lo que no se ha escrito en absoluto. Por eso junto al número siempre se pregunta «qué no se ha comprobado, y por qué».

Problema

Cien por cien, y aun así mal

El informe antes de poner en marcha la campaña de otoño está en verde: todos los requisitos están cubiertos, todas las pruebas pasan.

Una semana después atención al cliente recibe una queja. Un carrito de 52,00 € con OTONO10, 46,80 € después del descuento. El carrito dice «Envío: gratis», pero al pagar se le cobran 4,90 € al cliente. El carrito cuenta el umbral antes del descuento, y el pago después.

El envío tiene pruebas. El código promocional tiene pruebas. Pero ninguna prueba ejecuta las dos reglas juntas. Y cuando QA pregunta qué respuesta es la correcta, resulta que nadie lo ha decidido: ¿el umbral de 50 € se cuenta antes del descuento o después?

La idea

Qué cuenta el número

La cobertura de requisitos cuenta los requisitos que tienen al menos una prueba. Cuatro de cuatro: 100 %. Nada más.

El número no dice:

  • Si la prueba caza el error. Una prueba con 120,00 € cubre «gratis desde 50,00 €», pero no caza «más de 50 €». La marca es real, la prueba es débil.
  • Si comprueba todo el requisito. «El código da un 10 % de descuento y no se aplica a los productos rebajados» son dos reglas en una frase. Una prueba del 10 %, y la fila está cubierta.
  • Qué pasa entre requisitos. La matriz tiene una fila por regla, no por encuentro de dos reglas. El carrito de 52,00 € con un código no está en ninguna fila.
  • Lo que no se ha escrito. Hay filas solo para los requisitos de la lista. Un requisito que nadie escribió no hace una fila vacía. Simplemente falta.

Estos son los límites de la cobertura. La cobertura es útil. El cero es una alarma, y una fila vacía es un hueco real. Pero el 100 % solo dice que no hay filas vacías.

Más precisamente, para curiosos

La cobertura se mide siempre contra algo: requisitos, clases de entrada, límites, transiciones, ramas del código. Los verás en el módulo «Técnicas de diseño de pruebas». El 100 % según un criterio significa que todos sus elementos se han ejercitado al menos una vez. No significa que no haya defectos: las pruebas muestran que hay defectos, no que no los haya. Es el primero de los siete principios de ISTQB CTFL v4.0.1 (sección 1.3).

ISTQB CTFL v4.0.1 (sección 1.4.4) cita la evaluación de la cobertura como uno de los beneficios de la trazabilidad. La cobertura responde a la pregunta «¿hay una prueba para cada requisito?». Lo bien que comprueba la prueba es otra pregunta, con sus propias medidas.

Pruébalo

¿Dónde miente el número?

1. El requisito «El envío es gratis desde 50,00 € inclusive» tiene una prueba: «Un carrito de 120,00 €: el envío es gratis». El programa dice «más de 50 €» en lugar de «desde 50 €». ¿Fallará la prueba?
2. El requisito es «Un código promocional da un 10 % de descuento y no se aplica a los productos rebajados». La única prueba es «Una camiseta de 20,00 € con OTONO10: 18,00 €». ¿Qué no se ha comprobado?
3. El envío tiene pruebas. El código promocional tiene pruebas. ¿Qué no comprueba ninguna de ellas?
4. El informe dice «95 % de cobertura de requisitos». ¿Qué pregunta te dice más?

Pruébalo

Cien por cien en los descuentos

Marca los vínculos, después los dos pares de pruebas que comprueban lo mismo. Mira cuánta es la cobertura y qué sigue sin comprobarse.

Tests

  • T-1: Un carrito de 30,00 €: el envío cuesta 4,90 €.
  • T-2: Un carrito de 120,00 €: el envío es gratis.
  • T-3: Un carrito de 25,00 €: el envío cuesta 4,90 €.
  • T-4: Una camiseta de 20,00 € con OTONO10: 18,00 €.
  • T-5: Un cliente fiel, unos vaqueros rebajados de 40,00 €: 38,00 €.
  • T-6: Un cliente fiel con OTONO10, una camiseta de 20,00 €: 18,00 €, no 17,00 €.
  • T-7: Una camiseta de 30,00 € con OTONO10: 27,00 €.

Pulsa la celda donde el test comprueba el requisito; otra vez para quitar la relación. Las flechas se mueven entre las celdas, Espacio o Enter marca.

RequisitosT-1: Un carrito de 30,00 €: el envío cuesta 4,90 €.T-2: Un carrito de 120,00 €: el envío es gratis.T-3: Un carrito de 25,00 €: el envío cuesta 4,90 €.T-4: Una camiseta de 20,00 € con OTONO10: 18,00 €.T-5: Un cliente fiel, unos vaqueros rebajados de 40,00 €: 38,00 €.T-6: Un cliente fiel con OTONO10, una camiseta de 20,00 €: 18,00 €, no 17,00 €.T-7: Una camiseta de 30,00 € con OTONO10: 27,00 €.Cubierto por
R-1 El envío es gratis desde 50,00 € inclusive, y en otro caso cuesta 4,90 €.0
R-2 Un código promocional da un 10 % de descuento y no se aplica a los productos rebajados.0
R-3 Un cliente fiel recibe un 5 % de descuento, también en productos rebajados.0
R-4 Los descuentos no se suman: se aplica el mayor.0
Comprueba0000000
¿Qué tests son redundantes (repiten otro test)?

La idea

El error está entre ellas

La mayoría de las reglas de la tienda son sencillas por sí solas. El envío es una comparación. El código promocional es un 10 %. Se complica cuando se encuentran:

  • el umbral del envío y el descuento: ¿antes o después?
  • el código y una devolución: si se devuelve el pedido pagado con el código, ¿se puede volver a usar el código?
  • el código y la fidelidad en un producto rebajado: el código no se aplica, la fidelidad sí, así que 5 %. La respuesta se deduce de las reglas, pero no hay prueba para ella.

Las dos primeras preguntas no tienen fila en la matriz, porque no tienen requisito. La tercera tiene respuesta, pero está entre dos filas. Esto es también lo más valioso que puedes hacer con la matriz: mirar pares de filas y preguntar «¿y cuando se aplican las dos?». A veces la respuesta es una prueba nueva. Más a menudo es una pregunta abierta para el dueño, y después un requisito nuevo.

Así que el lugar vacío de la matriz no es solo una fila vacía. A veces está entre dos llenas.

La idea

Cuando el número se convierte en objetivo

Si la dirección pide «100 % de cobertura para el viernes» y mira solo eso, lo conseguirá. Las marcas se pondrán con prisa, algunas donde la prueba solo pasa cerca del requisito. El número crece, y la comprobación no.

Por eso en el informe junto a la cobertura están otras preguntas:

  • ¿Qué no está cubierto, y por qué? Una lista, no un porcentaje.
  • ¿Qué importancia tiene la parte sin cubrir? El color de un botón, o el pago.
  • ¿Las pruebas están en los límites? 49,99 y 50,00 €, el día 14 y el día 15.
  • ¿Qué dicen los defectos? Si después del lanzamiento los errores vienen de un solo sitio, las pruebas de ahí son débiles, diga lo que diga el número.

La calidad de las pruebas se mide de otra manera: se ejecutan las pruebas contra una versión del sistema con un error real, y se ve si fallan. Más adelante en el curso lo harás con cada tabla y cada escenario tuyo.

Más precisamente, para curiosos

La observación de que una medida que se convierte en objetivo deja de ser una buena medida se conoce como ley de Goodhart (por el economista Charles Goodhart). La formulación en esta forma vino después, de la antropóloga Marilyn Strathern.

Ejercicio

La prueba que falta

1. Qué añadir. Las matrices están completas. ¿Qué prueba aporta algo nuevo?

1. La matriz del envío está completa: las pruebas son 30,00 €, 25,00 € y 120,00 €. ¿Qué prueba nueva aporta más?
2. Los requisitos de descuento están cubiertos. ¿Qué prueba falta para «Un código promocional no se aplica a los productos rebajados»?
3. La prueba «Un cliente fiel con OTONO10, una camiseta de 20,00 €: 18,00 €» está enlazada también con la fidelidad. El programa no da el 5 % en absoluto. ¿Fallará la prueba?

Test

Ponte a prueba

1. ¿Qué cuenta la cobertura de requisitos?
2. Todos los requisitos están cubiertos y todas las pruebas pasan. ¿Qué puedes decir?
3. ¿Por qué la matriz no muestra el error que hay entre dos reglas?
4. La dirección quiere «100 % de cobertura» para el viernes. ¿Qué es lo más probable si esa es la única medida?
5. Si la cobertura no lo dice, ¿cómo averiguas si las pruebas son buenas?

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