Un test échouer doit, pour que coder tu puisses.
Commencer par écrire les tests
Faire émerger le design naturellement
On découpe le problème en sous-problèmes
On choisit le sous-problème le plus simple
On écrit un test
On imagine que le code existe déjà
Une sorte de pseudo code ou de code idéal
🔴 Le test ne passe pas
💥 Il ne compile carrément pas
Un test échouer doit, pour que coder tu puisses.
On crée le code qui n’existe pas
🚀 Ça compile
🔴 Mais le test ne passe toujours pas
Un test en échec est un témoin
C’est une preuve, une marque de progression
Il faut vérifier qu’il échoue pour la bonne raison
Le test ne passera que lorsqu’on aura terminé
On fait une implémentation rapidement
On veut faire passer le test le plus rapidement possible
On ne prend pas de décision sur le design
On encourage la naïveté
🟢 Et à la fin, le test passe
🟢🟢…🟢 Tous les tests passent
Passer les tests doivent, pour que refactorer tu puisses.
Refactorer c’est :
Changer l’implémentation
Sans changer le comportement
On regarde le code
Est-ce qu’il y a des code smells ?
Est-ce que c’est SOLID ?
…
🔁 On refactore
🟢🟢…🟢 Les tests passent toujours
On prend le sous-problème suivant
On recommence le processus
🔴 Red : on écrit le test
🟢 Green : on implémente rapidement
🔁 Refactor : on fait émerger le design
La dernière étape n’est pas obligatoire
Il faut parfois itérer plusieurs fois pour confirmer une intuition
Ou parfois voir totalement autre chose émerger
Plutôt que tout prévoir à l’avance
Le TDD s’adapte au fur et à mesure
TDD by Example de Kent Beck