Propulsez votre architecture     grâce aux mocks        Agile Tour 2012                               © 2012 Elapse Techno...
Félix-Antoine BourbonnaisIng. jr, PSM-I    Formateur & Coach Agile     o Tests automatisés: TDD/ATDD, BDD, …     o Orienta...
Réchauffement…           Quelles sont vos             attentes?                                  © 2012 Elapse Technologie...
© 2012 Elapse Technologies                                    © 2012 Elapse TechnologiesComment découvrir l’architecture? ...
© 2012 Elapse Technologies© 2012 Elapse Technologies                                   DOUBLURES ET MOCKS                I...
Tests unitairesBut: tester les modules en isolation.                                        © 2012 Elapse Technologies    ...
© 2012 Elapse Technologies                     © 2012 Elapse Technologies                                                 ...
© 2012 Elapse Technologies                     © 2012 Elapse Technologies                                                 ...
Fonctionnement                 A’          A’’              A’’’             Retourne      Lance          Retourne        ...
© 2012 Elapse Technologies© 2012 Elapse Technologies                Rappels des fondements du                             ...
Cycle du TDD                Écrire un        1                                         On passe à la phase                ...
© 2012 Elapse Technologies                                           © 2012 Elapse Technologies    Le design et le    TDD ...
TDD classique                   Centré sur l’état et le résultat final                                                    ...
TDD classiqueExtraction des types          Classe       Division            P                     Classe          Classe  ...
Le TDD classique Centré sur la logique Évolution du « design » o Par division                                             ...
© 2012 Elapse Technologies© 2012 Elapse Technologies                            L’ORIENTATION OBJET                Rappel de
Messages et collaboration                            Classe                              C             Classe             ...
Le « Tell don’t Ask »                                                                  © 2012 Elapse Technologies         ...
Pourquoi le « Tell don’t ask » Cacher le « comment » Limiter l’effet des modifications à la logique (algorithme)          ...
Un objet est une boîte noireStimulus           Réception d’un message                                             Envoi d’...
© 2012 Elapse Technologies                                              © 2012 Elapse Technologies    Comment    PILOTER S...
Le TDD « Mockiste » Centré sur les o Interactions entre les objets o Rôles et responsabilités                             ...
TDD piloté par les MocksIdentifier les rôles requis (dépendances) par le module testé         Viewer                      ...
TDD piloté par les MocksArriver à destination…       Test                                <<Interface>>           <<Interfa...
En résumé1. Établir quelle est la responsabilité de l’objet testé2. De quoi est-ce que l’objet a besoin pour réaliser son ...
© 2012 Elapse Technologies© 2012 Elapse Technologies                                     DÉMONSTRATION                Prés...
Soumissions à une conférence Système pour gérer les propositions soumises à une conférence Story #1:                      ...
Approche « top-down »                       UI                                                                © 2012 Elaps...
Piloter le design par les mocks  MyLibraryView                              LibraryRealTime   Composer à partir des       ...
Avantages Favorise le respect du « Tell don’t ask » Permet de définir les interfaces à partir des besoins o Force à se con...
Ce que l’on obtient généralement Hiérarchie mince Design basé sur les rôles Abstraction (sous la forme de rôles)          ...
Désavantages Moins adapté pour découvrir les détails (le « comment ») Peut résulter en une trop grande séparation         ...
Mauvaises odeurs détectables Beaucoup de Mocks o Couplage… Difficile d’injecter les Mocks                                 ...
Complémentarité Cette technique doit être combinée! Alterner entre les                               © 2012 Elapse Technol...
TDD et architecture Favorise l’écriture de code testable Offre une rétroaction concernant la facilité d’utilisation du « d...
Le mot de la fin…                    Questions?                Poursuivre la discussion?                                  ...
Téléchargement                    Diapositives                    http://developpementagile.com                           ...
Elapse TechnologiesVotre allié en développement logiciel Agile           Formation           Accompagnement (coaching)    ...
© 2012 Elapse Technologies             © 2012 Elapse TechnologiesRéférences
Références Steve Freeman, Tim Mackinnon, Nat Pryce, et Joe Walnes. Mock roles, Not objects. p. 236–246. OOPSLA ’04. Vancou...
Références Steve Freeman, Sustainable Test-Driven Development. QCon San Francisco 2009. http://www.infoq.com/presentations...
Prochain SlideShare
Chargement dans…5
×

