Ir al contenido
wannacode

Esquema del escenario y Ejemplos

En resumen: Cinco escenarios que se diferencian solo en el importe se convierten en un único Esquema del escenario con una tabla de Ejemplos: cada fila es un ejemplo distinto. Unos Antecedentes reúnen el comienzo común de todos los escenarios. Una Regla agrupa los ejemplos bajo la regla de negocio que muestran, como las tarjetas verdes bajo la azul.

Problema

Lo mismo cinco veces

Alguien describió el envío con cinco escenarios. Se diferencian solo en el importe: 30, 49,99, 50, 50,01 y 120 €. Por lo demás son idénticos, línea por línea.

Lees el archivo y tienes que comparar cinco bloques para ver qué es distinto. Y cuando el coste pasa a ser 5,90 €, corriges tres sitios y olvidas el cuarto.

La idea

Un esquema y ejemplos

Los escenarios que se diferencian solo en sus valores se convierten en un Esquema del escenario. En lugar de los valores hay nombres entre <>, y los valores están en una tabla de Ejemplos:

# language: es
Característica: Envío gratis
Esquema del escenario: Envío de un pedido de <importe> €
Dado un carrito de <importe> €
Cuando hago el pedido
Entonces el envío es de <envío> €
Ejemplos:
| importe | envío |
| 30,00 | 4,90 |
| 49,99 | 4,90 |
| 50,00 | 0,00 |
| 120,00 | 0,00 |

Cada fila de la tabla es un escenario distinto. Este esquema se ejecuta cuatro veces. Si falla, el informe dice qué fila de Ejemplos.

Ahora las diferencias se ven de un vistazo: una columna de importes y una columna de envío. La tabla se parece mucho a lo que escribe el dueño en un correo: «hasta 49,99 € pagas 4,90 €, desde 50 € nada».

Pruébalo

¿Qué fila?

1. Los Ejemplos del envío ya tienen 49,99 € y 50,00 €. ¿Qué fila aporta menos?
2. ¿Qué hace una tabla de datos (en un paso) que no hacen los Ejemplos?
3. ¿Qué pertenece a unos Antecedentes?

Ejercicio

Un esquema para el envío

1. De copias a un esquema. El punto de partida son tres escenarios copiados.

Convierte los escenarios de 30 € y 50 € en un único Esquema del escenario con Ejemplos. Añade también las filas que cazan los últimos errores: la comprobación te dice dónde mirar.

GherkinEnvío gratis

La idea

Una tabla de datos

A veces un paso necesita varias filas de entrada. Por ejemplo, un carrito con varios productos:

# language: es
Característica: El importe del carrito
Escenario: Un carrito con dos productos
Dado un carrito con los productos:
| producto | precio | cantidad |
| Camiseta | 20,00 | 2 |
| taza | 9,99 | 1 |
Cuando hago el pedido
Entonces el importe es de 49,99 €

Esto es una tabla de datos. Es la entrada de un paso, y el escenario se ejecuta una vez. Los Ejemplos hacen lo contrario: repiten todo el escenario por cada fila.

El vocabulario de las tareas de aquí solo tiene pasos sencillos, así que la tabla de datos es solo para leer.

La idea

Antecedentes

Si todos los escenarios de un archivo empiezan igual, por ejemplo «el cliente ha iniciado sesión», ese comienzo puede pasar a unos Antecedentes. Sus pasos se ejecutan antes de cada escenario que hay debajo, como si estuvieran escritos en él.

# language: es
Característica: Como mucho 10 unidades de un producto
Antecedentes:
Dado un carrito con 9 unidades del producto
Escenario: La décima unidad se acepta
Cuando añado 1 unidad
Entonces en el carrito hay 10 unidades del producto
Escenario: Dos más se rechazan
Cuando añado 2 unidades
Entonces no se permite añadir

Ten cuidado con ellos. Quien lee el segundo escenario no puede ver dónde empieza sin volver arriba. Por eso unos antecedentes son cortos y contienen solo lo que de verdad es común.

La idea

Regla

En el Example Mapping las tarjetas azules son las reglas y las verdes los ejemplos que hay debajo. En Gherkin lo mismo se dice con la palabra clave Regla: debajo están los escenarios que la muestran.

# language: es
Característica: Como mucho 10 unidades de un producto
Regla: En el carrito hay como mucho 10 unidades de un producto
Escenario: La décima unidad se acepta
Dado un carrito con 9 unidades del producto
Cuando añado 1 unidad
Entonces en el carrito hay 10 unidades del producto
Regla: Se añade al menos 1 unidad
Escenario: Cero unidades no es añadir
Dado un carrito con 5 unidades del producto
Cuando añado 0 unidades
Entonces no se permite añadir

Ahora el archivo dice no solo qué comprobamos, sino también por qué. Si un escenario falla, ves enseguida qué regla está rota. Cada regla puede tener sus propios antecedentes.

Ejercicio

El límite con reglas

2. Dos reglas. Las reglas están escritas, sin nada debajo.

Pon ejemplos bajo cada regla (con un esquema o con escenarios) para que se cacen los seis errores del límite.

GherkinComo mucho 10 unidades de un producto
Más precisamente, para curiosos

La referencia de Gherkin (Cucumber):

  • «Rule» está en Gherkin desde la versión 6. Su finalidad es representar una regla de negocio que debe implementarse;
  • «Scenario Outline» tiene un sinónimo, «Scenario Template». Puede haber varios Ejemplos bajo un mismo esquema, cada uno con su nombre, por ejemplo «Alrededor del límite» y «Lejos del límite»;
  • hay unos antecedentes por característica o por regla. La referencia aconseja mantenerlos cortos: si pasan de 4 líneas, probablemente parte de los detalles pertenece a pasos de nivel más alto;
  • además de una tabla de datos, un paso puede llevar también un texto más largo entre """ (un doc string), por ejemplo el texto de un correo.

Elegir las filas de los Ejemplos es diseño de pruebas: clases de equivalencia y valores límite. Tienen su propio módulo más adelante. Por ahora la regla es: una fila de cada clase y una de cada lado de cada límite.

Test

Ponte a prueba

1. ¿Qué es un Esquema del escenario?
2. El esquema tiene el paso «Dado un carrito de <cantidad> €», y la columna de Ejemplos es «importe». ¿Qué pasa?
3. ¿Qué muestra una Regla?
4. Los Antecedentes han crecido hasta 9 líneas. ¿Qué haces?

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