Valores límite
En resumen: Un límite es el último valor de una partición y el primero de la siguiente. Con dos puntos pruebas el límite y su vecino de la otra partición: 49,99 y 50,00 €. Con tres puntos, también los vecinos de ambos lados: 49,99, 50,00 y 50,01 €. Así se atrapan «>» en lugar de «>=», los redondeos y los errores por uno, que un representante del medio de la partición nunca ve.
Problema
Las pruebas pasaron, el límite no
De la lección anterior tienes tres pruebas del envío: 0 €, 30 € y 80 €. Todas pasan. El programador escribió:
el envío es gratis si el total es > 50
Un carrito de 50,00 € paga 4,90 €. La prueba con 80 € es de la misma partición y pasa, porque 80 es a la vez > 50 y >= 50. Un representante del medio de la partición no puede ver dónde termina exactamente la partición.
La idea
El límite
Las particiones del envío están ordenadas: vacío, de pago, gratis. El lugar donde una partición termina y empieza la siguiente es el límite:
| Partición | Desde | Hasta |
|---|---|---|
| carrito vacío | 0 € | 0 € |
| envío de pago | 0,01 € | 49,99 € |
| envío gratis | 50,00 € | sin límite superior |
Los valores límite son el valor más pequeño y el más grande de cada partición. Ahí los errores se concentran más, porque ahí el programador decide «>» o «>=», redondea, cuenta desde 0 o desde 1. Un trazo equivocado en el código mueve el límite un paso. El paso para los importes es un céntimo.
El análisis de valores límite solo funciona con particiones ordenadas: importes, cantidades, fechas. Un método de pago no tiene «antes» ni «después».
La idea
Dos puntos y tres puntos
Hay dos maneras.
Con dos puntos: en cada límite pruebas el valor límite y su vecino de la otra partición. Para el envío: 0 y 0,01 €; 49,99 y 50,00 €. Cuatro pruebas.
Con tres puntos: para cada valor límite pruebas ese valor y sus dos vecinos. Alrededor de 50,00 €: 49,99, 50,00 y 50,01 €.
¿Por qué tres? Imagina un código que dice «el envío es gratis si el total es exactamente 50». Con dos puntos: 49,99 paga, 50,00 es gratis. Pasa. Con tres puntos, 50,01 € tiene que ser gratis, y el código cobra 4,90 €. Atrapado.
Tres puntos cuestan más pruebas y atrapan más errores. Cuál elegir depende del riesgo: para el pago valen la pena, para el color de un botón no.
Más precisamente, para curiosos
ISTQB CTFL v4.0.1 describe la técnica en la sección 4.2.2 (análisis de valores límite) con las dos variantes: BVA de 2 valores y BVA de 3 valores. La cobertura es el número de valores límite probados (con sus vecinos, en el caso de tres puntos) sobre el total. Según el plan de estudios, tres puntos son más rigurosos: atrapan errores que dos puntos dejan pasar.
La técnica se apoya en las particiones de equivalencia. Sin particiones no está claro dónde están los límites, y sin límites las particiones pierden los errores más comunes.
Pruébalo
¿Qué valores?
La idea
49,99 no es 30
49,99 € y 30 € están en una misma partición. Entonces, ¿por qué 49,99 es la mejor prueba?
Porque algunos errores solo se ven junto al límite. Si el código redondea el total a euros enteros antes de comparar, 49,99 € se convierte en 50 € y el envío pasa a ser gratis. 30 € redondeado sigue siendo 30, y la prueba pasa.
Una buena prueba está donde el error se mostraría. El medio de la partición es el lugar más seguro, y por eso es el peor lugar para una prueba.
Pruébalo
Los límites del envío
Escribe las pruebas de los límites del envío, con dos puntos. Atrapa todos los errores con las menos filas posibles.
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í | |
| 0,01 | no | 4,90 |
| 49,99 | no | 4,90 |
| 50 | no | 0 |
Cuatro filas: 0 € (rechazado), 0,01 € (4,90 €), 49,99 € (4,90 €), 50,00 € (0,00 €). 50,00 € atrapa «>» en lugar de «>=». 49,99 € atrapa el redondeo y el umbral escrito como 5 € en lugar de 50 €. Si pones 30 € en lugar de 49,99 €, el redondeo se escapa. Si pones 80 € en lugar de 50,00 €, se escapa «>».
La idea
Los límites están en todas partes
Siempre que una regla tiene un número, tiene un límite:
- Cantidades: como mucho 10 unidades de un producto. 10 se acepta, 11 se rechaza. Y desde abajo: añades al menos 1 unidad, así que 0 se rechaza.
- Días: devoluciones dentro de los 14 días desde la recepción. Recibido el 1 de octubre: el 15 de octubre se acepta, el 16 de octubre se rechaza.
- Hora: el código vale hasta el 31 de octubre. 23:59, y las 00:00 del 1 de noviembre. ¿Y con el reloj de quién?
- Dos límites a la vez: el límite es sobre las unidades en el carrito, no sobre lo que se añade. 9 en el carrito más 1 son 10 y se acepta. 10 más 1 son 11 y se rechaza.
Un valor límite suele abrir una pregunta que el requisito no hizo. «Dentro de los 14 días»: ¿inclusive? ¿Desde la recepción o desde la entrega? Eso también es revisión: el diseño de pruebas hecho pronto es la mejor lista de comprobación para los requisitos.
Ejercicio
Los límites del tope y de los días
1. El límite del carrito. Hay dos límites: sobre la cantidad que se añade y sobre las unidades que quedan en el carrito después de añadir.
Escribe las pruebas de los dos límites del tope: cuántas unidades se añaden (0 y 1) y cuántas quedan en el carrito (10 y 11). 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 |
|---|---|---|---|
| 5 | 0 | sí | 5 |
| 5 | 1 | no | 6 |
| 9 | 1 | no | 10 |
| 10 | 1 | sí | 10 |
Cuatro filas: (5, añadir 0) se rechaza; (5, añadir 1) pasa a 6; (9, añadir 1) pasa a 10; (10, añadir 1) se rechaza y se quedan 10. La fila (9, 1) atrapa el código que rechaza la unidad número 10. La fila (10, 1) atrapa el código que deja entrar la número 11, el que compara solo lo que se añade y el que vacía el carrito al rechazar. Si todas las filas parten de un carrito vacío, las dos últimas se escapan.
2. Días y cantidades. Encuentra los valores límite.
Test
Ponte a prueba
Lecciones relacionadas
Sección «Lecciones relacionadas»- Se basa en: Por qué fallan los programas · El buen requisito · Criterios de aceptación · Particiones de equivalencia
- Continúa en: Tablas de decisión · Transiciones de estado · Cobertura del código · Pruebas basadas en la experiencia
- Ejercicios sobre el tema: Técnicas de diseño de pruebas