Dans la partie précédente nous avons vue comment tester notre application avec JUnit dans cette partie nous allons voir le concept du TDD ou Test Driven Développement.
Le Test Driven Développement c’est quoi ?
C’est simplement commencer par un test qui doit échouer et puis écrire le code dans notre application de façon à faire réussir notre Test quand cela est fait on va chercher à modifier notre code le rendre le plus optimal possible et lisible.
Kata FizzBuzz
Nous allons créer un kata qui est tout simplement un exercice que nous aidera à perfectionner notre compétence à travers la pratique et la répétition. Le kata que nous allons utiliser est le FizzBuzz qui est tout simple.
L’objectif consiste de faire une boucle de 1 à 100 ou plus et que chaque chiffre qui est divisible par 3 il faut afficher le mot Fizz, si le chiffre et dévissable par 5 on affiche Buzz, par contre si le chiffre est dévissable par 3 et par 5 il faut afficher FizzBuzz sinon on affiche le chiffre.
Débuter par le test
Nous allons créer un nouveau projet Maven en ajoutant JUnit dans le POM.xml et dans notre projet nous allons créer une class de test que nous allons nommer TestFizzBuzz.
Alors l’objectif est d’écrire un test qui devrais contrôle si on passe le chiffre 1 à notre class fizzbuzz elle devrais nous remettre un string avec la valeur 1. Nous allons commencer par initialiser l’objet Fizzbuzz.
Mais comme on peut le voir on a déjà une erreur car là class FizzBuzz n’existe pas encore. Alors nous allons la crée.
Voila la class Créer et désormais notre class de teste ne rouspète plus.
Il est temps de créer un scénario de test que nous allons nommer TestWithNumberOne.
Dans ce test nous allons tester si le programme nous remet un String avec la valeur 1.
La nous avons un nouveau problème car la méthode check n’existe pas encore dans la class FizzBuzz alors nous allons la créer et nous allons demander à la méthode de retourner la valeur String 1.
Désormais on test notre scénario et là nous avons une erreur !
On attend un chiffre 1 et on n’obtient rien, pas grave nous allons devoir retravailler notre code pour qu’il imprime le chiffre 1.
Désormais si on test note code tout fonctionne bien.
Aller on passe au test suivant avec le chiffre 2
Et le renouveau nous avons une erreur car le résultat attendu est 2 et on renvoie 1. Nous pouvons arranger cela en changent le chiffre 1 en deux dans notre code comme suite et puis le test sera concluant mais si on lance tous les scénarios de test alors le premier que nous avons créé à échouer.
Cela veut dire que nous allons devoir faire en sorte que notre code fonctionne pour chaque scénario. Donc nous allons modifier notre code afin qu’il reprenne la valeur transmise dans la méthode et la convertie en String et la transmet.
Avec cela nos deux tests fonctionnent à nouveau.
Tester notre programme.
Nous allons désormais créer un test qui va afficher tous les résultats depuis une boucle.
Se test va simplement imprimer les résultats en String de 1 à 100.
Tester le 3 pour afficher Fizz
Il est temps d’afficher le mot Fizz pour chaque chiffre qui est est dévissable par 3. Donc nous allons commencer par écrire le Scénario de Test.
Comme on peut se douter le test échouera donc on va devoir modifier notre code pour qu’il afficher le message Fizz à la place de 3,6,9,12,15,18, etc. cela nous pouvons le faire avec une condition IF et le % pour contrôler si un nombre et divisible par 3 si le résultat du modulo est 0.
Si on test tous nos Scénario on obtient le résultat suivant.
Afficher le mot Buzz avec la division de 5
Nous allons faire la même chose qu’avec le chiffre 3 sauf que cette fois si on va tester avec le chiffre 5
Comme vous pouvez vous en douter le résultat n’est pas bon car nous n’avons pas programmer un résultat de Buzz dans notre programme. Hé ben nous allons le faire de la même façon que le Fizz.
Qui nous donne le résultat suivant.
Afficher FizzBuzz avec la division de 15
Je pense que vous avez compris le principe là on test puis on code et on reste.
Ce qui veut dire que nous allons créer un test
Puis modifier notre code
Et on obtient
Optimaliser le code
La dernière étape du TDD est d’optimaliser le code afin de le rendre plus lisible est plus facile à maintenir. Et c’est ce que nous allons faire car nous allons retirer la condition du 15 et créer une variable ou nous allons donc passer une valeur celons les deux conditions.
Conclusion
Nous avons vu dans cette partie le principe et le fonctionnement du TDD. Il existe pas mal de Kata sur internet et je vous invite à les découvrir et les tester par vous-même et de surtout pratiquer le TDD cela va rendre votre code plus robuste et fera se pourquoi vous avez besoin et non tester uniquement les fonctionnalités du code déjà écrit.
Je vous souhaite bonne amusement avec le TDD et on se retrouve dans un prochain cours.