©2012ElapseTechnologies© 2013 Elapse Technologies© 2013 Elapse TechnologiesPropulsez votrearchitecture grâce auTDD et aux ...
©2013ElapseTechnologies©2013ElapseTechnologiesAvertissementCette présentation est deniveau « avancé »
©2013ElapseTechnologies©2013ElapseTechnologiesFélix-Antoine BourbonnaisFormateur & Coach Agileo Tests automatisés: TDD, AT...
©2013ElapseTechnologies©2013ElapseTechnologiesRéchauffement…Qui fait du TDD?Qui utilise des Mocks?Quelles sont vosattentes...
©2013ElapseTechnologies©2013ElapseTechnologiesComment découvrir l’architecture?TDDMocks
©2013ElapseTechnologies©2013ElapseTechnologiesDOUBLURES ET MOCKSRappel sur les
©2013ElapseTechnologies©2013ElapseTechnologiesRappel: les tests unitairesBut: tester les modules en isolation.
©2013ElapseTechnologies©2013ElapseTechnologiesRappel: les mocksCUTTestCUTABXN
©2013ElapseTechnologies©2013ElapseTechnologiesRappel: les mocksCTestCABXN
©2013ElapseTechnologies©2013ElapseTechnologiesRappel: les mocksCTestCA’B’A’’LanceIOExceptionRetourne[1]
©2013ElapseTechnologies©2013ElapseTechnologiesTDDRappels des fondements du
©2013ElapseTechnologies©2013ElapseTechnologiesTechnique ou discipline?Le TDD est une discipline
©2013ElapseTechnologies©2013ElapseTechnologiesCycle du TDDÉcrire untest quiéchoueFairepasser letestRéusinerOn passe à la p...
©2013ElapseTechnologies©2013ElapseTechnologiesShu-Ha-RiL’élève suitl’enseignementd’un maîtreSHUIl apprendde d’autresmaître...
©2013ElapseTechnologies©2013ElapseTechnologiesTDD « CLASSIQUE »Le design et leImage: posterize / FreeDigitalPhotos.net
©2013ElapseTechnologies©2013ElapseTechnologiesTDD classiqueImage: nuchylee / FreeDigitalPhotos.netCentré sur l’état et le ...
©2013ElapseTechnologies©2013ElapseTechnologiesTDD classiqueExtraction des typesClasseP ClasseR1PTestDivisionR1TestClassePP...
©2013ElapseTechnologies©2013ElapseTechnologiesLe TDD classiqueTDDClassiqueÉvolution du« design »•Par division•ExtractionPr...
©2013ElapseTechnologies©2013ElapseTechnologiesL’ORIENTATION OBJETRappel de
©2013ElapseTechnologies©2013ElapseTechnologiesInfrastructureDomaineUIMessages et collaborationClasseACtrlCollaboration des...
©2013ElapseTechnologies©2013ElapseTechnologiesLe « Tell don’t Ask »Image: renjith krishnan et jscreationzs / FreeDigitalPh...
©2013ElapseTechnologies©2013ElapseTechnologiesPourquoi le « Tell don’t ask »Cacher le« comment »Limiter l’effetdesmodifica...
©2013ElapseTechnologies©2013ElapseTechnologiesStimulusUn objet est une boîte noireClasseRéception d’un messageEnvoi d’un m...
©2013ElapseTechnologies©2013ElapseTechnologiesPILOTER SON DESIGN AVEC DESMOCKS?CommentImage: jscreationzs / FreeDigitalPho...
©2013ElapseTechnologies©2013ElapseTechnologiesLe TDD « Mockiste »Centré sur les interactions et comportementsentre les obj...
©2013ElapseTechnologies©2013ElapseTechnologiesLe TDD « Mockiste »Utilise les Mocks comme pierre angulaireImages: cooldesig...
©2013ElapseTechnologies©2013ElapseTechnologiesÉvolution du « design »Par le raffinementDécouverte des types par les MocksD...
©2013ElapseTechnologies©2013ElapseTechnologiesTDD piloté par les MocksIdentifier les rôles requis (dépendances) par le mod...
©2013ElapseTechnologies©2013ElapseTechnologiesTDD piloté par les MocksArriver à destination…TestacceptationViewerUTestTerm...
©2013ElapseTechnologies©2013ElapseTechnologiesEn résuméQuels effets aura ce comportementsur l’environnement immédiat?De qu...
©2013ElapseTechnologies©2013ElapseTechnologiesExemplebanque.acheter(carte, marchand, montant)--> carte.crediter(montant)--...
©2013ElapseTechnologies©2013ElapseTechnologiesDÉMONSTRATIONPrésentation de laImage: Stuart Miles / freedigitalphotos.net
©2013ElapseTechnologies©2013ElapseTechnologiesSoumissions à une conférence#1 Soumission d’une présentationEn tant que soum...
©2013ElapseTechnologies©2013ElapseTechnologiesApproche « outside-in »Image: Simon Howden / FreeDigitalPhotos.netUIDomaineI...
©2013ElapseTechnologies©2013ElapseTechnologiesPiloter le design par les mocksComposer à partir desinteractionsPosition « u...
©2013ElapseTechnologies©2013ElapseTechnologiesAvantages de l’approche mockisteFavorise le« Tell don’t ask »Moins de« train...
©2013ElapseTechnologies©2013ElapseTechnologiesAvantages de l’approche mockisteDéveloppementpiloté par lesbesoins(need-driv...
©2013ElapseTechnologies©2013ElapseTechnologiesCe que l’on obtient généralementHiérarchieminceDesign basésur les rôlesAbstr...
©2013ElapseTechnologies©2013ElapseTechnologiesDésavantages de l’approche mockisteCouplage du testavec la signaturedes coll...
©2013ElapseTechnologies©2013ElapseTechnologiesLa Bonne question…Que voulez-vousmaximiser ?
©2013ElapseTechnologies©2013ElapseTechnologiesComplémentaritéCette école doit êtrecombinée!Alterner entre lestechniques ap...
©2013ElapseTechnologies©2013ElapseTechnologiesMauvaises odeurs détectablesMauvaise odeurs avec les mocksBeaucoupde MocksCo...
©2013ElapseTechnologies©2013ElapseTechnologiesRappel: TDD et architecture+Code testableRétroaction:« design »simple?-Code ...
©2013ElapseTechnologies©2013ElapseTechnologiesLe mot de la fin…Questions? Poursuivre la discussion?Image de digitalart / F...
©2013ElapseTechnologies©2013ElapseTechnologiesTéléchargementImage de anamkkml/ FreeDigitalPhotos.net et github.comDiaposit...
©2013ElapseTechnologies©2013ElapseTechnologiesElapse TechnologiesFormationAccompagnement (coaching)Conseils et diagnostiqu...
©2013ElapseTechnologies©2013ElapseTechnologiesRéférences
©2013ElapseTechnologies©2013ElapseTechnologiesRéférencesSteve Freeman, Tim Mackinnon, Nat Pryce, et Joe Walnes.Mock roles,...
©2013ElapseTechnologies©2013ElapseTechnologiesRéférencesSteve Freeman, Sustainable Test-Driven Development. QCon San Franc...
Prochain SlideShare
Chargement dans…5
×

Propulsez votre architecture grâce au TDD et aux mocks (Agile Québec 2013)

1 108 vues

Publié le

La communauté a découvert depuis un certain temps des pratiques permettant de maximiser l'émergence du design (architecture) via le TDD. Mais comment faire? Cette présentation explique comment tirer le maximum de vos tests unitaires et de vos «mocks» à l'aide de l'approche «Mockiste» (TDD de Londres). Nous verrons comment les mocks peuvent aider à concevoir une architecture ayant une meilleure conception orientée objet.

La séance prendra la forme d'un tutoriel (démonstration) avancé en réalisant pas à pas un design simple parsemé de trucs et astuces.

Code source: https://github.com/fbourbonnais/propulsez-architecture-tdd-mocks

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

  • Soyez le premier à aimer ceci

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

Aucune remarque pour cette diapositive

Propulsez votre architecture grâce au TDD et aux mocks (Agile Québec 2013)

  1. 1. ©2012ElapseTechnologies© 2013 Elapse Technologies© 2013 Elapse TechnologiesPropulsez votrearchitecture grâce auTDD et aux mocksAgile Québec12 juin 2013nasa.gov
  2. 2. ©2013ElapseTechnologies©2013ElapseTechnologiesAvertissementCette présentation est deniveau « avancé »
  3. 3. ©2013ElapseTechnologies©2013ElapseTechnologiesFélix-Antoine BourbonnaisFormateur & Coach Agileo Tests automatisés: TDD, ATDD, BDDo Orientation objet avancéeo Architecture agileo Réusinage et qualité (Clean Code)o Agile et ScrumConcepteur de logicielso Pratiques de développemento Java, Python, etc.@fbourbonnaislinkedin.com/in/fbourbonnais/frelapsetech.com/fabwww.elapsetech.comfbourbonnais@elapsetech.com
  4. 4. ©2013ElapseTechnologies©2013ElapseTechnologiesRéchauffement…Qui fait du TDD?Qui utilise des Mocks?Quelles sont vosattentes?Images de: Idea Go / freedigitalphotos.netRameshng / Flickr.com
  5. 5. ©2013ElapseTechnologies©2013ElapseTechnologiesComment découvrir l’architecture?TDDMocks
  6. 6. ©2013ElapseTechnologies©2013ElapseTechnologiesDOUBLURES ET MOCKSRappel sur les
  7. 7. ©2013ElapseTechnologies©2013ElapseTechnologiesRappel: les tests unitairesBut: tester les modules en isolation.
  8. 8. ©2013ElapseTechnologies©2013ElapseTechnologiesRappel: les mocksCUTTestCUTABXN
  9. 9. ©2013ElapseTechnologies©2013ElapseTechnologiesRappel: les mocksCTestCABXN
  10. 10. ©2013ElapseTechnologies©2013ElapseTechnologiesRappel: les mocksCTestCA’B’A’’LanceIOExceptionRetourne[1]
  11. 11. ©2013ElapseTechnologies©2013ElapseTechnologiesTDDRappels des fondements du
  12. 12. ©2013ElapseTechnologies©2013ElapseTechnologiesTechnique ou discipline?Le TDD est une discipline
  13. 13. ©2013ElapseTechnologies©2013ElapseTechnologiesCycle du TDDÉcrire untest quiéchoueFairepasser letestRéusinerOn passe à la phase« VERTE » dès qu’on a untest qui échoue.Erreur de compilateur= « échec ».1On passe à la phase « Réusinage »dès que le test passe.23
  14. 14. ©2013ElapseTechnologies©2013ElapseTechnologiesShu-Ha-RiL’élève suitl’enseignementd’un maîtreSHUIl apprendde d’autresmaîtres(écoles)HAIl suit et asa proprepratique…RIPower de Jardson Araújo du The Noun ProjectKeikogi de Tiago Dos Reis Rodrigues duThe Noun Project
  15. 15. ©2013ElapseTechnologies©2013ElapseTechnologiesTDD « CLASSIQUE »Le design et leImage: posterize / FreeDigitalPhotos.net
  16. 16. ©2013ElapseTechnologies©2013ElapseTechnologiesTDD classiqueImage: nuchylee / FreeDigitalPhotos.netCentré sur l’état et le résultat final
  17. 17. ©2013ElapseTechnologies©2013ElapseTechnologiesTDD classiqueExtraction des typesClasseP ClasseR1PTestDivisionR1TestClassePPTestMockR1
  18. 18. ©2013ElapseTechnologies©2013ElapseTechnologiesLe TDD classiqueTDDClassiqueÉvolution du« design »•Par division•ExtractionProblèmesalgorithmiques•Traitement dedonnées•CalculsValide l’état
  19. 19. ©2013ElapseTechnologies©2013ElapseTechnologiesL’ORIENTATION OBJETRappel de
  20. 20. ©2013ElapseTechnologies©2013ElapseTechnologiesInfrastructureDomaineUIMessages et collaborationClasseACtrlCollaboration des objets  fonctionnalitéClasseBClasseCIfaceEClassePersistClasseD
  21. 21. ©2013ElapseTechnologies©2013ElapseTechnologiesLe « Tell don’t Ask »Image: renjith krishnan et jscreationzs / FreeDigitalPhotos.net
  22. 22. ©2013ElapseTechnologies©2013ElapseTechnologiesPourquoi le « Tell don’t ask »Cacher le« comment »Limiter l’effetdesmodificationsLimiter l’effetd’avalancheRéduire laduplicationLaisser les objets« s’occuper deleurs oignons »Éviter les« domainesanémiques »
  23. 23. ©2013ElapseTechnologies©2013ElapseTechnologiesStimulusUn objet est une boîte noireClasseRéception d’un messageEnvoi d’un message àun collaborateurEnvoi d’un message àun collaborateurRetour d’une réponseEffetEffet…
  24. 24. ©2013ElapseTechnologies©2013ElapseTechnologiesPILOTER SON DESIGN AVEC DESMOCKS?CommentImage: jscreationzs / FreeDigitalPhotos.net
  25. 25. ©2013ElapseTechnologies©2013ElapseTechnologiesLe TDD « Mockiste »Centré sur les interactions et comportementsentre les objets considérant leur rôleImages: sheelamohan / freedigitalphotos.net
  26. 26. ©2013ElapseTechnologies©2013ElapseTechnologiesLe TDD « Mockiste »Utilise les Mocks comme pierre angulaireImages: cooldesign/ freedigitalphotos.net
  27. 27. ©2013ElapseTechnologies©2013ElapseTechnologiesÉvolution du « design »Par le raffinementDécouverte des types par les MocksDéfinition de l’interface à partir des besoins établisdans les autres tests grâce aux mocks.TDD « Mockiste »
  28. 28. ©2013ElapseTechnologies©2013ElapseTechnologiesTDD piloté par les MocksIdentifier les rôles requis (dépendances) par le module testéViewer<<Interface>>LoaderViewerTestDécouverte pas à pasClassePNGLoaderPNGLoaderTest<<Interface>>FileReaderMockMock??Tirer les types à partir de la demande
  29. 29. ©2013ElapseTechnologies©2013ElapseTechnologiesTDD piloté par les MocksArriver à destination…TestacceptationViewerUTestTerminé<<Interface>>LoaderClassePNGLoaderUtest<<Interface>>FileReaderFakeFileReaderUtest
  30. 30. ©2013ElapseTechnologies©2013ElapseTechnologiesEn résuméQuels effets aura ce comportementsur l’environnement immédiat?De quoi est-ce que l’objet a besoinpour réaliser son travail en terme derôles ?Quelle est la responsabilité de l’objettesté ?Classe testée(CUT)ABesoin de(rôle)BEffet surResponsabilité
  31. 31. ©2013ElapseTechnologies©2013ElapseTechnologiesExemplebanque.acheter(carte, marchand, montant)--> carte.crediter(montant)--> marchand.debiter(montant)
  32. 32. ©2013ElapseTechnologies©2013ElapseTechnologiesDÉMONSTRATIONPrésentation de laImage: Stuart Miles / freedigitalphotos.net
  33. 33. ©2013ElapseTechnologies©2013ElapseTechnologiesSoumissions à une conférence#1 Soumission d’une présentationEn tant que soumissionnaireJe veux soumettre une présentation à une conférenceAfin qu’elle soit évaluée par le comité de sélectionCritères d’acceptation• Il est possible de soumettre une présentation• La présentation est accumulée en attendant d’être évaluée par le comité• Le comité est avisé qu’une nouvelle présentation doit être évaluéeDémonstration
  34. 34. ©2013ElapseTechnologies©2013ElapseTechnologiesApproche « outside-in »Image: Simon Howden / FreeDigitalPhotos.netUIDomaineInfrastructureDuplication?RéusinageTDD
  35. 35. ©2013ElapseTechnologies©2013ElapseTechnologiesPiloter le design par les mocksComposer à partir desinteractionsPosition « utilisateur »Explorations successives(étape par étape)Reporter les décisionsd’implémentationsExplorer sans trop secompromettreImage: Simon Howden / FreeDigitalPhotos.netUIDomaineInfrastructureMyLibraryView…PresenterOnlineLibrary BookLibraryProviderLibraryRealTimeView…PresenterOnlineServiceMockMock
  36. 36. ©2013ElapseTechnologies©2013ElapseTechnologiesAvantages de l’approche mockisteFavorise le« Tell don’t ask »Moins de« trains d’appels »(Demeter)Retarde les décisionsd’implémentationsFavorise un designtestableRequiert moinsd’objetsimplémentés pouravoir une rétroactionClasse fautive cibléeen cas d’échec
  37. 37. ©2013ElapseTechnologies©2013ElapseTechnologiesAvantages de l’approche mockisteDéveloppementpiloté par lesbesoins(need-driven)Définir lesinterfaces à partirdes appelantsFocalise sur le« Quoi » avant le« Comment »
  38. 38. ©2013ElapseTechnologies©2013ElapseTechnologiesCe que l’on obtient généralementHiérarchieminceDesign basésur les rôlesAbstraction(rôles)Nommageclair pourl’appelantMeilleurrespect desprincipes OO
  39. 39. ©2013ElapseTechnologies©2013ElapseTechnologiesDésavantages de l’approche mockisteCouplage du testavec la signaturedes collaborateursFonctionne malavec desproblèmesalgorithmiquesGénère beaucoupde mocks etd’interfacesDanger: Tropfocaliser sur le UI(outside-in)Tests unitaires=>aucun test intégréde bas niveau.
  40. 40. ©2013ElapseTechnologies©2013ElapseTechnologiesLa Bonne question…Que voulez-vousmaximiser ?
  41. 41. ©2013ElapseTechnologies©2013ElapseTechnologiesComplémentaritéCette école doit êtrecombinée!Alterner entre lestechniques apportegénéralement de bonsrésultats.Choisir selon ce quel’on veut découvrir
  42. 42. ©2013ElapseTechnologies©2013ElapseTechnologiesMauvaises odeurs détectablesMauvaise odeurs avec les mocksBeaucoupde MocksCouplage…Difficile de les injecterOCP ?Patron« Factory »?BeaucoupdeparamètresExtractiond’unconcept?…
  43. 43. ©2013ElapseTechnologies©2013ElapseTechnologiesRappel: TDD et architecture+Code testableRétroaction:« design »simple?-Code couplé+ Coderéutilisable+ ArchitectureémergeanteToutes approches
  44. 44. ©2013ElapseTechnologies©2013ElapseTechnologiesLe mot de la fin…Questions? Poursuivre la discussion?Image de digitalart / FreeDigitalPhotos.net@fbourbonnaisFélix-Antoine Bourbonnaisfbourbonnais@elapsetech.comelapsetech.com/fab
  45. 45. ©2013ElapseTechnologies©2013ElapseTechnologiesTéléchargementImage de anamkkml/ FreeDigitalPhotos.net et github.comDiapositiveshttp://developpementagile.com/architecture-mocks-tddCode sourcehttps://github.com/fbourbonnais/propulsez-architecture-tdd-mocks
  46. 46. ©2013ElapseTechnologies©2013ElapseTechnologiesElapse TechnologiesFormationAccompagnement (coaching)Conseils et diagnostiquesVotre allié en développement logiciel AgileAgilité (Scrum, Lean, XP)Qualité et tests automatisésArchitecture AgilePratiques de développement
  47. 47. ©2013ElapseTechnologies©2013ElapseTechnologiesRéférences
  48. 48. ©2013ElapseTechnologies©2013ElapseTechnologiesRéférencesSteve 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 .QCon London 2007http://www.infoq.com/presentations/Mock-Objects-Nat-Pryce-Steve-FreemanMartin Fowler, Mocks Aren’t Stubs, 2 janvier 2007.[Résumé des approches]http://martinfowler.com/articles/mocksArentStubs.html
  49. 49. ©2013ElapseTechnologies©2013ElapseTechnologiesRéférencesSteve Freeman, Sustainable Test-Driven Development. QCon San Francisco2009.http://www.infoq.com/presentations/Sustainable-Test-Driven-DevelopmentCodemanship presents... Classic TDD vs. London School, 2011. [Critiqué]http://www.youtube.com/watch?v=AUE155LISV4Michael Feathers et Steve Freeman. Michael Feathers and Steve Freemanon Design, InfoQ at QCon San Francisco 2009http://www.infoq.com/interviews/feathers-freeman-designDiscussion – « Classic TDD or « London School » - anyopinions/comments/elaboration on Jason Gorman’s post? » GOOSMailinglist, 2011.https://groups.google.com/d/topic/growing-object-oriented-software/dOmOIafFDcI/discussion

×