SlideShare ist ein Scribd-Unternehmen logo
1 von 41
Downloaden Sie, um offline zu lesen
Propulsez votre architecture
     grâce aux mocks

        Agile Tour 2012




                               © 2012 Elapse Technologies
           Montréal

         24 novembre 2012
Félix-Antoine Bourbonnais
Ing. 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
Réchauffement…
           Quelles sont vos
             attentes?




                                  © 2012 Elapse Technologies
                                  © 2012 Elapse Technologies
           Qui fait du TDD?


         Qui utilise des Mocks?

                              3
© 2012 Elapse Technologies
                                    © 2012 Elapse Technologies
Comment découvrir l’architecture?




                                                     TDD
                                        Mocks
© 2012 Elapse Technologies
© 2012 Elapse Technologies
                                   DOUBLURES ET MOCKS
                Introduction aux
Tests unitaires
But: tester les modules en isolation.




                                        © 2012 Elapse Technologies
                                        © 2012 Elapse Technologies
© 2012 Elapse Technologies
                     © 2012 Elapse Technologies
                                                  7
                                            N
                 X
                 A




                                            B
Fonctionnement



                          CUT
                       CUT
                       Test
© 2012 Elapse Technologies
                     © 2012 Elapse Technologies
                                                  8
                                            N
                 X
                 A




                                            B
Fonctionnement



                          CUT
                       CUT
                       Test
Fonctionnement

                 A’          A’’              A’’’

             Retourne      Lance          Retourne




                                                       © 2012 Elapse Technologies
                                                       © 2012 Elapse Technologies
                [1]     IOException        [1, 2, 3]
CUT
       CUT
Test



                 D’




                                      9
© 2012 Elapse Technologies
© 2012 Elapse Technologies
                Rappels des fondements du

                                            TDD
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 ».

                               Faire
3   Réusiner                 passer le
                               test
                                         2
     On passe à la phase « Réusinage »
     dès que le test passe.
                                                     11
© 2012 Elapse Technologies
                                           © 2012 Elapse Technologies
    Le design et le

    TDD « CLASSIQUE »

Image: posterize / FreeDigitalPhotos.net
TDD classique

                   Centré sur l’état et le résultat final




                                                            © 2012 Elapse Technologies
                                                            © 2012 Elapse Technologies
Image: nuchylee / FreeDigitalPhotos.net
TDD classique
Extraction des types



          Classe       Division
            P                     Classe          Classe




                                                           © 2012 Elapse Technologies
                                                           © 2012 Elapse Technologies
                                    P               R1
                                           Mock
                                            R1




          PTest                    PTest          R1Test
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
© 2012 Elapse Technologies
© 2012 Elapse Technologies
                            L’ORIENTATION OBJET
                Rappel de
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é
Le « Tell don’t Ask »




                                                                  © 2012 Elapse Technologies
                                                                  © 2012 Elapse Technologies
Image: renjith krishnan et jscreationzs / FreeDigitalPhotos.net
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 »
Un objet est une boîte noire
Stimulus




           Réception d’un message

                                             Envoi d’un message à




                                                                            © 2012 Elapse Technologies
                                                                            © 2012 Elapse Technologies
                                               un collaborateur




                                                                    Effet
                                    Classe
                                             Envoi d’un message à
                                               un collaborateur
Effet




             Retour d’une réponse
© 2012 Elapse Technologies
                                              © 2012 Elapse Technologies
    Comment

    PILOTER SON DESIGN AVEC DES
    MOCKS?
Image: jscreationzs / FreeDigitalPhotos.net
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
TDD piloté par les Mocks
Identifier 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
TDD piloté par les Mocks
Arriver à destination…


       Test                                <<Interface>>           <<Interface>>
    acceptation
                          Viewer             Loader                FileReader




                                                                                   © 2012 Elapse Technologies
                                                                                   © 2012 Elapse Technologies
                  UTest




                                   Utest
                                             Classe                    Fake
                                                           Utest
                                           PNGLoader               FileReader



                                                              Terminé
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 Technologies
3. Quels effets aura ce comportement sur l’environnement
   immédiat?
banque.acheter(carte, marchand, montant)
   --> carte.crediter(montant)
   --> marchand.debiter(montant)
© 2012 Elapse Technologies
© 2012 Elapse Technologies
                                     DÉMONSTRATION
                Présentation de la
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
Approche « top-down »

                       UI




                                                                © 2012 Elapse Technologies
                                                                © 2012 Elapse Technologies
                                              Réusinage


                  Domaine



              Infrastructure                              TDD

                Duplication?


