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 globalScénario(Scenario) : un cas d’usage spécifiqueÉtant donné(Given) : contexte initialQuand(When) : action ou événement déclencheurAlors(Then) : résultat attenduEt/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)