Le TDD, ou développement piloté par les tests en français, est une méthode de développement de logiciel qui consiste à concevoir un logiciel par des itérations successives très courtes.
Cette méthode peut sembler contre-intuitif au premier abord. Pour définir le TDD simplement, imaginez qu'on vous demande de construire une voiture alors que vous ne savez pas ce que c'est.
Le client : "Une voiture c'est un truc qui roule"
Vous fournissez une roue
Le client : "Oui, c'est bien.... mais en plus je dois pouvoir m'asseoir"
Vous fournissez une roue avec un siège"
Le client : "Ok, mais... Je dois pouvoir tourner quand même"
Vous fournissez un vélo!
La voiture sera construite de manière incrémentale, et toutes ses fonctionnalités seront ainsi couvertes!
Définition du TDD
Il s'agit d'une manière de conduire son développement au travers du test.
Cette méthodologie de développement se décompose en multiples itérations de 3 phases :
Phase 1 : Ecriture du test
Ecrire un test qui valide une partie du besoin. Le test ne passe pas car le besoin n'a pas encore été implémenté.
"Quand je démarre la voiture, elle roule" -> à cette étape, on n'a pas encore fourni la roue, donc la voiture ne roule pas. Le test est en erreur.
Phase 2 : Implémentation
Implémentation du besoin, de la manière la plus simple et naïve qui soit. À l'issue de cette phase, le test doit être en succès.
Une roue répond au besoin. Si je fournis la roue, le besoin de rouler est couvert et mon test est un succès!
Phase 3 : Refactoring
Refactoring du code afin de respecter les bonnes pratiques de développement et de conception.
Le besoin de rouler est bien compris et validé par mes tests. Je peux améliorer ma roue pour qu'elle soit plus solid tout en garantissant qu'elle continue de rouler.
Chaque itération de TDD doit monter en complexité : on part du cas le plus simple pour finir sur les cas les plus complexes.
Le TDD est une approche qui garantira un haut niveau de couverture de tests. On vous explique pourquoi juste ici !