Image: Simon Howden / FreeDigitalPhotos.net
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
        Infrastructure


Image: Simon Howden / FreeDigitalPhotos.net
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
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 »
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
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.
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
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
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/fab




Image de digitalart / FreeDigitalPhotos.net               37
Téléchargement

                    Diapositives
                    http://developpementagile.com




                                                                  © 2012 Elapse Technologies
                                                                  © 2012 Elapse Technologies
                    Code
                    https://github.com/fbourbonnais/
                            elapse-mocks-architecture-atmtl2012




Image de anamkkml/ FreeDigitalPhotos.net et github.com   38
Elapse Technologies
Votre 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
© 2012 Elapse Technologies
             © 2012 Elapse Technologies
Références
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
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

Weitere ähnliche Inhalte

Was ist angesagt?

Industrialisation des développements Java
Industrialisation des développements JavaIndustrialisation des développements Java
Industrialisation des développements JavaChristian Blavier
 
Innovations Techniques Au Service Du Test De Recette Automatisé
Innovations Techniques Au Service Du Test De Recette AutomatiséInnovations Techniques Au Service Du Test De Recette Automatisé
Innovations Techniques Au Service Du Test De Recette AutomatiséEmmanuel Hugonnet
 
Les Tests : une évolution, pas une révolution
Les Tests : une évolution, pas une révolutionLes Tests : une évolution, pas une révolution
Les Tests : une évolution, pas une révolutionZeenat Nazaroudine
 
AT Marseille 2011 - Réduisons les gaspillages
AT Marseille 2011 - Réduisons les gaspillagesAT Marseille 2011 - Réduisons les gaspillages
AT Marseille 2011 - Réduisons les gaspillagesJérôme Avoustin
 
Agilite Puissance3 chez W4
Agilite Puissance3 chez W4Agilite Puissance3 chez W4
Agilite Puissance3 chez W4Jean-Luc MAZE
 
Webinar dalisys externalisation_de_test_2012-09-20
Webinar dalisys externalisation_de_test_2012-09-20Webinar dalisys externalisation_de_test_2012-09-20
Webinar dalisys externalisation_de_test_2012-09-20DALISYS
 
Introduction AOP
Introduction AOPIntroduction AOP
Introduction AOPKlee Group
 
Libre Semester of Code : Faire travailler les étudiants sur des logiciels lib...
Libre Semester of Code : Faire travailler les étudiants sur des logiciels lib...Libre Semester of Code : Faire travailler les étudiants sur des logiciels lib...
Libre Semester of Code : Faire travailler les étudiants sur des logiciels lib...here_and_there
 
AgileTour Toulouse 2012 : clean code en pratique
AgileTour Toulouse 2012 : clean code en pratiqueAgileTour Toulouse 2012 : clean code en pratique
AgileTour Toulouse 2012 : clean code en pratiqueAgile Toulouse
 
20100910 mda en-2010-jug_summer_camp
20100910 mda en-2010-jug_summer_camp20100910 mda en-2010-jug_summer_camp
20100910 mda en-2010-jug_summer_campBENOIS Jérôme
 

Was ist angesagt? (20)

Initiation à l&rsquo;AOP
Initiation à l&rsquo;AOPInitiation à l&rsquo;AOP
Initiation à l&rsquo;AOP
 
Le pilotage par les tests
Le pilotage par les testsLe pilotage par les tests
Le pilotage par les tests
 
Industrialisation des développements Java
Industrialisation des développements JavaIndustrialisation des développements Java
Industrialisation des développements Java
 
Innovations Techniques Au Service Du Test De Recette Automatisé
Innovations Techniques Au Service Du Test De Recette AutomatiséInnovations Techniques Au Service Du Test De Recette Automatisé
Innovations Techniques Au Service Du Test De Recette Automatisé
 
Soigner Sa Schizophrénie
Soigner Sa SchizophrénieSoigner Sa Schizophrénie
Soigner Sa Schizophrénie
 
Les Tests : une évolution, pas une révolution
Les Tests : une évolution, pas une révolutionLes Tests : une évolution, pas une révolution
Les Tests : une évolution, pas une révolution
 
AT Marseille 2011 - Réduisons les gaspillages
AT Marseille 2011 - Réduisons les gaspillagesAT Marseille 2011 - Réduisons les gaspillages
AT Marseille 2011 - Réduisons les gaspillages
 
