SlideShare uma empresa Scribd logo
1 de 38
Baixar para ler offline
Propulsez votre architecture
 grâce au TDD et aux mocks

        Agile Tour 2012




                               © 2012 Elapse Technologies
        Québec, Canada

          6 novembre 2012
Félix-Antoine Bourbonnais
Ing. jr, PSM-I


    Formateur et Coach Agile
    Spécialités
     o Tests: TDD, ATDD, BDD, etc.




                                                                          © 2012 Elapse Technologies
                                                                          © 2012 Elapse Technologies
     o Orientation objet avancée           http://bit.ly/Qut7Fm

     o Réusinage et qualité (Clean Code)
                                           @fbourbonnais
     o Agile Scrum
                                           linkedin.com/in/fbourbonnais
    Développement
     o Architecture logicielle agile
     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
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


                                               30
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




                                       32
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)

                          33
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
35




© 2012 Elapse Technologies
© 2012 Elapse Technologies
                                     QUESTIONS
                        Période de
Téléchargement
         Téléchargez les diapositives complètes sur
                 developpementagile.com




                                                      © 2012 Elapse Technologies
                                                      © 2012 Elapse Technologies
Image: rajcreationzs / FreeDigitalPhotos.ne   36
© 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

Mais conteúdo relacionado

Mais procurados

Mise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogèneMise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogèneMicrosoft Technet France
 
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
 
Atr2011 3 rex pour differentes facettes du lean- synthèse agile tour-21-09-...
Atr2011  3  rex pour differentes facettes du lean- synthèse agile tour-21-09-...Atr2011  3  rex pour differentes facettes du lean- synthèse agile tour-21-09-...
Atr2011 3 rex pour differentes facettes du lean- synthèse agile tour-21-09-...Eric Hébert
 
TechDays 2013 - Développer avec Visual Studio et TFS 2012 ses applications Wi...
TechDays 2013 - Développer avec Visual Studio et TFS 2012 ses applications Wi...TechDays 2013 - Développer avec Visual Studio et TFS 2012 ses applications Wi...
TechDays 2013 - Développer avec Visual Studio et TFS 2012 ses applications Wi...Cédric Leblond
 
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
 
Test unitaires visual studio
Test unitaires visual studioTest unitaires visual studio
Test unitaires visual studioSOAT
 
Industrialisation des développements Java
Industrialisation des développements JavaIndustrialisation des développements Java
Industrialisation des développements JavaChristian Blavier
 
Valtech - Quel ROI pour ma transformation Agile ? PARTIE 2
Valtech - Quel ROI pour ma transformation Agile ? PARTIE 2Valtech - Quel ROI pour ma transformation Agile ? PARTIE 2
Valtech - Quel ROI pour ma transformation Agile ? PARTIE 2Valtech
 
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
 
Valtech - Quel ROI pour ma transformation Agile ?
Valtech - Quel ROI pour ma transformation Agile ?Valtech - Quel ROI pour ma transformation Agile ?
Valtech - Quel ROI pour ma transformation Agile ?Valtech
 
Eclipse4 et acceleo
Eclipse4 et acceleoEclipse4 et acceleo
Eclipse4 et acceleoglefur
 
Petit DéJeuner Industrialisation 13 10 2011 Eurosites
Petit DéJeuner Industrialisation 13 10 2011 EurositesPetit DéJeuner Industrialisation 13 10 2011 Eurosites
Petit DéJeuner Industrialisation 13 10 2011 EurositesHervé Leclerc
 

Mais procurados (19)

Mise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogèneMise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogène
 
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
 
Initiation à l'agile
Initiation à l'agileInitiation à l'agile
Initiation à l'agile
 
Atr2011 3 rex pour differentes facettes du lean- synthèse agile tour-21-09-...
Atr2011  3  rex pour differentes facettes du lean- synthèse agile tour-21-09-...Atr2011  3  rex pour differentes facettes du lean- synthèse agile tour-21-09-...
Atr2011 3 rex pour differentes facettes du lean- synthèse agile tour-21-09-...
 
Présentation kanban
Présentation kanbanPrésentation kanban
Présentation kanban
 
Génie Logiciel : Conception
Génie Logiciel : ConceptionGénie Logiciel : Conception
Génie Logiciel : Conception
 
TechDays 2013 - Développer avec Visual Studio et TFS 2012 ses applications Wi...
TechDays 2013 - Développer avec Visual Studio et TFS 2012 ses applications Wi...TechDays 2013 - Développer avec Visual Studio et TFS 2012 ses applications Wi...
TechDays 2013 - Développer avec Visual Studio et TFS 2012 ses applications Wi...
 
Génie Logiciel - Cours 5 - analyse
Génie Logiciel - Cours 5 - analyseGénie Logiciel - Cours 5 - analyse
Génie Logiciel - Cours 5 - analyse
 
Génie Logiciel : les tests
Génie Logiciel : les testsGénie Logiciel : les tests
Génie Logiciel : les tests
 
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é
 
Test unitaires visual studio
Test unitaires visual studioTest unitaires visual studio
Test unitaires visual studio
 
Industrialisation des développements Java
Industrialisation des développements JavaIndustrialisation des développements Java
Industrialisation des développements Java
 
Valtech - Quel ROI pour ma transformation Agile ? PARTIE 2
Valtech - Quel ROI pour ma transformation Agile ? PARTIE 2Valtech - Quel ROI pour ma transformation Agile ? PARTIE 2
Valtech - Quel ROI pour ma transformation Agile ? PARTIE 2
 
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
 
