Gherkin a la réputation d’être un outil de testeur QA, pas de Product Owner. C’est une erreur qui coûte cher : chaque fois qu’une story part en dev sans critères Gherkin écrits par le PO, c’est le dev ou le testeur qui les invente à sa place — et ils devinent rarement la même chose que vous.
Qu’est-ce que Gherkin, concrètement
Gherkin est un langage structuré, quasi-naturel, utilisé pour décrire le comportement attendu d’une fonctionnalité sous forme de scénarios. Il repose sur trois mots-clés : Given (contexte initial), When (action déclenchante), Then (résultat attendu).
Feature: Connexion utilisateur
Scenario: Connexion réussie
Given je suis sur la page de connexion
When je saisis un email et un mot de passe valides
Then je suis redirigé vers mon tableau de bord
Ce format n’est pas propre à un framework de test particulier (Cucumber, Behave, SpecFlow l’utilisent tous), mais son intérêt pour un PO n’est pas l’automatisation — c’est la précision. Écrire un scénario Gherkin oblige à expliciter un état, une action et un résultat, alors qu’une phrase libre laisse ces trois éléments implicites.
Pourquoi un PO doit maîtriser Gherkin, pas juste le déléguer
Déléguer l’écriture des critères d’acceptation au testeur ou au dev revient à leur déléguer une partie de la décision produit — parce que définir “ce qui doit se passer quand X” EST une décision produit, pas un détail technique.
Trois raisons concrètes de vous approprier Gherkin :
- Vous éliminez l’ambiguïté à la source. Le dev n’a plus à interpréter votre intention, il implémente un scénario écrit noir sur blanc.
- Vous accélérez la recette. Un scénario Gherkin devient directement un cas de test — pour vous en recette manuelle, ou pour l’équipe QA en automatisé.
- Vous structurez votre propre réflexion. Écrire “Given / When / Then” force à penser à l’état initial et aux cas limites, ce qu’une simple user story omet souvent (voir comment écrire des user stories de qualité avec l’IA pour le lien entre les deux formats).
La syntaxe de base
Une feature Gherkin regroupe plusieurs scénarios liés à une même fonctionnalité :
Feature: [Nom de la fonctionnalité]
En tant que [rôle]
Je veux [action]
Afin de [bénéfice]
Scenario: [Nom du scénario]
Given [état initial]
When [action]
Then [résultat attendu]
And [résultat supplémentaire]
Quelques règles utiles :
Andenchaîne plusieurs conditions du même type sans répéter Given/When/ThenButexprime une exception dans une suite de résultats attendusScenario Outline+Examplespermet de factoriser plusieurs variantes d’un même scénario avec des données différentes (utile pour tester plusieurs formats d’email invalides, par exemple)
Scenario Outline: Validation du format email
Given je suis sur le formulaire d'inscription
When je saisis "<email>" comme adresse email
Then je vois le message "<résultat>"
Examples:
| email | résultat |
| test@exemple.com | Inscription réussie |
| test@ | Format d'email invalide |
| sans-arobase.com | Format d'email invalide |
Les 4 types de scénarios à connaître
Une feature bien couverte ne contient pas que le chemin heureux. Quatre catégories à systématiser :
- Scénario nominal — le chemin heureux, le cas le plus fréquent et attendu.
- Scénario alternatif — une variante valide mais différente du chemin principal (ex : paiement par virement plutôt que par carte).
- Scénario d’erreur — une entrée invalide ou un échec technique (carte refusée, champ obligatoire vide).
- Scénario limite — les bords du système : volume de données extrême, valeurs nulles, concurrence entre deux actions simultanées.
Une story qui ne couvre que le scénario nominal transmet une fausse impression de complétude au dev. C’est souvent là que naissent les bugs découverts en recette, jamais avant.
3 exemples de features complètes
Réinitialisation de mot de passe
Feature: Réinitialisation de mot de passe
Scenario: Demande réussie
Given j'ai un compte avec l'email "user@exemple.com"
When je demande une réinitialisation de mot de passe
Then je reçois un email avec un lien valide 30 minutes
Scenario: Lien expiré
Given j'ai reçu un lien de réinitialisation il y a plus de 30 minutes
When je clique sur ce lien
Then je vois un message m'invitant à refaire une demande
Scenario: Email inconnu
Given aucun compte n'est associé à "inconnu@exemple.com"
When je demande une réinitialisation pour cet email
Then je vois un message générique de confirmation
And aucun email n'est réellement envoyé
Ajout au panier
Feature: Ajout d'un article au panier
Scenario: Ajout d'un article disponible
Given un article est en stock
When je clique sur "Ajouter au panier"
Then l'article apparaît dans mon panier
And le compteur du panier s'incrémente
Scenario: Article en rupture de stock
Given un article est en rupture de stock
When je consulte sa fiche produit
Then le bouton "Ajouter au panier" est désactivé
And un message "Rupture de stock" est affiché
Export de données
Feature: Export de l'historique de commandes
Scenario: Export réussi
Given j'ai au moins une commande dans mon historique
When je clique sur "Exporter en PDF"
Then un fichier PDF est généré et téléchargé
And il contient toutes mes commandes des 12 derniers mois
Scenario: Aucune commande à exporter
Given je n'ai aucune commande dans mon historique
When je clique sur "Exporter en PDF"
Then le bouton est désactivé
And une infobulle explique pourquoi
Les erreurs les plus fréquentes
- Confondre étapes d’implémentation et comportement. “Given la base de données contient un utilisateur” est correct ; “Given la requête SQL retourne un utilisateur” ne l’est pas — Gherkin décrit un comportement observable, pas une implémentation technique.
- Scénarios trop longs. Plus de 5-6 lignes Given/When/Then, c’est souvent le signe qu’il faut découper en plusieurs scénarios.
- Oublier les scénarios d’erreur et de limite. Le réflexe naturel est d’écrire uniquement le nominal — c’est justement l’inverse qui évite les bugs en prod.
- Réutiliser un vocabulaire incohérent d’un scénario à l’autre (“utilisateur” vs “client” vs “membre” pour désigner la même personne) — ça complique l’automatisation des tests et brouille la compréhension.
Génération assistée par IA
Écrire manuellement les 4 types de scénarios pour chaque feature est chronophage — c’est précisément le type de tâche où un agent IA structuré fait gagner du temps sans sacrifier la rigueur. AI Product Copilot génère automatiquement les scénarios nominal, alternatif, erreur et limite à partir d’une description de fonctionnalité en langage naturel, avec export direct vers Jira ou Confluence.
La méthode que je recommande : décrire le besoin, laisser l’agent proposer les 4 types de scénarios, puis relire et ajuster — en particulier les scénarios limites, qui dépendent souvent d’un contexte métier que seul vous connaissez vraiment.
Pour aller plus loin
Le Gherkin est le pont entre une user story et une spec vérifiable — voir comment écrire des user stories de qualité avec l’IA pour la partie amont. Et si vous voulez remonter encore plus tôt, avant l’écriture de la première story, Discovery Agent IA : comment extraire vos besoins produit en 10 minutes explique comment structurer cette étape avec l’IA.
Tester la génération de scénarios Gherkin par IA ? AI Product Copilot transforme une description de fonctionnalité en critères d’acceptation complets en quelques minutes.
Stéphanie Caumont
Product Owner IA · En savoir plus