Propulsez votre architecture grâce au TDD et aux mocks (Agile Tour Montréal 2012)

869 vues

Publié le

Présentée à Agile Tour Montréal 2012 (Agile Montréal) le 24 novembre 2012.

Nous savons depuis longtemps que les tests automatisés jouent un rôle important pour les équipes de développement Agile. Bien que la communauté ait découvert depuis un certain temps des pratiques permettant de maximiser l’émergence du design via le TDD, il est rare que l’on présente des astuces concrètes pour obtenir ce bénéfice.

Cette présentation explique comment tirer le maximum de vos tests unitaires et des « mocks ». Nous présenterons, plus particulièrement, le style de TDD « mockiste ». Ainsi, nous verrons comment les mocks peuvent nous aider à concevoir une architecture ayant une meilleure conception orientée objet.

La séance prendra la forme d'un tutoriel (démonstration).

Niveau : Avancé
Public cible : Développeurs et architectes
Version de 90 minutes

Publié dans : Technologie
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
869
Sur SlideShare
0
Issues des intégrations
0
Intégrations
401
Actions
Partages
0
Téléchargements
23
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Propulsez votre architecture grâce au TDD et aux mocks (Agile Tour Montréal 2012)

  1. 1. Propulsez votre architecture grâce aux mocks Agile Tour 2012 © 2012 Elapse Technologies Montréal 24 novembre 2012
  2. 2. Félix-Antoine BourbonnaisIng. jr, PSM-I Formateur & Coach Agile o Tests automatisés: TDD/ATDD, BDD, … o Orientation objet avancée o Architecture agile © 2012 Elapse Technologies © 2012 Elapse Technologies www.elapsetech.com o Réusinage et qualité (Clean Code) fbourbonnais@elapsetech.com o Agile Scrum elapsetech.com/fab Concepteur de logiciels @fbourbonnais o Pratiques de développement linkedin.com/in/fbourbonnais o Java, Python, etc. 2
  3. 3. Réchauffement… Quelles sont vos attentes? © 2012 Elapse Technologies © 2012 Elapse Technologies Qui fait du TDD? Qui utilise des Mocks? 3
  4. 4. © 2012 Elapse Technologies © 2012 Elapse TechnologiesComment découvrir l’architecture? TDD Mocks
  5. 5. © 2012 Elapse Technologies© 2012 Elapse Technologies DOUBLURES ET MOCKS Introduction aux
  6. 6. Tests unitairesBut: tester les modules en isolation. © 2012 Elapse Technologies © 2012 Elapse Technologies
  7. 7. © 2012 Elapse Technologies © 2012 Elapse Technologies 7 N X A BFonctionnement CUT CUT Test
  8. 8. © 2012 Elapse Technologies © 2012 Elapse Technologies 8 N X A BFonctionnement CUT CUT Test
  9. 9. Fonctionnement A’ A’’ A’’’ Retourne Lance Retourne © 2012 Elapse Technologies © 2012 Elapse Technologies [1] IOException [1, 2, 3]CUT CUTTest D’ 9
  10. 10. © 2012 Elapse Technologies© 2012 Elapse Technologies Rappels des fondements du TDD
  11. 11. Cycle du TDD Écrire un 1 On passe à la phase test qui « VERTE » dès qu’on a un échoue test qui échoue. © 2012 Elapse Technologies © 2012 Elapse Technologies Erreur de compilateur = « échec ». Faire3 Réusiner passer le test 2 On passe à la phase « Réusinage » dès que le test passe. 11
  12. 12. © 2012 Elapse Technologies © 2012 Elapse Technologies Le design et le TDD « CLASSIQUE »Image: posterize / FreeDigitalPhotos.net
  13. 13. TDD classique Centré sur l’état et le résultat final © 2012 Elapse Technologies © 2012 Elapse TechnologiesImage: nuchylee / FreeDigitalPhotos.net
  14. 14. TDD classiqueExtraction des types Classe Division P Classe Classe © 2012 Elapse Technologies © 2012 Elapse Technologies P R1 Mock R1 PTest PTest R1Test
  15. 15. Le TDD classique Centré sur la logique Évolution du « design » o Par division © 2012 Elapse Technologies © 2012 Elapse Technologies o Découverte des types par extraction Avantages – « Détails et logique» o Construit des composants très modulaires et faiblement couplés o Facilite la réutilisation 15
  16. 16. © 2012 Elapse Technologies© 2012 Elapse Technologies L’ORIENTATION OBJET Rappel de
  17. 17. Messages et collaboration Classe C Classe B © 2012 Elapse Technologies © 2012 Elapse Technologies Classe Classe D A Classe Classe E F UI Domaine Infrastructure Collaboration des objets  fonctionnalité
  18. 18. Le « Tell don’t Ask » © 2012 Elapse Technologies © 2012 Elapse TechnologiesImage: renjith krishnan et jscreationzs / FreeDigitalPhotos.net
  19. 19. Pourquoi le « Tell don’t ask » Cacher le « comment » Limiter l’effet des modifications à la logique (algorithme) © 2012 Elapse Technologies © 2012 Elapse Technologies Éviter les « trains » d’appels Réduire la duplication Laisser les objets « s’occuper de leurs oignons » Éviter les « domaines anémiques »
  20. 20. Un objet est une boîte noireStimulus Réception d’un message Envoi d’un message à © 2012 Elapse Technologies © 2012 Elapse Technologies un collaborateur Effet Classe Envoi d’un message à un collaborateurEffet Retour d’une réponse
  21. 21. © 2012 Elapse Technologies © 2012 Elapse Technologies Comment PILOTER SON DESIGN AVEC DES MOCKS?Image: jscreationzs / FreeDigitalPhotos.net
  22. 22. Le TDD « Mockiste » Centré sur les o Interactions entre les objets o Rôles et responsabilités © 2012 Elapse Technologies © 2012 Elapse Technologies Utilise les Mocks comme pierre angulaire Évolution du « design » o Par le raffinement o Découverte des types par les Mocks o Définition de l’interface à partir des besoins établis dans les autres tests grâce aux mocks. 22
  23. 23. TDD piloté par les MocksIdentifier les rôles requis (dépendances) par le module testé Viewer <<Interface>> <<Interface>> Test Viewer ? Loader FileReader © 2012 Elapse Technologies © 2012 Elapse Technologies Mock Mock PNGLoader Classe Test ? PNGLoader Découverte pas à pas Tirer les types à partir de la demande
  24. 24. TDD piloté par les MocksArriver à destination… Test <<Interface>> <<Interface>> acceptation Viewer Loader FileReader © 2012 Elapse Technologies © 2012 Elapse Technologies UTest Utest Classe Fake Utest PNGLoader FileReader Terminé
  25. 25. En résumé1. Établir quelle est la responsabilité de l’objet testé2. De quoi est-ce que l’objet a besoin pour réaliser son travail en terme de rôles? © 2012 Elapse Technologies © 2012 Elapse Technologies3. Quels effets aura ce comportement sur l’environnement immédiat?banque.acheter(carte, marchand, montant) --> carte.crediter(montant) --> marchand.debiter(montant)
  26. 26. © 2012 Elapse Technologies© 2012 Elapse Technologies DÉMONSTRATION Présentation de la
  27. 27. Soumissions à une conférence Système pour gérer les propositions soumises à une conférence Story #1: © 2012 Elapse Technologies © 2012 Elapse Technologies o Permettre la soumission d’une présentation o Les présentations doivent être accumulées en attendant d’être évaluées par le comité o Notifier le comité à la réception
  28. 28. Approche « top-down » UI © 2012 Elapse Technologies © 2012 Elapse Technologies Réusinage Domaine Infrastructure TDD Duplication?Image: Simon Howden / FreeDigitalPhotos.net
  29. 29. Piloter le design par les mocks MyLibraryView LibraryRealTime Composer à partir des View interactions …Presenter …Presenter UI Position « utilisateur »Moc © 2012 Elapse Technologies © 2012 Elapse Technologies k OnlineLibrary Book Explorations successives Moc (étape par étape) LibraryProvider k Reporter les décisions Domaine d’implémentations OnlineService Explorer sans trop se compromettre InfrastructureImage: Simon Howden / FreeDigitalPhotos.net
  30. 30. Avantages Favorise le respect du « Tell don’t ask » Permet de définir les interfaces à partir des besoins o Force à se concentrer sur le « Quoi » avant le « Comment » © 2012 Elapse Technologies © 2012 Elapse Technologies o On définit d’abord le « Quoi » à partir des tests des autres Retarde les décisions d’implémentations Favorise un design testable L’isolation favorise le réusinage 31
  31. 31. Ce que l’on obtient généralement Hiérarchie mince Design basé sur les rôles Abstraction (sous la forme de rôles) © 2012 Elapse Technologies © 2012 Elapse Technologies Nommage en position d’utilisateur o Méthodes et types Meilleur respect du « Tell don’t ask »
  32. 32. Désavantages Moins adapté pour découvrir les détails (le « comment ») Peut résulter en une trop grande séparation © 2012 Elapse Technologies © 2012 Elapse Technologies o Trop de classes/interfaces Fonctionne moins bien sur les systèmes basés sur les données et fortement algorithmiques 33
  33. 33. Mauvaises odeurs détectables Beaucoup de Mocks o Couplage… Difficile d’injecter les Mocks © 2012 Elapse Technologies © 2012 Elapse Technologies o Pourquoi les dépendances ne sont pas passées? o Patron « Factory »? Paramètres multiples (constructeurs et méthodes) o Extraction d’un concept? Incapable de trouver un nom Etc.
  34. 34. Complémentarité Cette technique doit être combinée! Alterner entre les © 2012 Elapse Technologies © 2012 Elapse Technologies techniques apporte généralement de bons résultats. Choisir selon ce que l’on veut découvrir (design ou algorithme) 35
  35. 35. TDD et architecture Favorise l’écriture de code testable Offre une rétroaction concernant la facilité d’utilisation du « design » © 2012 Elapse Technologies © 2012 Elapse Technologies Favorise l’écriture de code faiblement couplé Favorise l’écriture de code réutilisable Favorise l’évolution de l’architecture et la découverte progressive o Colle à la réalité et aux besoins présents
  36. 36. Le mot de la fin… Questions? Poursuivre la discussion? Félix-Antoine Bourbonnais © 2012 Elapse Technologies © 2012 Elapse Technologies @fbourbonnais fbourbonnais@elapsetech.com elapsetech.com/fabImage de digitalart / FreeDigitalPhotos.net 37
  37. 37. Téléchargement Diapositives http://developpementagile.com © 2012 Elapse Technologies © 2012 Elapse Technologies Code https://github.com/fbourbonnais/ elapse-mocks-architecture-atmtl2012Image de anamkkml/ FreeDigitalPhotos.net et github.com 38
  38. 38. Elapse TechnologiesVotre allié en développement logiciel Agile Formation Accompagnement (coaching) © 2012 Elapse Technologies © 2012 Elapse Technologies Conseils et diagnostiques Agilité (Scrum, Lean, XP) Qualité et tests automatisés Architecture Agile Pratiques de développement
  39. 39. © 2012 Elapse Technologies © 2012 Elapse TechnologiesRéférences
  40. 40. Références Steve Freeman, Tim Mackinnon, Nat Pryce, et Joe Walnes. Mock roles, Not objects. p. 236–246. OOPSLA ’04. Vancouver, BC, Canada, ACM, 2004. Nat Pryce, et Steve Freeman, InfoQ: Mock Roles Not Object States . © 2012 Elapse Technologies © 2012 Elapse Technologies QCon London 2007 http://www.infoq.com/presentations/Mock-Objects-Nat-Pryce- Steve-Freeman Martin Fowler, Mocks Aren’t Stubs, 2 janvier 2007. [Résumé des approches] http://martinfowler.com/articles/mocksArentStubs.html
  41. 41. Références Steve Freeman, Sustainable Test-Driven Development. QCon San Francisco 2009. http://www.infoq.com/presentations/Sustainable-Test-Driven- Development © 2012 Elapse Technologies © 2012 Elapse Technologies Codemanship presents... Classic TDD vs. London School, 2011. [Critiqué] http://www.youtube.com/watch?v=AUE155LISV4 Michael Feathers et Steve Freeman. Michael Feathers and Steve Freeman on Design, InfoQ at QCon San Francisco 2009 http://www.infoq.com/interviews/feathers-freeman-design Discussion – « Classic TDD or « London School » - any opinions/comments/elaboration on Jason Gorman’s post? » GOOS Mailinglist, 2011. https://groups.google.com/d/topic/growing-object-oriented- software/dOmOIafFDcI/discussion

×