BDD vs TDD

BDD vs TDD
BDD vs TDD

Quelle est la différence entre le TDD et la BDD (BDD vs TDD) ? Vous êtes nombreux à me poser cette question donc je vais tenter d’y répondre en tentant de simplifier au maximum.

Le TDD

La TDD (Test Driver Development) est une technique de développement logiciel qui consiste à écrire les tests unitaires d’une fonction (au niveau du code) avant d’écrire le contenu de cette fonction.

Si cette technique amène souvent à réduire considérablement la regression future, elle permet surtout de guider les développeurs à mieux écrire le code des applications. Connaitre les résultats finaux attendus permet de partir dans la bonne direction dès le démarrage des développements.

Bien que ce concept peut dérouter les développeurs qui la découvre, il est devenu un standard de développement ; il amène une « excellence qualité » indéniable.

Cycle de la TDD

La TDD propose un cycle de travail aux développeurs pour obtenir une qualité optimale de la mise en place des tests unitaires :

  • Ecrire le test unitaire
  • Lancer celui-ci et vérifier qu’il échoue (classe pas encore codée)
  • Ecrire la classe à tester avec le minimum pour faire marcher le test
  • Lancer le test et vérifier qu’il fonctionne
  • Finir le code complet de la classe
  • Vérifier que le test fonctionne toujours (non-régression)

Si vous désirez en savoir plus sur ce concept, je vous conseille vivement de lire notre article dédié à cette pratique.

Article : Travailler en TDD (Test Driven Development)

La BDD

La BDD (Behavior Driven Development) est une pratique Agile créée par Dan North en 2003 qui a pour but de créer des tests fonctionnels avec un langage naturel compris de tous.

Techniquement parlant, elle permet de combler le fait que de tester chaque fonction de code ne permet pas de valider des comportements complets. C’est pas parce que les fonctions sont toutes bonnes que le comportement global attendu est celui que nous avons en résultat.

Cependant, la philosophie de base est surtout de guider les développements par rapport aux comportements attendus.

Plus important encore, ce framework BDD encourage le rapprochement des équipes techniques et des équipes fonctionnelles ; en effet c’est une idée similaire au rapprochement voulu par les méthodes agiles. Quoi de mieux que de bénéficier de l’intelligence collective pour amener le produit à maturation ? Les développeurs sont guidés par les comportements attendus par les utilisateurs.

Les tests sont écrit avec un langage naturelle appelé Gherkin. Voici un exemple simple dont les parties en gras représentent la structure de base obligatoire pour écrire ces tests :

Etant donné que je suis le client sur la fiche produit
Quand je clique sur ajouter au panier sur le produit d’identifiant “255”
Et que le stock est à “3
Alors le produit se rajoute au panier.

Cette phrase sera automatiquement transformée par des applications en ligne de code ; les développeurs n’auront plus qu’à remplir les comportements au sein de l’enveloppe (des fonctions en code) pour écrire le test.

Quand le test est bien écrit, les développeurs écriront les fonctions résultantes.

Vous désirez en savoir plus sur son application, n’hésitez pas à consulter notre article sur le sujet.

Article : BDD (Behavior Driven Development)

BDD vs TDD

La TDD va permettre de guider les développements, fonction par fonction. Pour ceux qui ne sont pas proche de l’univers du développement, sachez qu’une fonction au niveau du développement permet de créer un petit comportement unitaire et non un scénario. Des scénarios même simplistes seront un enchainement de fonctions.

La BDD permet de tester l’ensemble des comportements attendus par la user-story à développer. En général, nous essayons de couvrir tous les cas de tests possibles en BDD.

Voici un petit schéma simplifié pour visualiser :

TDD vs BDD
TDD vs BDD

Conclusion BDD vs TDD

J’espère que cet article aura répondu à votre question. Si vous avez encore d’autres questions autour du sujet BDD vs TDD, n’hésitez pas à poster un commentaire.

Liens utiles :

BDD (Behavior Driven Development) [english]
What is the difference between ATDD and BDD?
ATDD et BDD – Quelle est la différence ?

[ Article lu 1 fois aujourd'hui ]
A propos Judicaël Paquet 526 Articles
  Paquet Judicaël (coach agile et devops sénior) Mes activités en France et en Suisse : - architecte de transformation agile - formations agiles personnalisées - sensibilisations et coaching de manager - audits de maturité agile et de situations - coaching agile (équipes, orga, product owner, scrum master, coach agile) Spécialités : scrum, kanban, management 3.0, agilité à l’échelle, lean startup, méthode agile. [Suisse/France]

Soyez le premier à commenter

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.


*


Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.