Dado, Cuando, Entonces
En resumen: Un escenario de Gherkin es un ejemplo escrito en tres pasos: Dado (de dónde partimos), Cuando (qué ocurre), Entonces (qué se ve). «Y» y «Pero» continúan el paso anterior. Un buen escenario pasa en el sistema correcto y falla en el sistema con un error, por eso aquí cada escenario se ejecuta contra los dos.
Problema
Un ejemplo, tres lecturas
En la sesión sobre el envío hay una tarjeta verde: «Un carrito de 50,00 €: el envío es gratis». Todos asienten.
Después cada uno lo anota a su manera. El dueño lo guarda en un correo. QA escribe una prueba en una hoja de cálculo. El programador añade una comprobación en el código. Un mes después alguien cambia la regla, y solo se corrige uno de los tres sitios.
Hace falta un único registro para todos: el dueño lo lee como una frase, y la computadora lo ejecuta como una prueba.
La idea
Un escenario en tres pasos
El ejemplo se escribe como un escenario en tres pasos:
- Dado: de dónde partimos. Lo que hay antes de que pase nada;
- Cuando: qué ocurre. La acción de la que trata el escenario;
- Entonces: qué se ve. El resultado que se comprueba.
# language: esCaracterística: Envío gratis
Escenario: Pedido de justo 50 € Dado un carrito de 50,00 € Cuando hago el pedido Entonces el envío es gratisEl lenguaje se llama Gherkin. Las palabras al comienzo de cada línea son sus palabras clave. Característica es el título del archivo: aquello que describimos. Los escenarios van debajo, cada uno con su nombre.
El resto es texto normal. Por eso un escenario se lee como una frase: «Dado un carrito de 50 €, cuando hago el pedido, entonces el envío es gratis».
Pruébalo
¿Qué paso es?
La idea
«Y» y «Pero»
A veces el comienzo tiene dos partes, o hay dos comprobaciones. Entonces el paso siguiente empieza con Y o Pero:
# language: esCaracterística: Envío gratis
Escenario: Pedido justo por debajo del límite Dado un carrito de 49,99 € Cuando hago el pedido Entonces el pedido se acepta Pero el envío es de 4,90 €«Y» y «Pero» no son un tipo nuevo de paso. Toman el tipo del paso anterior: aquí «Pero» es una comprobación más. La diferencia entre los dos es solo para el lector. «Pero» dice «y aun así»: el pedido se acepta, pero el envío se paga.
La idea
Cómo se comprueba aquí un escenario
En las tareas escribes escenarios en un editor. Al lado está el vocabulario de pasos: las frases que el sistema entiende, como Dado un carrito de {importe} €. En lugar de {importe} escribes un número, por ejemplo 49,99. Un paso fuera del vocabulario no se puede ejecutar, y la comprobación te dice el más cercano.
Después los escenarios se ejecutan dos veces:
- Contra el sistema correcto. Aquí todos los escenarios tienen que pasar. Si uno falla, su expectativa es incorrecta: compruébala con la regla.
- Contra versiones con un error cada una. Cada una es la misma tienda con un defecto real:
>en lugar de>=en 50 €, el coste equivocado, un carrito vacío al que se cobra. Una versión así se llama mutante. Un buen escenario falla en ella, es decir, la caza.
La respuesta suena así: «Los escenarios pasan en el sistema correcto y cazan 2 de 3 errores. Un error se escapa: con un carrito vacío». No dice qué escenario falta. Dice dónde mirar.
Ejercicio
Los primeros escenarios
1. Justo 50 €. El nombre del escenario ya está.
Termina el escenario para un pedido de justo 50,00 €: Dado, Cuando, Entonces.
Solución
Característica: Envío gratis
Escenario: Pedido de justo 50 €
Dado un carrito de 50,00 €
Cuando hago el pedido
Entonces el envío es gratis
Solo el límite distingue «desde 50 €» de «más de 50 €». Con 49,99 € y con 60 € las dos reglas dan lo mismo, así que un escenario con esos importes no caza el error. Solo lo caza 50,00 €.
2. Tres casos. El escenario de 50 € ya está.
Añade un escenario justo por debajo del límite (con «Pero» o «Y») y un escenario para un carrito vacío. Los tres escenarios tienen que cazar los tres errores.
Solución
Característica: Envío gratis
Escenario: Pedido de 49,99 €
Dado un carrito de 49,99 €
Cuando hago el pedido
Entonces el pedido se acepta
Pero el envío es de 4,90 €
Escenario: Pedido de justo 50 €
Dado un carrito de 50,00 €
Cuando hago el pedido
Entonces el envío es gratis
Escenario: Carrito vacío
Dado un carrito vacío
Cuando hago el pedido
Entonces el pedido se rechaza
Por debajo del límite se ve el coste (4,90 €, no 4,99 €), en el límite se ve el envío gratis, y el carrito vacío no es «un pedido de menos de 50 €»: no se puede pedir en absoluto. Cada uno de los tres escenarios caza su propio error.
La idea
Un escenario es un ejemplo
Mira lo que escribiste. Cada escenario es una tarjeta verde del Example Mapping, solo que escrita de modo que se pueda ejecutar. Juntos, los escenarios son los criterios de aceptación de la historia.
Por eso un buen escenario tiene números concretos. «Dado un pedido grande» no se puede ejecutar, y cada uno lo lee de forma distinta. «Dado un carrito de 50,00 €» se lee de una sola manera.
Más precisamente, para curiosos
ISTQB CTFL v4.0.1, sección 2.1.3 («Testing as a Driver for Software Development»), describe el BDD (behavior-driven development, desarrollo guiado por el comportamiento) como un enfoque en el que el comportamiento deseado se expresa con casos de prueba en una forma sencilla de lenguaje natural que entienden las partes interesadas, normalmente en el formato Given/When/Then. La sección 4.5.2 lo llama formato orientado a escenarios de los criterios de aceptación, junto al formato orientado a reglas (una lista de comprobación o una tabla entrada → salida).
Las palabras clave. La referencia de Gherkin en la documentación de Cucumber («Gherkin Reference») da las palabras principales y su traducción a más de 70 idiomas. La primera línea # language: es le dice a Cucumber qué idioma usa el archivo; sin ella se supone inglés. En español son: Característica, Regla, Antecedentes, Escenario (o Ejemplo, las dos son lo mismo), Esquema del escenario, Ejemplos, Dado, Cuando, Entonces, Y, Pero. En lugar de la palabra clave de un paso también se puede escribir *.
Los dos idiomas. El mismo escenario en inglés:
# language: enFeature: Free delivery
Scenario: An order of exactly 50 € Given a cart of 50.00 € When I place the order Then delivery is freeEn el curso los escenarios están en el idioma de la página, porque el objetivo es que el negocio los lea. En un equipo internacional los escenarios se escriben en inglés, para que los lea cualquiera.
Los mutantes vienen de las pruebas de mutación: se planta a propósito un error pequeño en un programa y se mira si las pruebas lo cazan. Aquí los mutantes ya están hechos y describen el comportamiento de la tienda, no código.
Test
Ponte a prueba
Lecciones relacionadas
Sección «Lecciones relacionadas»- Se basa en: Por qué fallan los programas · Qué es una historia de usuario · Criterios de aceptación · Example Mapping: reglas, ejemplos, preguntas
- Continúa en: Esquema del escenario y Ejemplos · Qué, no cómo · Escenarios malos · Documentación viva
- Ejercicios sobre el tema: Escenarios con Gherkin