Download - Human Talks Grenoble - 11/12/2012 - TDD
![Page 1: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/1.jpg)
TDD ou comment coder à l'endroit
Xavier NOPRE – 11/12/2012
GRENOBLE
![Page 2: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/2.jpg)
C'est quoi les tests unitaires?
![Page 3: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/3.jpg)
C'est quoi les tests unitaires ? Du code pour tester du code
Tests sur une "unité" de programme = partie de code la plus petite ayant une cohérence fonctionnelle Classe
Automatisables, automatisés
Porter l'attention sur le ROI
![Page 4: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/4.jpg)
C'est quoi les tests unitaires ? Du code pour tester du code
Tests sur une "unité" de programme = partie de code la plus petite ayant une cohérence fonctionnelle Classe
Automatisables, automatisés
Porter l'attention sur le ROI
Mike Cohn
![Page 5: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/5.jpg)
Pourquoi les tests unitaires?
![Page 6: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/6.jpg)
Pourquoi les tests unitaires ?
Un code qui marche
Un code qui fait ce qu'il faut
Non régression
![Page 7: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/7.jpg)
Pourquoi les tests unitaires ?
Diminuer les coûts
Scott Ambler
Tests unitaires
![Page 8: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/8.jpg)
Pourquoi les tests unitaires ?
Permettre des changements courageux
![Page 9: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/9.jpg)
Pourquoi les tests unitaires ?
Permettre des changements courageux
Refactorings
![Page 10: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/10.jpg)
Pourquoi les tests unitaires ?
Permettre des changements courageux
Refactorings
Développement itératif & incrémental
![Page 11: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/11.jpg)
Pourquoi les tests unitaires ?
Permettre des changements courageux
Refactorings
Développement itératif & incrémental
Agilité
![Page 12: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/12.jpg)
Pourquoi les tests unitaires ?
Documentation du code
![Page 13: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/13.jpg)
Pourquoi les tests unitaires ?
Documentation du code
Aide à comprendre l'usage de la classe
![Page 14: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/14.jpg)
Pourquoi les tests unitaires ?
Documentation du code
Aide à comprendre l'usage de la classe
Aide à comprendre ce que fait le code
![Page 15: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/15.jpg)
C'est quoi TDD ?
![Page 16: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/16.jpg)
C'est quoi TDD ?
"Test Driven Development"
= "Développement piloté par les tests"
Ecrire le code de testavant le code de production
![Page 17: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/17.jpg)
C'est quoi TDD ?"Test Driven Development"
= "Développement piloté par les tests"
Ecrire le code de testavant le code de production
Mais pas que …
![Page 18: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/18.jpg)
Pourquoi le TDD ?
![Page 19: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/19.jpg)
Pourquoi le TDD ? Code puis tests
© @jbrains
![Page 20: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/20.jpg)
Pourquoi le TDD ? Code puis tests
© @jbrains
![Page 21: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/21.jpg)
Pourquoi le TDD ? Code puis tests
© @jbrains
![Page 22: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/22.jpg)
Pourquoi le TDD ? Design puis Tests-Code
© @jbrains
![Page 23: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/23.jpg)
Pourquoi le TDD ? Design puis Tests-Code
© @jbrains
![Page 24: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/24.jpg)
Pourquoi le TDD ? Design puis Tests-Code
© @jbrains
![Page 25: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/25.jpg)
Pourquoi le TDD ? Analyse puis
Tests-Code-Design
© @jbrains
![Page 26: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/26.jpg)
Pourquoi le TDD ? Analyse puis
Tests-Code-Design
© @jbrains
![Page 27: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/27.jpg)
Pourquoi le TDD ? Analyse puis
Tests-Code-Design
© @jbrains
![Page 28: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/28.jpg)
Pourquoi le TDD ?
Aide à la conception
![Page 29: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/29.jpg)
Pourquoi le TDD ?
Aide à la conception
Se soucier d'abord de l'usage de notre classe
Nous allons passer du temps à utiliser notre classe : priorité à l'architecture et à la conception priorité aux nommages et signatures
![Page 30: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/30.jpg)
Pourquoi le TDD ?
Aide à la conception
Se soucier d'abord de l'usage de notre classe
Nous allons passer du temps à utiliser notre classe : priorité à l'architecture et à la conception priorité aux nommages et signatures
Se soucier ensuite du résultat à produireNe pas se soucier de l'implémentation
![Page 31: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/31.jpg)
Pourquoi le TDD ?Aide à la conception
Se soucier d'abord de l'usage de notre classeNous allons passer du temps à utiliser notre classe : priorité à l'architecture et à la conception priorité aux nommages et signatures
Se soucier ensuite du résultat à produireNe pas se soucier de l'implémentation
Approche "de l'extérieur vers l'intérieur"
![Page 32: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/32.jpg)
Comment leTDD ?
![Page 33: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/33.jpg)
Comment le TDD ?
Trois règles (Uncle Bob Martin)
Pas de code de production si ce n'est pour faire passer un test en échec
Un seul test en échec à la fois
Code minimum pour faire passer un test qui échouait
![Page 34: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/34.jpg)
Comment le TDD ?
Le Cycle
Ecriture du test
Ecriture du code de
production
Refactoring
![Page 35: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/35.jpg)
Comment le TDD ?
Le Cycle
Ecriture du test
Ecriture du code de
production
Refactoring
1 cycle = qq minutes Plusieurs cycles / heure
![Page 36: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/36.jpg)
Mise en pratique ?
![Page 37: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/37.jpg)
Mise en pratique ?
Un bon outillage (dispo pour tous les langages)
Principes de conception : Architecture évolutive ("architecture agile")
Code testable 1 classe = 1 rôle ("SRP")
Injection de dépendance …
Utilisation de mocks (= "faux" collaborateurs)
![Page 38: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/38.jpg)
Mise en pratique ?
Erreurs / Pièges : Ne pas suivre les 3 règles ou le cycle Tests trop gros, trop complexes,
inutiles, sous forme de scénarios, trop longs à exécuter
Code non lisible (test et prod) Démarche non collective de l'équipe Mauvais entretien collectif des tests Manque de vision globale de
l’architecture
![Page 39: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/39.jpg)
Mise en pratique ?
Conseils : Se former, se faire accompagner S'entrainer (coding-dojo) Commencer par des cas faciles,
évidents S'y mettre progressivement Faire des tests "à bon escient" … Echanger, travail d'équipe, pair-
programming Du courage, ça vaut le coup !
![Page 40: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/40.jpg)
Conclusion
![Page 41: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/41.jpg)
Conclusion C'est une méthode de développementet non une "méthode de tests"
![Page 42: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/42.jpg)
Conclusion C'est une méthode de développementet non une "méthode de tests"
"On ne fait plus des tests"
![Page 43: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/43.jpg)
Conclusion C'est une méthode de développementet non une "méthode de tests"
"On ne fait plus des tests"
"Finalement, le TDD, c'est coder
…à l'endroit !"
![Page 44: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/44.jpg)
Xavier NOPRE : Développeur logiciel Java & Web passionné depuis ~
20 ans Pratique et partage l’agilité depuis 2007
Indépendant. Missions : Développements sur mesure et accompagnement
de projet En mode agile
Coaching en agilité, Scrum, et ingénierie agile
MERCI
@xnopre xnopre.blogspot.com
![Page 45: Human Talks Grenoble - 11/12/2012 - TDD](https://reader035.vdocuments.mx/reader035/viewer/2022070303/548fef21b479599d2d8b4dba/html5/thumbnails/45.jpg)
Références http://spin.atomicobject.com/2012/12/06/writing-t
ests-is-not-tdd/
http://agilitateur.azeau.com/post/2009/03/31/Les-deux-sortes-de-TDD
http://www.jbrains.ca/permalink/how-test-driven-development-works-and-more