Gherkin

Gherkin est un langage de spécification simple, structuré et orienté comportement, conçu pour décrire des scénarios d’utilisation dans le cadre du Behavior-Driven Development (BDD). Il permet de rédiger des spécifications exécutables en langage naturel — compréhensible aussi bien par les développeurs que par les parties prenantes non techniques (chefs de produit, designers, éditeurs, etc.).

Syntaxe clé

Gherkin utilise une grammaire minimaliste basée sur des mots-clés normalisés, souvent dans la langue du projet (anglais, français, etc.) :

  • Fonctionnalité (Feature) : décrit le besoin global
  • Scénario (Scenario) : un cas d’usage spécifique
  • Étant donné (Given) : contexte initial
  • Quand (When) : action ou événement déclencheur
  • Alors (Then) : résultat attendu
  • Et / Mais (And / But) : pour compléter les étapes

Exemple en français :

Fonctionnalité : Inscription à la newsletter
  En tant que visiteur du site culturel
  Je veux m’inscrire à la newsletter
  Afin de recevoir des actualités sur la culture amazighe

  Scénario : Inscription réussie avec email valide
    Étant donné que je suis sur la page d’accueil
    Quand je saisis mon email "samia@example.com" dans le champ newsletter
    Et que je clique sur "S’inscrire"
    Alors je vois le message "Merci ! Vous êtes inscrit·e."

Utilisation technique

Ce fichier .feature (au format texte brut) est ensuite lié à du code de test via des outils comme :

  • Cucumber (Java, Ruby, JavaScript, etc.)
  • Behat (PHP)
  • SpecFlow (.NET)
  • pytest-bdd (Python)

Les phrases après Quand, Étant donné, etc., sont mappées à des fonctions de test (« step definitions »), ce qui transforme la spécification en test automatisé exécutable.

Avantages

  • Langage partagé entre métier et tech → meilleure collaboration
  • Documentation vivante → toujours synchronisée avec le code
  • Tests lisibles → facilitent la maintenance et l’audit
  • Focus utilisateur → ancre le développement dans des besoins réels

Note : Gherkin n’est pas un langage de programmation, mais un DSL (Domain-Specific Language) pour la spécification comportementale.

Synonymes / termes associés

  • Langage de spécification BDD
  • Syntaxe Given-When-Then
  • Format .feature
  • Langage ubiquitaire (dans une acception pratique)
Les contenus de définition restent publics. Les ressources (outils, grilles, supports) liées à cette fiche sont disponibles dans l’espace membre.