Initiation à l'agile
Initiation à l'agileInitiation à l'agile
Initiation à l'agile
 
Agilite Puissance3 chez W4
Agilite Puissance3 chez W4Agilite Puissance3 chez W4
Agilite Puissance3 chez W4
 
CM processus agile
CM processus agileCM processus agile
CM processus agile
 
Webinar dalisys externalisation_de_test_2012-09-20
Webinar dalisys externalisation_de_test_2012-09-20Webinar dalisys externalisation_de_test_2012-09-20
Webinar dalisys externalisation_de_test_2012-09-20
 
Wicket - JUG Lausanne
Wicket - JUG LausanneWicket - JUG Lausanne
Wicket - JUG Lausanne
 
CM patterns
CM patternsCM patterns
CM patterns
 
Présentation1
Présentation1Présentation1
Présentation1
 
Introduction à Uml
Introduction à UmlIntroduction à Uml
Introduction à Uml
 
Introduction AOP
Introduction AOPIntroduction AOP
Introduction AOP
 
Libre Semester of Code : Faire travailler les étudiants sur des logiciels lib...
Libre Semester of Code : Faire travailler les étudiants sur des logiciels lib...Libre Semester of Code : Faire travailler les étudiants sur des logiciels lib...
Libre Semester of Code : Faire travailler les étudiants sur des logiciels lib...
 
Présentation kanban
Présentation kanbanPrésentation kanban
Présentation kanban
 
AgileTour Toulouse 2012 : clean code en pratique
AgileTour Toulouse 2012 : clean code en pratiqueAgileTour Toulouse 2012 : clean code en pratique
AgileTour Toulouse 2012 : clean code en pratique
 
20100910 mda en-2010-jug_summer_camp
20100910 mda en-2010-jug_summer_camp20100910 mda en-2010-jug_summer_camp
20100910 mda en-2010-jug_summer_camp
 

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

Codedarmor 2012 - 09/10 - Eclipse 4 & Acceleo
Codedarmor 2012 - 09/10 - Eclipse 4 & AcceleoCodedarmor 2012 - 09/10 - Eclipse 4 & Acceleo
Codedarmor 2012 - 09/10 - Eclipse 4 & Acceleocodedarmor
 
Eclipse4 et acceleo
Eclipse4 et acceleoEclipse4 et acceleo
Eclipse4 et acceleoglefur
 
Tests d'Acceptance et Specflow
Tests d'Acceptance et SpecflowTests d'Acceptance et Specflow
Tests d'Acceptance et SpecflowCedricRup
 
Code Reviews Devoxx France 2012
Code Reviews Devoxx France 2012Code Reviews Devoxx France 2012
Code Reviews Devoxx France 2012Mattias Karlsson
 
Les pratiques des geants du web
Les pratiques des geants du webLes pratiques des geants du web
Les pratiques des geants du webStephen PERIN
 
DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...
DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...
DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...Adrien Blind
 
Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Elapse Technologies
 
L'agilité chez Jouve via le Behaviour Driven Development
L'agilité chez Jouve via le Behaviour Driven DevelopmentL'agilité chez Jouve via le Behaviour Driven Development
L'agilité chez Jouve via le Behaviour Driven DevelopmentJouve
 
Human Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDHuman Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDXavier NOPRE
 
Le projet Tiger à l'EPITA
Le projet Tiger à l'EPITALe projet Tiger à l'EPITA
Le projet Tiger à l'EPITAhere_and_there
 
Introduction a l_agilite_iut_lyon_1_decembre2011
Introduction a l_agilite_iut_lyon_1_decembre2011Introduction a l_agilite_iut_lyon_1_decembre2011
Introduction a l_agilite_iut_lyon_1_decembre2011agnes_crepet
 
eXtreme Programming [fr]
eXtreme Programming [fr]eXtreme Programming [fr]
eXtreme Programming [fr]Rémy Coutable
 
Mise en place d'une usine logicielle avec TFS et Test Manager 2010
Mise en place d'une usine logicielle avec TFS et Test Manager 2010Mise en place d'une usine logicielle avec TFS et Test Manager 2010
Mise en place d'une usine logicielle avec TFS et Test Manager 2010Microsoft Technet France
 
Test unitaires visual studio
Test unitaires visual studioTest unitaires visual studio
Test unitaires visual studioSOAT
 
MS TechDays 2012 -Mise en place d'une usine logicielle avec TFS et Test Manag...
MS TechDays 2012 -Mise en place d'une usine logicielle avec TFS et Test Manag...MS TechDays 2012 -Mise en place d'une usine logicielle avec TFS et Test Manag...
MS TechDays 2012 -Mise en place d'une usine logicielle avec TFS et Test Manag...Raynald M
 
