View
237
Download
2
Category
Preview:
Citation preview
Test Driven DevelopmentAgile Testing Day
Aurélien GALTIERSoftware Craftsman
Consultant/Formateur web et mobile
Twitter : @AurélienGaltierBlog : 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
15
1050
100500
1000
IVXLCDM
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
Recommended