Valtech - Quel ROI pour ma transformation Agile ?
Valtech - Quel ROI pour ma transformation Agile ?Valtech - Quel ROI pour ma transformation Agile ?
Valtech - Quel ROI pour ma transformation Agile ?
 
Soigner Sa Schizophrénie
Soigner Sa SchizophrénieSoigner Sa Schizophrénie
Soigner Sa Schizophrénie
 
Eclipse4 et acceleo
Eclipse4 et acceleoEclipse4 et acceleo
Eclipse4 et acceleo
 
Le pilotage par les tests
Le pilotage par les testsLe pilotage par les tests
Le pilotage par les tests
 
Petit DéJeuner Industrialisation 13 10 2011 Eurosites
Petit DéJeuner Industrialisation 13 10 2011 EurositesPetit DéJeuner Industrialisation 13 10 2011 Eurosites
Petit DéJeuner Industrialisation 13 10 2011 Eurosites
 

Semelhante a Propulsez votre architecture grâce au TDD et aux Mocks (Agile Tour Québec 2012)

Problemes architecturaux courants
Problemes architecturaux courantsProblemes architecturaux courants
Problemes architecturaux courantsElapse Technologies
 
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
 
Introduction AOP
Introduction AOPIntroduction AOP
Introduction AOPKlee Group
 
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
 
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
 
Les pratiques des geants du web
Les pratiques des geants du webLes pratiques des geants du web
Les pratiques des geants du webStephen PERIN
 
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
 
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
 
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
 
Le projet Tiger à l'EPITA
Le projet Tiger à l'EPITALe projet Tiger à l'EPITA
Le projet Tiger à l'EPITAhere_and_there
 
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
 
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
 
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
 
La plateforme de services dynamiques OSGi
La plateforme de services dynamiques OSGiLa plateforme de services dynamiques OSGi
La plateforme de services dynamiques OSGiDidier Donsez
 
eXtreme Programming [fr]
eXtreme Programming [fr]eXtreme Programming [fr]
eXtreme Programming [fr]Rémy Coutable
 
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
 
Allons plus loin avec Selenium
Allons plus loin avec SeleniumAllons plus loin avec Selenium
Allons plus loin avec SeleniumSOAT
 

Semelhante a Propulsez votre architecture grâce au TDD et aux Mocks (Agile Tour Québec 2012) (20)

Problemes architecturaux courants
Problemes architecturaux courantsProblemes architecturaux courants
Problemes architecturaux courants
 
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
 
Introduction AOP
Introduction AOPIntroduction AOP
Introduction AOP
 
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
 
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
 
Les pratiques des geants du web
Les pratiques des geants du webLes pratiques des geants du web
Les pratiques des geants du web
 
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
 
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...
 
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)
 
Le projet Tiger à l'EPITA
Le projet Tiger à l'EPITALe projet Tiger à l'EPITA
Le projet Tiger à l'EPITA
 
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
 
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
 
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
 
La plateforme de services dynamiques OSGi
La plateforme de services dynamiques OSGiLa plateforme de services dynamiques OSGi
La plateforme de services dynamiques OSGi
 
eXtreme Programming [fr]
eXtreme Programming [fr]eXtreme Programming [fr]
eXtreme Programming [fr]
 
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
 
Ecrire un code Testable
Ecrire un code TestableEcrire un code Testable
Ecrire un code Testable
 
Allons plus loin avec Selenium
Allons plus loin avec SeleniumAllons plus loin avec Selenium
Allons plus loin avec Selenium
 

Propulsez votre architecture grâce au TDD et aux Mocks (Agile Tour Québec 2012)

  • 1. Propulsez votre architecture grâce au TDD et aux mocks Agile Tour 2012 © 2012 Elapse Technologies Québec, Canada 6 novembre 2012
  • 2. Félix-Antoine Bourbonnais Ing. jr, PSM-I Formateur et Coach Agile Spécialités o Tests: TDD, ATDD, BDD, etc. © 2012 Elapse Technologies © 2012 Elapse Technologies o Orientation objet avancée http://bit.ly/Qut7Fm o Réusinage et qualité (Clean Code) @fbourbonnais o Agile Scrum linkedin.com/in/fbourbonnais Développement o Architecture logicielle agile 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. 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
  • 20. © 2012 Elapse Technologies © 2012 Elapse Technologies Comment PILOTER SON DESIGN AVEC DES MOCKS? Image: jscreationzs / FreeDigitalPhotos.net
  • 21. 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
  • 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
  • 23. 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é
  • 24. 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)
  • 25. © 2012 Elapse Technologies © 2012 Elapse Technologies DÉMONSTRATION Présentation de la
  • 26. 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
  • 27. Approche « top-down » UI © 2012 Elapse Technologies © 2012 Elapse Technologies Réusinage Domaine Infrastructure TDD Duplication? Image: Simon Howden / FreeDigitalPhotos.net
  • 28. 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
  • 29. 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 30
  • 30. 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 »
  • 31. 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 32
  • 32. 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) 33
  • 33. 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
  • 34. 35 © 2012 Elapse Technologies © 2012 Elapse Technologies QUESTIONS Période de
  • 35. Téléchargement Téléchargez les diapositives complètes sur developpementagile.com © 2012 Elapse Technologies © 2012 Elapse Technologies Image: rajcreationzs / FreeDigitalPhotos.ne 36
  • 36. © 2012 Elapse Technologies © 2012 Elapse Technologies Références
  • 37. 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
  • 38. 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