Desarrollo impulsado por el comportamiento: pepinillo

El pepinillo es un idioma que se usa para escribir Features, Scenarios, and Steps. El propósito de Gherkin es ayudarnos a redactar requisitos concretos.

Para comprender lo que queremos decir con requisitos concretos, considere el siguiente ejemplo:

Se debe evitar que los clientes ingresen detalles de tarjetas de crédito no válidas.

Versus

Si un cliente ingresa un número de tarjeta de crédito que no tiene exactamente 16 dígitos, cuando intenta enviar el formulario, debe volver a mostrarse con un mensaje de error que le advierte del número correcto de dígitos.

Este último no tiene ambigüedad y evita errores y es mucho más comprobable.

Gherkin está diseñado para crear requisitos más concretos. En Gherkin, el ejemplo anterior se ve así:

Feature

Comentarios al ingresar detalles de tarjetas de crédito no válidas Feature Definition

En las pruebas de usuario, hemos visto a muchas personas que cometen errores Documentación

Background True for all Scenarios Below

Given He elegido un artículo para comprar

And Estoy a punto de ingresar el número de mi tarjeta de crédito

Scenario - Número de tarjeta de crédito demasiado cortoScenario Definition

When Ingresé un número de tarjeta que tiene menos de 16 dígitos

And todos los demás detalles son correctos

And Presento el formularioSteps

Then el formulario debe volver a mostrarse

And Debería ver un mensaje informándome del número correcto de dígitos

Formato y sintaxis de pepinillo

Los archivos Gherkin son archivos de texto sin formato y tienen la extensión .feature. Cada línea que no esté en blanco debe comenzar con una palabra clave Gherkin, seguida de cualquier texto que desee. Las palabras clave son:

  • Feature

  • Scenario

  • Dado, cuándo, entonces y, pero (pasos)

  • Background

  • Esquema del escenario

  • Examples

  • "" "(Cadenas de documentos)

  • | (Tablas de datos)

  • @ (Etiquetas)

  • # (Comentarios)

  • *

Característica

los FeatureLa palabra clave se utiliza para describir una función de software y para agrupar los escenarios relacionados. Una característica tiene tres elementos básicos:

  • La palabra clave - Característica.

  • El nombre de la función, proporcionado en la misma línea que la palabra clave de la función.

  • Una descripción opcional (pero muy recomendable) que puede abarcar varias líneas, es decir, todo el texto entre la línea que contiene la palabra clave Característica y una línea que comienza con Escenario, Antecedentes o Esquema del escenario.

Además de un nombre y una descripción, las características contienen una lista de escenarios o esquemas de escenarios, y un fondo opcional.

Es convencional nombrar un .featurearchivo tomando el nombre de la función, convirtiéndolo a minúsculas y reemplazando los espacios con subrayados. Por ejemplo,

feedback_when_entering_invalid_credit_card_details.feature

Para identificar características en su sistema, puede utilizar lo que se conoce como una "plantilla de inyección de características".

Para <cumplir algún objetivo> como <tipo de usuario> quiero <a función>

Descripciones

Algunas partes de los documentos Gherkin no tienen que empezar con una palabra clave.

En las líneas que siguen a una Característica, escenario, esquema de escenario o ejemplos, puede escribir lo que quiera, siempre que ninguna línea comience con una palabra clave. Esta es la forma de incluir descripciones.

Guión

Para expresar el comportamiento de su sistema, adjunte uno o más escenarios con cada Característica. Es típico ver de 5 a 20 escenarios por función para especificar completamente todos los comportamientos relacionados con esa función.

Los escenarios siguen el siguiente patrón:

  • Describe un contexto inicial

  • Describe un evento

  • Describe un resultado esperado

Comenzamos con un contexto, describimos una acción y verificamos el resultado. Esto se hace con pasos. Gherkin proporciona tres palabras clave para describir cada uno de los contextos, acciones y resultados como pasos.

  • Given - Establecer contexto

  • When - Realizar acción

  • Then - Verificar resultado

Estas palabras clave proporcionan legibilidad del escenario.

Example

Scenario - Retirar dinero de la cuenta.

  • Given Tengo $ 100 en mi cuenta.

  • When Solicito $ 20.

  • Then Se deben dispensar $ 20.

Si hay varios Given o When pasos uno debajo del otro, puede usar And o But. Le permiten especificar escenarios en detalle.

Example

Scenario - Intento de retiro con tarjeta robada.

  • Given Tengo $ 100 en mi cuenta.

  • But mi tarjeta no es válida.

  • When Solicito $ 50.

  • Then mi tarjeta no debe ser devuelta.

  • And Deberían decirme que me ponga en contacto con el banco.

Al crear escenarios, recuerde que 'cada escenario debe tener sentido y poder ejecutarse independientemente de cualquier otro escenario'. Esto significa

  • No puede hacer que la condición de éxito de un escenario dependa del hecho de que se ejecutó otro escenario antes.

  • Cada escenario crea su contexto particular, ejecuta una cosa y prueba el resultado.

Tales escenarios brindan los siguientes beneficios:

  • Las pruebas serán más sencillas y fáciles de entender.

  • Puede ejecutar solo un subconjunto de sus escenarios y no tiene que preocuparse por la rotura de su conjunto de prueba.

  • Dependiendo de su sistema, es posible que pueda ejecutar las pruebas en paralelo, reduciendo la cantidad de tiempo necesario para ejecutar todas sus pruebas.

Esquema del escenario

Si tiene que escribir escenarios con varias entradas o salidas, puede terminar creando varios escenarios que solo se diferencian por sus valores. La solución es utilizar el esquema del escenario. Para escribir un esquema de escenario,

  • Las variables en los pasos del esquema del escenario están marcadas con <y>.

  • Los diversos valores de las variables se dan como ejemplos en una tabla.

Example

Suponga que está escribiendo una función para sumar dos números en una calculadora.

Feature - Agregar.

Scenario Outline: Add two numbers.
Given the input "<input>"
When the calculator is run
Then the output should be <output>"
Examples
| input    | output |
| 2+2      | 4      | 
| 98+1     | 99     |
| 255+390  | 645    |

Una sección de esquema de escenario siempre va seguida de una o más secciones de ejemplos, que son un contenedor para una tabla. La tabla debe tener una fila de encabezado correspondiente a las variables en los pasos del esquema del escenario. Cada una de las filas siguientes creará un nuevo escenario, completando los valores de las variables