human talks grenoble - 11/12/2012 - tdd

45
TDD ou comment coder à l'endroit Xavier NOPRE – 11/12/2012 GRENOBLE

Upload: xavier-nopre

Post on 14-Dec-2014

636 views

Category:

Documents


2 download

DESCRIPTION

Diaporama de la présentation "TDD ou comment coder à l'endroit" jouée au Human Talks de Grenoble le 11/12/2012

TRANSCRIPT

Page 1: Human Talks Grenoble - 11/12/2012 - TDD

TDD ou comment coder à l'endroit

Xavier NOPRE – 11/12/2012

GRENOBLE

Page 2: Human Talks Grenoble - 11/12/2012 - TDD

C'est quoi les tests unitaires?

Page 3: Human Talks Grenoble - 11/12/2012 - TDD

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

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

Pourquoi les tests unitaires?

Page 6: Human Talks Grenoble - 11/12/2012 - TDD

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

Pourquoi les tests unitaires ?

Diminuer les coûts

Scott Ambler

Tests unitaires

Page 8: Human Talks Grenoble - 11/12/2012 - TDD

Pourquoi les tests unitaires ?

Permettre des changements courageux

Page 9: Human Talks Grenoble - 11/12/2012 - TDD

Pourquoi les tests unitaires ?

Permettre des changements courageux

Refactorings

Page 10: Human Talks Grenoble - 11/12/2012 - TDD

Pourquoi les tests unitaires ?

Permettre des changements courageux

Refactorings

Développement itératif & incrémental

Page 11: Human Talks Grenoble - 11/12/2012 - TDD

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

Pourquoi les tests unitaires ?

Documentation du code

Page 13: Human Talks Grenoble - 11/12/2012 - TDD

Pourquoi les tests unitaires ?

Documentation du code

Aide à comprendre l'usage de la classe

Page 14: Human Talks Grenoble - 11/12/2012 - TDD

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

C'est quoi TDD ?

Page 16: Human Talks Grenoble - 11/12/2012 - TDD

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

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

Pourquoi le TDD ?

Page 19: Human Talks Grenoble - 11/12/2012 - TDD

Pourquoi le TDD ? Code puis tests

© @jbrains

Page 20: Human Talks Grenoble - 11/12/2012 - TDD

Pourquoi le TDD ? Code puis tests

© @jbrains

Page 21: Human Talks Grenoble - 11/12/2012 - TDD

Pourquoi le TDD ? Code puis tests

© @jbrains

Page 22: Human Talks Grenoble - 11/12/2012 - TDD

Pourquoi le TDD ? Design puis Tests-Code

© @jbrains

Page 23: Human Talks Grenoble - 11/12/2012 - TDD

Pourquoi le TDD ? Design puis Tests-Code

© @jbrains

Page 24: Human Talks Grenoble - 11/12/2012 - TDD

Pourquoi le TDD ? Design puis Tests-Code

© @jbrains

Page 25: Human Talks Grenoble - 11/12/2012 - TDD

Pourquoi le TDD ? Analyse puis

Tests-Code-Design

© @jbrains

Page 26: Human Talks Grenoble - 11/12/2012 - TDD

Pourquoi le TDD ? Analyse puis

Tests-Code-Design

© @jbrains

Page 27: Human Talks Grenoble - 11/12/2012 - TDD

Pourquoi le TDD ? Analyse puis

Tests-Code-Design

© @jbrains

Page 28: Human Talks Grenoble - 11/12/2012 - TDD

Pourquoi le TDD ?

Aide à la conception

Page 29: Human Talks Grenoble - 11/12/2012 - TDD

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

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

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

Comment leTDD ?

Page 33: Human Talks Grenoble - 11/12/2012 - TDD

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

Comment le TDD ?

Le Cycle

Ecriture du test

Ecriture du code de

production

Refactoring

Page 35: Human Talks Grenoble - 11/12/2012 - TDD

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

Mise en pratique ?

Page 37: Human Talks Grenoble - 11/12/2012 - TDD

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

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

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

Conclusion

Page 41: Human Talks Grenoble - 11/12/2012 - TDD

Conclusion C'est une méthode de développementet non une "méthode de tests"

Page 42: Human Talks Grenoble - 11/12/2012 - TDD

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

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

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