Duel: gherkin vs BDD

Introduction

De nombreuses équipes et personnes considèrent que lorsque les tests sont écrits en gherkin alors les équipes font du BDD. Le BDD est le gherkin s’en retrouvent être 2 éléments d’un même ensemble si liés qu’ils n’en deviennent qu’un: si on fait du BDD alors on a ses tests en gherkin et inversement, si on a ses tests écrits en gherkin alors on fait du BDD.

Cela est évidemment totalement faux car le gherkin n’est par le BDD§ Le gherkin n’est ni une condition nécessaire ni une condition suffisante pour faire du BDD!

Pourquoi cette confusion ?

Cette amalgame a selon moi 2 raisons:

  • La première est naturelle et innocente et par d’un des principes de base du BDD: proposer des tests compréhensibles par tous. Le Gherkin permet d’écrire ces tests simplement en adoptant une norme d’écriture très légère. Cette facilité d’adoption a permis au Gherkin d’être très utilisé en BDD et de devenir le langage largement majoritaire utilisé pour l’écriture de test en BDD.
  • La seconde est, selon moi, plus liée à la communication et l’image que l’on souhaite se donner ou donner à son entreprise. Soyons honnête, écrire des tests en Gherkin est assez simple et simple à mettre en place. Adopter une démarche BDD est par contre beaucoup plus complexe et long à mettre en place… peu être justement trop pour se permettre d’attendre de faire vraiment du BDD pour le communiquer

Malheureusement utiliser Gherkin n’apporte pas les avantages que le BDD procure.

Quelle différence entre ces termes ?

Gherkin

Le gherkin est « uniquement » langage pour écrire des tests! Ce langage est facile à lire et à comprendre (tant que le test n’est pas trop long) par toute personne car il utilise une synthaxe très proche d’un langage parlé et ses normes d’écriture avec le « Given » (état initial), le « When » (action / événement) et le « Then » (état final) indique clairement un cheminement.

De même ces tests sont également très facilement partageables car c’est du texte. Il n’y a donc pas besoin d’accéder à un outil spécifique pour pouvoir lire et consulter ces tests qui sont donc tout aussi accessibles au niveau de leur compréhension qu’au niveau de leur diffusion.

BDD

Le BDD est avant tout une démarche qui consiste à communiquer afin de s’assurer que tous les acteurs (métier, testeurs, développeurs… en fait tous les intervenants sur le développement du logiciel) aient une compréhension commune de ce qui doit être fait avec la fonctionnalité. Pour cela il faut que les acteurs collaborent et se mettent d’accord sur l’attendu avant de commencer les développements. Cette synchronisation se fait à l’aide d’exemples qui prennent la forme de test… qui peuvent être écrit en gherkin mais ne le sont pas forcément.

A noter: la réunion des « 3 amigos » n’est pas non plus obligatoire pour faire du BDD (même si elle reste particulièrement bien adaptée au BDD)

Conclusion

BDD et Gherkin sont 2 notions totalement différentes. La démocratisation de l’utilisation du gherkin dans le contexte du BDD a entraîné un confusion qui peut devenir dangereuse dans le sens où le BDD s’en trouve déprécié et mal mis en œuvre. De même cette confusion, comme toutes les confusion réductrices, a tendance à nous ajouter des œillères nous empêchant de penser différemment… ce qui nous entraîne à plus penser au moyen qu’à l’objectif.

Pensez à rejoindre le groupe « Le métier du test » si vous souhaitez échanger sur le test

Merci à tous ceux qui mettent « j’aime », partagent ou commentent mes articles

N’hésitez pas à faire vos propres retours d’expérience en commentaire.

Publié par

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s