Accenture 7fevrier2012
Accenture 7fevrier2012Accenture 7fevrier2012
Accenture 7fevrier2012GreenICTies
 
Innover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans ruptureInnover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans ruptureGuillaume Laforge
 
Dialonics soutenance de projet final (31 aout 2012)
Dialonics soutenance de projet final (31 aout 2012)Dialonics soutenance de projet final (31 aout 2012)
Dialonics soutenance de projet final (31 aout 2012)legendcasio
 
20171122 03 - Les tests de performance en environnement DevOps
20171122 03 - Les tests de performance en environnement DevOps20171122 03 - Les tests de performance en environnement DevOps
20171122 03 - Les tests de performance en environnement DevOpsLeClubQualiteLogicielle
 
03 jus 2011 11 15 bilan2 011
03 jus 2011 11 15 bilan2 01103 jus 2011 11 15 bilan2 011
03 jus 2011 11 15 bilan2 011OpenCascade
 

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

Codedarmor 2012 - 09/10 - Eclipse 4 & Acceleo
Codedarmor 2012 - 09/10 - Eclipse 4 & AcceleoCodedarmor 2012 - 09/10 - Eclipse 4 & Acceleo
Codedarmor 2012 - 09/10 - Eclipse 4 & Acceleo
 
Eclipse4 et acceleo
Eclipse4 et acceleoEclipse4 et acceleo
Eclipse4 et acceleo
 
Tests d'Acceptance et Specflow
Tests d'Acceptance et SpecflowTests d'Acceptance et Specflow
Tests d'Acceptance et Specflow
 
Code Reviews Devoxx France 2012
Code Reviews Devoxx France 2012Code Reviews Devoxx France 2012
Code Reviews Devoxx France 2012
 
Les pratiques des geants du web
Les pratiques des geants du webLes pratiques des geants du web
Les pratiques des geants du web
 
DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...
DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...
DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...
 
Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29
 
L'agilité chez Jouve via le Behaviour Driven Development
L'agilité chez Jouve via le Behaviour Driven DevelopmentL'agilité chez Jouve via le Behaviour Driven Development
L'agilité chez Jouve via le Behaviour Driven Development
 
Human Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDHuman Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDD
 
Le projet Tiger à l'EPITA
Le projet Tiger à l'EPITALe projet Tiger à l'EPITA
Le projet Tiger à l'EPITA
 
Introduction a l_agilite_iut_lyon_1_decembre2011
Introduction a l_agilite_iut_lyon_1_decembre2011Introduction a l_agilite_iut_lyon_1_decembre2011
Introduction a l_agilite_iut_lyon_1_decembre2011
 
eXtreme Programming [fr]
eXtreme Programming [fr]eXtreme Programming [fr]
eXtreme Programming [fr]
 
Mise en place d'une usine logicielle avec TFS et Test Manager 2010
Mise en place d'une usine logicielle avec TFS et Test Manager 2010Mise en place d'une usine logicielle avec TFS et Test Manager 2010
Mise en place d'une usine logicielle avec TFS et Test Manager 2010
 
Test unitaires visual studio
Test unitaires visual studioTest unitaires visual studio
Test unitaires visual studio
 
MS TechDays 2012 -Mise en place d'une usine logicielle avec TFS et Test Manag...
MS TechDays 2012 -Mise en place d'une usine logicielle avec TFS et Test Manag...MS TechDays 2012 -Mise en place d'une usine logicielle avec TFS et Test Manag...
MS TechDays 2012 -Mise en place d'une usine logicielle avec TFS et Test Manag...
 
Accenture 7fevrier2012
Accenture 7fevrier2012Accenture 7fevrier2012
Accenture 7fevrier2012
 
Innover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans ruptureInnover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans rupture
 
Dialonics soutenance de projet final (31 aout 2012)
Dialonics soutenance de projet final (31 aout 2012)Dialonics soutenance de projet final (31 aout 2012)
Dialonics soutenance de projet final (31 aout 2012)
 
20171122 03 - Les tests de performance en environnement DevOps
20171122 03 - Les tests de performance en environnement DevOps20171122 03 - Les tests de performance en environnement DevOps
20171122 03 - Les tests de performance en environnement DevOps
 
