human talks grenoble - 11/12/2012 - tdd
DESCRIPTION
Diaporama de la présentation "TDD ou comment coder à l'endroit" jouée au Human Talks de Grenoble le 11/12/2012TRANSCRIPT
TDD ou comment coder à l'endroit
Xavier NOPRE – 11/12/2012
GRENOBLE
C'est quoi les tests unitaires?
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
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
Pourquoi les tests unitaires?
Pourquoi les tests unitaires ?
Un code qui marche
Un code qui fait ce qu'il faut
Non régression
Pourquoi les tests unitaires ?
Diminuer les coûts
Scott Ambler
Tests unitaires
Pourquoi les tests unitaires ?
Permettre des changements courageux
Pourquoi les tests unitaires ?
Permettre des changements courageux
Refactorings
Pourquoi les tests unitaires ?
Permettre des changements courageux
Refactorings
Développement itératif & incrémental
Pourquoi les tests unitaires ?
Permettre des changements courageux
Refactorings
Développement itératif & incrémental
Agilité
Pourquoi les tests unitaires ?
Documentation du code
Pourquoi les tests unitaires ?
Documentation du code
Aide à comprendre l'usage de la classe
Pourquoi les tests unitaires ?
Documentation du code
Aide à comprendre l'usage de la classe
Aide à comprendre ce que fait le code
C'est quoi TDD ?
C'est quoi TDD ?
"Test Driven Development"
= "Développement piloté par les tests"
Ecrire le code de testavant le code de production
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 …
Pourquoi le TDD ?
Pourquoi le TDD ? Code puis tests
© @jbrains
Pourquoi le TDD ? Code puis tests
© @jbrains
Pourquoi le TDD ? Code puis tests
© @jbrains
Pourquoi le TDD ? Design puis Tests-Code
© @jbrains
Pourquoi le TDD ? Design puis Tests-Code
© @jbrains
Pourquoi le TDD ? Design puis Tests-Code
© @jbrains
Pourquoi le TDD ? Analyse puis
Tests-Code-Design
© @jbrains
Pourquoi le TDD ? Analyse puis
Tests-Code-Design
© @jbrains
Pourquoi le TDD ? Analyse puis
Tests-Code-Design
© @jbrains
Pourquoi le TDD ?
Aide à la conception
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
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
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"
Comment leTDD ?
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
Comment le TDD ?
Le Cycle
Ecriture du test
Ecriture du code de
production
Refactoring
Comment le TDD ?
Le Cycle
Ecriture du test
Ecriture du code de
production
Refactoring
1 cycle = qq minutes Plusieurs cycles / heure
Mise en pratique ?
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)
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
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 !
Conclusion
Conclusion C'est une méthode de développementet non une "méthode de tests"
Conclusion C'est une méthode de développementet non une "méthode de tests"
"On ne fait plus des tests"
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 !"
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
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