Développement axé sur le comportement - Gherkin

Gherkin est un langage utilisé pour écrire Features, Scenarios, and Steps. Le but de Gherkin est de nous aider à rédiger des exigences concrètes.

Pour comprendre ce que nous entendons par exigences concrètes, considérons l'exemple suivant -

Les clients doivent être empêchés de saisir des informations de carte de crédit non valides.

Contre

Si un client entre un numéro de carte de crédit qui ne comporte pas exactement 16 chiffres, lorsqu'il essaie de soumettre le formulaire, il doit être réaffiche avec un message d'erreur l'informant du nombre correct de chiffres.

Ce dernier n'a aucune ambiguïté et évite les erreurs et est beaucoup plus testable.

Gherkin est conçu pour créer des exigences plus concrètes. Dans Gherkin, l'exemple ci-dessus ressemble à -

Feature

Commentaires lors de la saisie de détails de carte de crédit non valides Feature Definition

Lors des tests utilisateurs, nous avons vu de nombreuses personnes faire des erreurs Documentation

Background True for all Scenarios Below

Given J'ai choisi un article à acheter,

And Je suis sur le point d'entrer mon numéro de carte de crédit

Scenario - Numéro de carte de crédit trop courtScenario Definition

When J'entre un numéro de carte comportant moins de 16 chiffres

And tous les autres détails sont corrects

And Je soumets le formulaireSteps

Then le formulaire doit être réaffiche

And Je devrais voir un message m'informant du nombre correct de chiffres

Format et syntaxe Gherkin

Les fichiers Gherkin sont des fichiers texte brut et ont l'extension .feature. Chaque ligne qui n'est pas vide doit commencer par un mot-clé Gherkin, suivi du texte de votre choix. Les mots clés sont -

  • Feature

  • Scenario

  • Donné, quand, alors, et, mais (étapes)

  • Background

  • Aperçu du scénario

  • Examples

  • "" "(Doc Strings)

  • | (Tableaux de données)

  • @ (Mots clés)

  • # (Commentaires)

  • *

Fonctionnalité

le FeatureLe mot-clé est utilisé pour décrire une fonctionnalité logicielle et pour regrouper les scénarios associés. Une fonctionnalité comporte trois éléments de base -

  • Le mot-clé - Fonctionnalité.

  • Le nom de la fonction, fourni sur la même ligne que le mot-clé Feature.

  • Une description facultative (mais fortement recommandée) qui peut s'étendre sur plusieurs lignes, c'est-à-dire tout le texte entre la ligne contenant le mot-clé Feature, et une ligne commençant par Scenario, Background ou Scenario Outline.

En plus d'un nom et d'une description, les fonctionnalités contiennent une liste de scénarios ou de plans de scénario et un arrière-plan facultatif.

Il est conventionnel de nommer un .featureen prenant le nom de la fonction, en le convertissant en minuscules et en remplaçant les espaces par des soulignements. Par exemple,

feedback_when_entering_invalid_credit_card_details.feature

Afin d'identifier les fonctionnalités de votre système, vous pouvez utiliser ce que l'on appelle un «modèle d'injection de fonctionnalités».

Afin de <atteindre un objectif> en tant que <type d'utilisateur>, je veux une <a fonctionnalité>

Descriptions

Certaines parties des documents Gherkin ne doivent pas nécessairement commencer par un mot clé.

Dans les lignes qui suivent une fonctionnalité, un scénario, un aperçu de scénario ou des exemples, vous pouvez écrire ce que vous voulez, à condition qu'aucune ligne ne commence par un mot-clé. C'est la manière d'inclure des descriptions.

Scénario

Pour exprimer le comportement de votre système, vous associez un ou plusieurs scénarios à chaque fonctionnalité. Il est courant de voir 5 à 20 scénarios par fonctionnalité pour spécifier complètement tous les comportements autour de cette fonctionnalité.

Les scénarios suivent le modèle suivant -

  • Décrivez un contexte initial

  • Décrivez un événement

  • Décrivez un résultat attendu

Nous commençons par un contexte, décrivons une action et vérifions le résultat. Cela se fait par étapes. Gherkin fournit trois mots-clés pour décrire chacun des contextes, actions et résultats sous forme d'étapes.

  • Given - Établir le contexte

  • When - Effectuer une action

  • Then - Vérifier le résultat

Ces mots clés assurent la lisibilité du scénario.

Example

Scenario - Retirer de l'argent du compte.

  • Given J'ai 100 $ sur mon compte.

  • When Je demande 20 $.

  • Then 20 $ devraient être distribués.

S'il y a plusieurs Given ou When pas les uns sous les autres, vous pouvez utiliser And ou But. Ils vous permettent de spécifier des scénarios en détail.

Example

Scenario - Tentative de retrait en utilisant une carte volée.

  • Given J'ai 100 $ sur mon compte.

  • But ma carte est invalide.

  • When Je demande 50 $.

  • Then ma carte ne doit pas être retournée.

  • And On devrait me dire de contacter la banque.

Lors de la création de scénarios, rappelez-vous que «chaque scénario doit avoir un sens et pouvoir être exécuté indépendamment de tout autre scénario». Cela signifie -

  • Vous ne pouvez pas faire en sorte que la condition de succès d'un scénario dépende du fait qu'un autre scénario a été exécuté avant lui.

  • Chaque scénario crée son contexte particulier, exécute une chose et teste le résultat.

De tels scénarios offrent les avantages suivants -

  • Les tests seront plus simples et plus faciles à comprendre.

  • Vous ne pouvez exécuter qu'un sous-ensemble de vos scénarios et vous n'avez pas à vous soucier de la rupture de votre ensemble de test.

  • En fonction de votre système, vous pourrez peut-être exécuter les tests en parallèle, réduisant ainsi le temps nécessaire pour exécuter tous vos tests.

Aperçu du scénario

Si vous devez écrire des scénarios avec plusieurs entrées ou sorties, vous pouvez finir par créer plusieurs scénarios qui ne diffèrent que par leurs valeurs. La solution consiste à utiliser un aperçu du scénario. Pour rédiger un aperçu du scénario,

  • Les variables des étapes du plan de scénario sont signalées par <et>.

  • Les différentes valeurs des variables sont données à titre d'exemple dans un tableau.

Example

Supposons que vous écriviez une fonction pour ajouter deux nombres sur une calculatrice.

Feature - Ajouter.

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    |

Une section de plan de scénario est toujours suivie d'une ou plusieurs sections d'exemples, qui sont un conteneur pour une table. Le tableau doit avoir une ligne d'en-tête correspondant aux variables dans les étapes du plan de scénario. Chacune des lignes ci-dessous créera un nouveau scénario, en remplissant les valeurs des variables