Test Driven Development
Agile Testing Day
Aurélien GALTIER
Software Craftsman
Consultant/Formateur web et mobile
Twitter : @AurélienGaltier
Blog : http://blogs.developpeur.org/agaltier/
TDD c’est quoi ?
Moi : TDD c’est quoi ?
Collègue : On crée les tests avant de créer le code de production
″
‶
TDD c’est quoi ?
• Une méthode de développement
• Un outil de clean code
• Un concept test first
• Une philosophie
T comme Test
• On commence par les tests
• Chaque test représente un cas d’utilisation
• L’ensemble des tests représente une description de notre code
• Filet de sécurité
D comme Driven
• Nos tests influencent le code
• Classes
• Méthodes
• …
• Adapté directement aux tests
• Injection
• Interface
• Abstraction
• …
D comme development
• Parce que l’on est développeur
• Code de production
• Clean code
• Refactoring
Phases du TDD
Analyse
Red
Green
Refactor
Red
GreenRefactor
Analyse
• Analyser le besoin métier
• Mettre à jour la liste de tests
• Ecrire le nom de nos tests
• Choix du prochain test à implémenter
Analyse
Analyse : Ecrire le nom du test
• Le pattern Should / When
Should return I When convert 1 in roman number
Should return IV When convert 4 in roman number
Analyse
Analyse : Ecrire le nom du test
• Le cas du And
Should return I and log convert of 1 When convert 1 in roman
number
Should return I When convert 1 in roman number
Should log convert of 1 When convert 1 in roman number
Analyse
Analyse : Choisir son premier test
• Choisir votre prochain test :
• Choisir le plus petit incrément
• Un incrément qui apporte de la valeur
• Un cas à la marge
Analyse
Red
• Ecriture du test
• Compilation du code
• Exécution du test et voir qu'il passe au rouge
Red
Red : Règle des 3 A
Red
Red : Exécution du test
Red
Green
• Implémentation du code
• Respecter seulement le besoin du test
Green
Green
Green
Refactor
• Interaction sur le code
• Maîtrise du code
• Factoriser
• Structurer
• Renommer
• Pattern
• Design
Refactor
Refactor
• Le code de production
• Le code des tests
Refactor
“Always leave the campground cleaner than you found it.”
The Boy Scout Rule (by Uncle Bob)
On recommence
• On recommence à la phase d’Analyse
• On ajoute 1 test
• On implémente notre nouveau test
• On « refactor» l’ensemble du code
TDD
On recommence
• Développement par Cycle
• Itération de code
• Feedback rapide
• Emergence du code
TDD
Démonstration
• Roman Numerals
1
5
10
50
100
500
1000
I
V
X
L
C
D
M
Difficulté du TDD
• Coût
• D’apprentissage
• De développement
Difficulté du TDD
• Code legacy
• Non adapté aux tests
• Refactoring difficile
Difficulté du TDD
• Vous ne maîtrisez pas toujours le code
• On oublie la phase de Factorisation
• On ne prend pas de recul sur le code
Pourquoi faire du TDD
• Code couvert par des tests
• Très peu de code inutile
• Confiance en son code
Pourquoi faire du TDD
• Réduction du debug
• Développement itératif
• Feedback rapide
• Moins de F5
Pourquoi faire du TDD
• Emergence d’une documentation automatique
• Noms des tests parlants
• Les tests couvrent des cas d’utilisation
Comment faire ?
• Coding Dojo
• Kata
• Pratiquer

[Agile Testing Day] Test Driven Development (TDD)