La syntaxe Gherkin

Nous l'avons vu : écrire systématiquement des tests d'acceptance, dès la phase de spécification (écriture du backlog produit) est crucial. Pour cela, vous avez un outil tout trouvé : la syntaxe Gherkin.

Test d’acceptance

Un test d’acceptance (on dit parfois « How to demo ») est une suite d’action et de vérifications à réaliser pour s’assurer qu’un produit ou une fonctionnalité répond aux attentes de celui/celle pour qui il a été créé.

Comme nous l’avons vu dans l’introduction sur le backlog de produit, la rédaction de toute spécification fonctionnelle (user story en Scrum par exemple) doit, pour être efficace, s’accompagner systématiquement de tests d’acceptance.

Pourquoi ?

  • Avez-vous déjà essayer de concevoir quelque-chose dont vous n’êtes pas capable d’expliquer le fonctionnement ?
  • Avez-vous déjà essayé de valider le bon fonctionnement de quelque chose sans avoir établi précisément le protocole de validation ?

Si c’est le cas, vous savez de quoi je parle.

Sinon, de deux choses l’une :

  • Essayez pour voir…
  • Où croyez-moi sur parole :)

Gherkin

Et un petit bonus…

En écrivant des tests d’acceptance en même temps que vous écrivez vos specs (exigences, user stories…), voire même avant, vous allez en bonus améliorer votre compréhension du besoin et de la solution à mettre en œuvre.

C’est logique : en vous forçant à envisager l’utilisation concrète, vous allez mettre le doigt sur certains détails que l’on n’envisage pas toujours quand on se contente d’écrire « ce que l’on veut » plutôt que « comment ça devrait fonctionner ».

Gherkin en action

Gherkin est une syntaxe très simple, inventée par la communaubé Ruby et son framework de BDD (behaviour driven development) Cucumber.

Il vous permettra notamment d’écrire vos cas de test (acceptance test) sous la forme suivante :

Étant donné que (une situation de départ)

Et (des précisions)

Quand (une action)

Et (des précisions)

Et

Alors (une conséquence ou situation d’arrivée)

Vous l’avez compris : on peut spécifier tous les tests d’acceptance imaginables sous cette forme ! C’est simple, lisible, rapide, et terribement efficace.

Un exemple concrêt :

Fonctionnalité : Authentification

Scénario : Tentative d’authentification avec un compte valide


Étant donné que je dispose d’un compte
 utilisateur « ginette »

Quand j’accède à la page d’authentification
 /auth.html

Et que je saisis mon identifiant « ginette » dans le champ « Login »

Et que je saisie mon mot de passe « secret » dans le champ « Password »

Et que je clique sur le bouton « Connexion » du formulaire

Alors je suis authentifié sur le site

Et je suis redirigé vers la page « Mon compte » à l’URL /mon-compte.html

Cerise sur le gâteau, on peut aussi, si besoin, automatiser le lancement et rendre les tests dynamiques (avec des frameworks comme Cucumber, Behave, Behat, JBehave…).

Commentaires