ATDD et BDD, quelle différence ?


On parle beaucoup d’ATDD (Acceptance Test Driven Development) et de BDD (Behaviour Driven Development) lorsque l’on parle de test et d’agilité.

De manière générale le BDD et l’ATDD sont souvent confondus. Cette confusion n’est pas étonnante tant ces méthodes prônent certains principes similaires. Les principes encouragés par ces méthodes sont la collaboration entre les différents intervenants sur un projet/produit. De même ces méthodologies proposent une écriture des tests avant de commencer à développer. Enfin, Bruno Legeard propose également dans la taverne un article où il présente l’ATDD et le BDD comme une documentation vivante du produit par les tests. Comme vous pouvez le voir ATDD et BDD ne sont pas séparés dans cette analyse, ATDD et BDD ayant tous les 2 ce rôle.

On peut donc se poser la question : qu’est-ce qui différencie vraiment l’ATDD et le BDD ? Pourquoi utiliser 2 noms différents ?

Certains mettent en avant que la différence vient du fait qu’en BDD on utilise la terminologie Given/When/THen. Je suis en désaccord avec cette analyse pour la simple raison que « Given/When/then n’est qu’un outil utilisé avec le BDD, qu’il est posible de faire du BDD sans mais aussi qu’utiliser cet outil ne veut pas dire faire du BDD. Je ne peux que vous conseiller de visionner la conférence faite par Hiptest lors de la STLS 2018 pour vous en convaincre.

Il faut donc chercher autre part pour trouver la différence entre ces 2 méthodes. Pour cela je vous propose de revenir à la définition des termes ATDD et BDD.

BDD ou Behaviour Driven Development signifie que le développement est fait par rapport à un comportement voulu.

L’ATDD ou Acceptance Test Driven Development signifie que le développement est fait à partir de test d’acceptation.

On parle donc de comportement pour le BDD et de test d’acceptation pour l’ATDD. Le comportement peut être considéré comme des réactions à des actions le tout proposant un scénario assez court sur des parties du produit.

On peut par exemple imaginer avec le BDD ceci pour l’envoi d’un mail :

Given : le composeur du mail est ouvert

And : il y a au moins 1 destinataire renseigné

And : toutes les adresses des destinataires sont valides

And : un titre est renseigné

And : aucune Pièce Jointe n’est ajoutée

When : je clique sur le bouton « envoyer »

Then : le mail est envoyé

And : le mail envoyé est visualisable dans le dossier « mails envoyés »

Le BDD indique bien un comportement pour une action spécifique. Il est possible d’enchainer les actions avec plusieurs couples « When/Then » mais un ajout massif de ces couples rend la lecture du test assez compliquée.

Avec l’ATDD on aurait un scénario indiquant l’ensemble des étapes depuis l’ouverture de l’application jusqu’à l’envoi. Avec Yest (outil d’ATDD visuel) l’écriture d’un mail peut donner ceci :

Pour avoir un test il faut aller plus en détail (en remplissant des tables) mais l’on voit que l’ATDD tente de donner une vision macro et utilisateur du produit. Une vision plus haut niveau que le BDD, une vision qui crée des tests sur des parcours « complets » là où le même exemple avec l’envoi d’un mail en BDD ne s’attarde que sur la partie « Envoi ».

Conclusion :

Si je devais pointer une différence principale entre le BDD ou l’ATDD, ce ne serait pas l’utilisation d’outil comme le Given/When/Then. Ce ne serait pas non plus l’utilisation de schémas ou de texte. Non, si je devais donner 1 différence entre ces 2 approches cela serait qu’elles ne sont pas de même niveau. Le TDD est pour les tests unitaires et donc les tests composants. Je vois donc le BDD et l’ATDD comme du TDD mais adaptés à des niveaux de test différents.

Je perçois le BDD comme une méthode pour faire du test comportemental, valider des spécifications et donc comme du test système.

En parallèle, je considère que l’ATDD, comme son nom l’indique propose des tests au niveau acceptation car permet plus efficacement de comprendre le fonctionnement du produit et donc de savoir ce qui est attendu par les utilisateurs finaux.

Et vous qu’en pensez-vous ? Quelle est, selon-vous, la différence entre ATDD et BDD ?

Avez-vous pensé à répondre à l’enquête de lataverne:
Quel testeur agile êtes-vous ?

Pensez à rejoindre le groupe Le métier du test si le test vous intéresse !

N’hésitez pas à me suivre et lire mes autres articles si vous voulez en apprendre plus sur le test ou venir partager vos connaissances

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

Répondre

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