4. TDD
TDD = Test-Driven Development
=Développement piloté par les tests
=Écrire des tests avant le code
=Écrire des tests pour guider l'écriture du code
=Écrire des tests pour partager une idée
=Écrire des tests pour explorer une hypothèse
5. Le TDD c'est...
● Une méthode de développement incrémental
● Une technique de spécification
● Une démarche qualité
● Une technique de collaboration
● Une des 13 pratiques de eXtrem Programming
6. ...et aussi :
● Un outil pour ne plus avoir peur
● Un jeu
● Un ami qui vous simplifie la vie
7. Théorie – le « cycle » du TDD
1.TEST 2.CODE
3.REFACTOR
8. 1.TEST
● Décrire le comportement souhaité
● Ce comportement peut être
– Unitaire : exercer une unité de code
– Intégré : exercer plusieurs unités de code
– Système : exercer l'ensemble d'un systéme
13. 2.CODE
● Faire passer le test
● Vous avez le « droit » de tout faire
– Écrire du code de débutant
– Dupliquer du code existant
– Mettre des valeurs magiques dans le code
– ...
20. Exemple
● Le kata des chiffres romains
Le kata dit que vous devez écrire une fonction pour convertir
les nombres dont nous avons l'habitude en chiffres romains.
Par exemple :
1--> I
10-->X
7-->VII
Etc.
● Extrait de 10 minutes : http://vimeo.com/19621491
● Vous pourrez trouver d'autres extraits non loin de celui-ci
21. Exemple
Notez dans cette vidéo :
● Les tests s'exécutent automatiquement en bas
à gauche
● Les tests peuvent rester rouges tout en
changeant de message d'erreur
● Le refactoring n'ajoute pas de fonctionnalités
22. A vous :)
● Exercice : le kata des facteurs premiers
Le kata dit que vous devez écrire une fonction qui donne la
décomposition d'un nombre en ses facteurs premiers.
Par exemple :
15 = 3 x 5
300 = 2 x 2 x 3 x 5 x 5
Etc.
23. Souvenez-vous
● Commencez par un seul test
● Commencez par un cas simple
● Respectez le cycle
1.TEST 2.CODE
3.REFACTOR
27. Auto-évaluation
● Combien d'exemples sont présents dans vos
tests ?
– Vous en voulez plusieurs
● Avez-vous écrit le code minimum pour faire
passer chaque test ?
– Vous pouvez avoir une idée de cela en vérifiant que
chaque nouveau test ne passe pas sans nouveau
code
28. Auto-évaluation
● A chaque refactoring, quel « code smell » avez-
vous supprimé ?
– Essayer à chaque fois de les nommer
● Est-ce que vos tests documentent votre code ?
– Prenez votre courage à deux mains et montrez vos
tests à un ami, ils doivent suffire à expliquer ce
qu'offre votre code
29. Auto-évaluation
● Est-ce que vos tests traduisent une démarche
incrémentale ?
– Vos premiers tests devraient présenter des cas
simples, les cas plus compliqués venant ensuite.
30. Auto-évaluation
Tests X/V?
J'ai écrit plusieurs tests
Chaque nouveau test commence par ne pas passer
Chaque test a une seule intention
Chaque test a un nom qui illustre l'intention du test
Mes tests illustrent un développement incrémentale
Un autre que moi comprend l'intention de mes tests
Je sais nommer les smells que je supprime en refactoring
31. Merci
● M'aiderez vous à améliorer ce matériel ?
– Qu'avez-vous aimé ?
– Quelles améliorations feriez-vous ?
eric.mignot@gmail.com