03 jus 2011 11 15 bilan2 011
03 jus 2011 11 15 bilan2 01103 jus 2011 11 15 bilan2 011
03 jus 2011 11 15 bilan2 011
 

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

  • 1. Propulsez votre architecture grâce aux mocks Agile Tour 2012 © 2012 Elapse Technologies Montréal 24 novembre 2012
  • 2. Félix-Antoine Bourbonnais Ing. 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. Réchauffement… Quelles sont vos attentes? © 2012 Elapse Technologies © 2012 Elapse Technologies Qui fait du TDD? Qui utilise des Mocks? 3
  • 4. © 2012 Elapse Technologies © 2012 Elapse Technologies Comment découvrir l’architecture? TDD Mocks
  • 5. © 2012 Elapse Technologies © 2012 Elapse Technologies DOUBLURES ET MOCKS Introduction aux
  • 6. Tests unitaires But: tester les modules en isolation. © 2012 Elapse Technologies © 2012 Elapse Technologies
  • 7. © 2012 Elapse Technologies © 2012 Elapse Technologies 7 N X A B Fonctionnement CUT CUT Test
  • 8. © 2012 Elapse Technologies © 2012 Elapse Technologies 8 N X A B Fonctionnement CUT CUT Test
  • 9. Fonctionnement A’ A’’ A’’’ Retourne Lance Retourne © 2012 Elapse Technologies © 2012 Elapse Technologies [1] IOException [1, 2, 3] CUT CUT Test D’ 9
  • 10. © 2012 Elapse Technologies © 2012 Elapse Technologies Rappels des fondements du TDD
  • 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 ». Faire 3 Réusiner passer le test 2 On passe à la phase « Réusinage » dès que le test passe. 11
  • 12. © 2012 Elapse Technologies © 2012 Elapse Technologies Le design et le TDD « CLASSIQUE » Image: posterize / FreeDigitalPhotos.net
  • 13. TDD classique Centré sur l’état et le résultat final © 2012 Elapse Technologies © 2012 Elapse Technologies Image: nuchylee / FreeDigitalPhotos.net
  • 14. TDD classique Extraction des types Classe Division P Classe Classe © 2012 Elapse Technologies © 2012 Elapse Technologies P R1 Mock R1 PTest PTest R1Test
  • 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. © 2012 Elapse Technologies © 2012 Elapse Technologies L’ORIENTATION OBJET Rappel de
  • 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. Le « Tell don’t Ask » © 2012 Elapse Technologies © 2012 Elapse Technologies Image: renjith krishnan et jscreationzs / FreeDigitalPhotos.net
  • 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. Un objet est une boîte noire Stimulus Réception d’un message Envoi d’un message à © 2012 Elapse Technologies © 2012 Elapse Technologies un collaborateur Effet Classe Envoi d’un message à un collaborateur Effet Retour d’une réponse
  • 21. © 2012 Elapse Technologies © 2012 Elapse Technologies Comment PILOTER SON DESIGN AVEC DES MOCKS? Image: jscreationzs / FreeDigitalPhotos.net
  • 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. TDD piloté par les Mocks Identifier 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. TDD piloté par les Mocks Arriver à destination… Test <<Interface>> <<Interface>> acceptation Viewer Loader FileReader © 2012 Elapse Technologies © 2012 Elapse Technologies UTest Utest Classe Fake Utest PNGLoader FileReader Terminé
  • 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 Technologies 3. Quels effets aura ce comportement sur l’environnement immédiat? banque.acheter(carte, marchand, montant) --> carte.crediter(montant) --> marchand.debiter(montant)
  • 26. © 2012 Elapse Technologies © 2012 Elapse Technologies DÉMONSTRATION Présentation de la
  • 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. Approche « top-down » UI © 2012 Elapse Technologies © 2012 Elapse Technologies Réusinage Domaine Infrastructure TDD Duplication? Image: Simon Howden / FreeDigitalPhotos.net
  • 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 Infrastructure Image: Simon Howden / FreeDigitalPhotos.net
  • 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. 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. 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. 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. 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. 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. 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/fab Image de digitalart / FreeDigitalPhotos.net 37
  • 37. Téléchargement Diapositives http://developpementagile.com © 2012 Elapse Technologies © 2012 Elapse Technologies Code https://github.com/fbourbonnais/ elapse-mocks-architecture-atmtl2012 Image de anamkkml/ FreeDigitalPhotos.net et github.com 38
  • 38. Elapse Technologies Votre 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. © 2012 Elapse Technologies © 2012 Elapse Technologies Références
  • 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. 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