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.
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".
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