SlideShare une entreprise Scribd logo

Mockito - Design + tests par Brice Duteil

rice Dutheil est indépendant, membre du groupe des Zindeps. Comiteur sur Mockito.Son blog est le “TheCoffeeWorkshop“. Son Twitter est @BriceDutheil. Le design par le test Le TDD est aujourd’hui une pratique reconnue pour permettre la production de code avec peu d’anomalies. Mais ce n’est pas le seul interet du TDD ; le design du code peut en etre le grand gagnant. Ces quelques slides vont essayer de donner un apercu des opportunites à saisir et des pieges à eviter ; Mockito inside.

1  sur  20
Télécharger pour lire hors ligne
Design + tests (TDD)
   Mockito inside.
TDD ; en général
  C’est quoi le TDD ?

     => Test Driven Development

  Quels avantage à cette pratique ?

     précise les spécifications du code

     permet d’utiliser le programme avant qu’il soit même
     écrit

     augmente la confiance pour le refactoring

     valide la conformité du code
TDD ; pour le design
  Quels avantages à plus long terme ?
    Moins de bugs techniques + plus de bugs
    métier, sur les specs.
    Évolutivité et maintenance moins
    couteuse.
    Confort du code
TDD ; une évolution de la pratique
      dans le temps
   Spécifications &      … specs / exigences /
    exigences              conformité
   Codage du test        Design du code
   Codage des            Design du test
    fonctionnalités       API
   Intéressé par la
    conformité




            Débutant           Expérimenté
TDD ; une évolution de la pratique
      dans le temps
   Spécifications &      … specs / exigences /
    exigences              conformité
   Codage du test        Design du code
   Codage des            Design du test
    fonctionnalités       API
   Intéressé par la
    conformité




            Débutant           Expérimenté
Un bon design
   Dans un langage objet

   Pour quelle audience ?

   Comment y arriver ?

   Avec quels outils ?
Publicité

Recommandé

Formation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifFormation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifkemenaran
 
eXtreme Programming [fr]
eXtreme Programming [fr]eXtreme Programming [fr]
eXtreme Programming [fr]Rémy Coutable
 
BDD (Behavior Driven Development) - Une voie vers l'agilité
BDD (Behavior Driven Development) - Une voie vers l'agilitéBDD (Behavior Driven Development) - Une voie vers l'agilité
BDD (Behavior Driven Development) - Une voie vers l'agilitéCARA_Lyon
 
La revue de code : agile, lean, indispensable !
La revue de code : agile, lean, indispensable !La revue de code : agile, lean, indispensable !
La revue de code : agile, lean, indispensable !Lucian Precup
 
Domain Driven Design - Agile France 2010
Domain Driven Design - Agile France 2010Domain Driven Design - Agile France 2010
Domain Driven Design - Agile France 2010François Wauquier
 
La revue de code : facile !
La revue de code : facile !La revue de code : facile !
La revue de code : facile !Lucian Precup
 
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualifeSoirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualifeTelecomValley
 

Contenu connexe

En vedette

12.audit et controle interne
12.audit et controle interne12.audit et controle interne
12.audit et controle interneOULAAJEB YOUSSEF
 
[Gestion des risques et conformite] optimiser le dispositif de controle interne
[Gestion des risques et conformite] optimiser le dispositif de controle interne[Gestion des risques et conformite] optimiser le dispositif de controle interne
[Gestion des risques et conformite] optimiser le dispositif de controle interneonepoint x weave
 
Menjaga Kesehatan Sepanjang Masa
Menjaga Kesehatan Sepanjang MasaMenjaga Kesehatan Sepanjang Masa
Menjaga Kesehatan Sepanjang Masasandyverden
 
L'accessibilité : un truc réservé aux riches ?
L'accessibilité : un truc réservé aux riches ?L'accessibilité : un truc réservé aux riches ?
L'accessibilité : un truc réservé aux riches ?Jean-Philippe Simonnet
 
Présentation open coffee 2011
Présentation open coffee 2011Présentation open coffee 2011
Présentation open coffee 2011ldecourcelle
 
1307 18 etude rb opérateurs et culture - vf [lecture seule] [mode de compat...
1307 18   etude rb opérateurs et culture - vf [lecture seule] [mode de compat...1307 18   etude rb opérateurs et culture - vf [lecture seule] [mode de compat...
1307 18 etude rb opérateurs et culture - vf [lecture seule] [mode de compat...Fédération Française des Télécoms
 
Zukunftsszenarien läs 111214
Zukunftsszenarien läs 111214Zukunftsszenarien läs 111214
Zukunftsszenarien läs 111214Kai Sostmann
 
1014_kopia - aurkezpena1.pps
1014_kopia - aurkezpena1.pps1014_kopia - aurkezpena1.pps
1014_kopia - aurkezpena1.ppsElhuyarOlinpiada
 
Auw An Der Kyll Family History Book 1657 1854
Auw  An Der Kyll Family History Book 1657 1854Auw  An Der Kyll Family History Book 1657 1854
Auw An Der Kyll Family History Book 1657 1854guestfb5551
 
Best of mensuel bowers & wilkins - mars
Best of mensuel   bowers & wilkins - marsBest of mensuel   bowers & wilkins - mars
Best of mensuel bowers & wilkins - marsB&W Group France
 
Le ganoderma ++
Le ganoderma ++Le ganoderma ++
Le ganoderma ++lesummum
 
[Tutoriel] Studio de développement RPG SilverDev Designer
[Tutoriel] Studio de développement RPG SilverDev Designer[Tutoriel] Studio de développement RPG SilverDev Designer
[Tutoriel] Studio de développement RPG SilverDev DesignerSilverDev by Experia
 
Renforcez l'engagement de vos employés un atout pour votre entreprise
Renforcez l'engagement de vos employés un atout pour votre entrepriseRenforcez l'engagement de vos employés un atout pour votre entreprise
Renforcez l'engagement de vos employés un atout pour votre entrepriseDrake International
 
Ugc debrief-bandeaux-ctabas-010812
Ugc debrief-bandeaux-ctabas-010812Ugc debrief-bandeaux-ctabas-010812
Ugc debrief-bandeaux-ctabas-010812SNCF Intercités
 
Ma ville .meknes
Ma ville   .meknesMa ville   .meknes
Ma ville .meknesmerico2
 

En vedette (20)

12.audit et controle interne
12.audit et controle interne12.audit et controle interne
12.audit et controle interne
 
[Gestion des risques et conformite] optimiser le dispositif de controle interne
[Gestion des risques et conformite] optimiser le dispositif de controle interne[Gestion des risques et conformite] optimiser le dispositif de controle interne
[Gestion des risques et conformite] optimiser le dispositif de controle interne
 
Menjaga Kesehatan Sepanjang Masa
Menjaga Kesehatan Sepanjang MasaMenjaga Kesehatan Sepanjang Masa
Menjaga Kesehatan Sepanjang Masa
 
L'accessibilité : un truc réservé aux riches ?
L'accessibilité : un truc réservé aux riches ?L'accessibilité : un truc réservé aux riches ?
L'accessibilité : un truc réservé aux riches ?
 
Présentation open coffee 2011
Présentation open coffee 2011Présentation open coffee 2011
Présentation open coffee 2011
 
1307 18 etude rb opérateurs et culture - vf [lecture seule] [mode de compat...
1307 18   etude rb opérateurs et culture - vf [lecture seule] [mode de compat...1307 18   etude rb opérateurs et culture - vf [lecture seule] [mode de compat...
1307 18 etude rb opérateurs et culture - vf [lecture seule] [mode de compat...
 
Zukunftsszenarien läs 111214
Zukunftsszenarien läs 111214Zukunftsszenarien läs 111214
Zukunftsszenarien läs 111214
 
2011 10 05 10-45 david lauchenauer
2011 10 05 10-45 david lauchenauer2011 10 05 10-45 david lauchenauer
2011 10 05 10-45 david lauchenauer
 
1014_kopia - aurkezpena1.pps
1014_kopia - aurkezpena1.pps1014_kopia - aurkezpena1.pps
1014_kopia - aurkezpena1.pps
 
Mediadaten der GFM Nachrichten
Mediadaten der GFM NachrichtenMediadaten der GFM Nachrichten
Mediadaten der GFM Nachrichten
 
Auw An Der Kyll Family History Book 1657 1854
Auw  An Der Kyll Family History Book 1657 1854Auw  An Der Kyll Family History Book 1657 1854
Auw An Der Kyll Family History Book 1657 1854
 
Sommeruni 2008 - Podcasting
Sommeruni 2008 - PodcastingSommeruni 2008 - Podcasting
Sommeruni 2008 - Podcasting
 
Best of mensuel bowers & wilkins - mars
Best of mensuel   bowers & wilkins - marsBest of mensuel   bowers & wilkins - mars
Best of mensuel bowers & wilkins - mars
 
Le ganoderma ++
Le ganoderma ++Le ganoderma ++
Le ganoderma ++
 
[Tutoriel] Studio de développement RPG SilverDev Designer
[Tutoriel] Studio de développement RPG SilverDev Designer[Tutoriel] Studio de développement RPG SilverDev Designer
[Tutoriel] Studio de développement RPG SilverDev Designer
 
Edelman goodpurpose 2012
Edelman goodpurpose 2012Edelman goodpurpose 2012
Edelman goodpurpose 2012
 
Renforcez l'engagement de vos employés un atout pour votre entreprise
Renforcez l'engagement de vos employés un atout pour votre entrepriseRenforcez l'engagement de vos employés un atout pour votre entreprise
Renforcez l'engagement de vos employés un atout pour votre entreprise
 
Infographies
InfographiesInfographies
Infographies
 
Ugc debrief-bandeaux-ctabas-010812
Ugc debrief-bandeaux-ctabas-010812Ugc debrief-bandeaux-ctabas-010812
Ugc debrief-bandeaux-ctabas-010812
 
Ma ville .meknes
Ma ville   .meknesMa ville   .meknes
Ma ville .meknes
 

Similaire à Mockito - Design + tests par Brice Duteil

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
 
devops.pdf
devops.pdfdevops.pdf
devops.pdfqsdqsd4
 
Test driven development v0.2 20121221
Test driven development v0.2 20121221Test driven development v0.2 20121221
Test driven development v0.2 20121221Frédéric Delorme
 
Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)Jean-Pierre Lambert
 
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...DC CONSULTANTS
 
Webinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDD
Webinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDDWebinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDD
Webinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDDDC CONSULTANTS
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOpsMicrosoft
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyonClement Bouillier
 
AgileTour Toulouse 2012 : TFS
AgileTour Toulouse 2012 : TFSAgileTour Toulouse 2012 : TFS
AgileTour Toulouse 2012 : TFSAgile Toulouse
 
Des bancs de l’école à la réalité en entreprise, retour d’expérience sur...
Des bancs de l’école à la réalité en entreprise, retour d’expérience sur...Des bancs de l’école à la réalité en entreprise, retour d’expérience sur...
Des bancs de l’école à la réalité en entreprise, retour d’expérience sur...Scaleway
 
Cleancode / Tocea / Introduction
Cleancode / Tocea / IntroductionCleancode / Tocea / Introduction
Cleancode / Tocea / IntroductionSylvain Leroy
 
Ged Open Source - Documation 2010
Ged Open Source - Documation 2010Ged Open Source - Documation 2010
Ged Open Source - Documation 2010Thomas Choppy
 
TFS 2012 : un pas vers l'agilité... en avant ou en arrière ?
TFS 2012 : un pas vers l'agilité... en avant ou en arrière ? TFS 2012 : un pas vers l'agilité... en avant ou en arrière ?
TFS 2012 : un pas vers l'agilité... en avant ou en arrière ? Christophe HERAL
 
La Meta-programmation
La Meta-programmation La Meta-programmation
La Meta-programmation Microsoft
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...ENSIBS
 
CdP QA - QA hackathon - Intelligence artificielle - Meetup du 9 mars
CdP QA - QA hackathon - Intelligence artificielle - Meetup du 9 marsCdP QA - QA hackathon - Intelligence artificielle - Meetup du 9 mars
CdP QA - QA hackathon - Intelligence artificielle - Meetup du 9 marsAgile Montréal
 
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.Guillaume RICHARD
 

Similaire à Mockito - Design + tests par Brice Duteil (20)

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
 
devops.pdf
devops.pdfdevops.pdf
devops.pdf
 
Test driven development v0.2 20121221
Test driven development v0.2 20121221Test driven development v0.2 20121221
Test driven development v0.2 20121221
 
Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)
 
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
 
Webinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDD
Webinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDDWebinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDD
Webinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDD
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOps
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyon
 
AgileTour Toulouse 2012 : TFS
AgileTour Toulouse 2012 : TFSAgileTour Toulouse 2012 : TFS
AgileTour Toulouse 2012 : TFS
 
Des bancs de l’école à la réalité en entreprise, retour d’expérience sur...
Des bancs de l’école à la réalité en entreprise, retour d’expérience sur...Des bancs de l’école à la réalité en entreprise, retour d’expérience sur...
Des bancs de l’école à la réalité en entreprise, retour d’expérience sur...
 
Cleancode / Tocea / Introduction
Cleancode / Tocea / IntroductionCleancode / Tocea / Introduction
Cleancode / Tocea / Introduction
 
Ged Open Source - Documation 2010
Ged Open Source - Documation 2010Ged Open Source - Documation 2010
Ged Open Source - Documation 2010
 
TFS 2012 : un pas vers l'agilité... en avant ou en arrière ?
TFS 2012 : un pas vers l'agilité... en avant ou en arrière ? TFS 2012 : un pas vers l'agilité... en avant ou en arrière ?
TFS 2012 : un pas vers l'agilité... en avant ou en arrière ?
 
La Meta-programmation
La Meta-programmation La Meta-programmation
La Meta-programmation
 
Lmo02.ppt
Lmo02.pptLmo02.ppt
Lmo02.ppt
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
 
Lunch learn 5 sep2013
Lunch learn 5 sep2013Lunch learn 5 sep2013
Lunch learn 5 sep2013
 
Method XP
Method XP Method XP
Method XP
 
CdP QA - QA hackathon - Intelligence artificielle - Meetup du 9 mars
CdP QA - QA hackathon - Intelligence artificielle - Meetup du 9 marsCdP QA - QA hackathon - Intelligence artificielle - Meetup du 9 mars
CdP QA - QA hackathon - Intelligence artificielle - Meetup du 9 mars
 
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
Comment récupérer un projet Web pourri ... et réussir à travailler dessus.
 

Plus de Normandy JUG

Découvrez les bases de l’ergonomie web : donnez à vos utilisateurs le meilleu...
Découvrez les bases de l’ergonomie web : donnez à vos utilisateurs le meilleu...Découvrez les bases de l’ergonomie web : donnez à vos utilisateurs le meilleu...
Découvrez les bases de l’ergonomie web : donnez à vos utilisateurs le meilleu...Normandy JUG
 
Codeurs En Seine - Lean startup - Matthieu Garde-Lebreton
Codeurs En Seine - Lean startup - Matthieu Garde-LebretonCodeurs En Seine - Lean startup - Matthieu Garde-Lebreton
Codeurs En Seine - Lean startup - Matthieu Garde-LebretonNormandy JUG
 
What makes groovy groovy codeurs en seine - 2013 - light size
What makes groovy groovy   codeurs en seine - 2013 - light sizeWhat makes groovy groovy   codeurs en seine - 2013 - light size
What makes groovy groovy codeurs en seine - 2013 - light sizeNormandy JUG
 
[Codeurs en seine] management & monitoring cloud
[Codeurs en seine] management & monitoring cloud[Codeurs en seine] management & monitoring cloud
[Codeurs en seine] management & monitoring cloudNormandy JUG
 
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...Normandy JUG
 
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Normandy JUG
 
Gatling : Faites tomber la foudre sur votre serveur ! (Stéphane Landelle)
Gatling : Faites tomber la foudre sur votre serveur ! (Stéphane Landelle)Gatling : Faites tomber la foudre sur votre serveur ! (Stéphane Landelle)
Gatling : Faites tomber la foudre sur votre serveur ! (Stéphane Landelle)Normandy JUG
 
Soirée Ceylon avec Stéphane Epardaud
Soirée Ceylon avec Stéphane EpardaudSoirée Ceylon avec Stéphane Epardaud
Soirée Ceylon avec Stéphane EpardaudNormandy JUG
 
Soirée Guava et Lombok avec Thierry Leriche
Soirée Guava et Lombok avec Thierry LericheSoirée Guava et Lombok avec Thierry Leriche
Soirée Guava et Lombok avec Thierry LericheNormandy JUG
 
Couche Base par Tugdual Grall
Couche Base par Tugdual GrallCouche Base par Tugdual Grall
Couche Base par Tugdual GrallNormandy JUG
 
Apache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume NodetApache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume NodetNormandy JUG
 
Annotations Java par Olivier Croisier
Annotations Java par Olivier CroisierAnnotations Java par Olivier Croisier
Annotations Java par Olivier CroisierNormandy JUG
 
Spring Batch 17-05-2011
Spring Batch 17-05-2011Spring Batch 17-05-2011
Spring Batch 17-05-2011Normandy JUG
 
ATR2011 - Planning poker
ATR2011 - Planning pokerATR2011 - Planning poker
ATR2011 - Planning pokerNormandy JUG
 
ATR2011 - Scrum dans les tranchées Normandes
ATR2011 - Scrum dans les tranchées NormandesATR2011 - Scrum dans les tranchées Normandes
ATR2011 - Scrum dans les tranchées NormandesNormandy JUG
 
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computingHibernate vs le_cloud_computing
Hibernate vs le_cloud_computingNormandy JUG
 
Soirée BPM - Introduction Logica
Soirée BPM - Introduction LogicaSoirée BPM - Introduction Logica
Soirée BPM - Introduction LogicaNormandy JUG
 

Plus de Normandy JUG (20)

Découvrez les bases de l’ergonomie web : donnez à vos utilisateurs le meilleu...
Découvrez les bases de l’ergonomie web : donnez à vos utilisateurs le meilleu...Découvrez les bases de l’ergonomie web : donnez à vos utilisateurs le meilleu...
Découvrez les bases de l’ergonomie web : donnez à vos utilisateurs le meilleu...
 
Codeurs En Seine - Lean startup - Matthieu Garde-Lebreton
Codeurs En Seine - Lean startup - Matthieu Garde-LebretonCodeurs En Seine - Lean startup - Matthieu Garde-Lebreton
Codeurs En Seine - Lean startup - Matthieu Garde-Lebreton
 
What makes groovy groovy codeurs en seine - 2013 - light size
What makes groovy groovy   codeurs en seine - 2013 - light sizeWhat makes groovy groovy   codeurs en seine - 2013 - light size
What makes groovy groovy codeurs en seine - 2013 - light size
 
[Codeurs en seine] management & monitoring cloud
[Codeurs en seine] management & monitoring cloud[Codeurs en seine] management & monitoring cloud
[Codeurs en seine] management & monitoring cloud
 
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...
 
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
 
Gatling : Faites tomber la foudre sur votre serveur ! (Stéphane Landelle)
Gatling : Faites tomber la foudre sur votre serveur ! (Stéphane Landelle)Gatling : Faites tomber la foudre sur votre serveur ! (Stéphane Landelle)
Gatling : Faites tomber la foudre sur votre serveur ! (Stéphane Landelle)
 
Soirée Ceylon avec Stéphane Epardaud
Soirée Ceylon avec Stéphane EpardaudSoirée Ceylon avec Stéphane Epardaud
Soirée Ceylon avec Stéphane Epardaud
 
Soirée Guava et Lombok avec Thierry Leriche
Soirée Guava et Lombok avec Thierry LericheSoirée Guava et Lombok avec Thierry Leriche
Soirée Guava et Lombok avec Thierry Leriche
 
Couche Base par Tugdual Grall
Couche Base par Tugdual GrallCouche Base par Tugdual Grall
Couche Base par Tugdual Grall
 
Java7 normandyjug
Java7 normandyjugJava7 normandyjug
Java7 normandyjug
 
Apache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume NodetApache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume Nodet
 
Annotations Java par Olivier Croisier
Annotations Java par Olivier CroisierAnnotations Java par Olivier Croisier
Annotations Java par Olivier Croisier
 
Spring Batch 17-05-2011
Spring Batch 17-05-2011Spring Batch 17-05-2011
Spring Batch 17-05-2011
 
ATR2011 - Planning poker
ATR2011 - Planning pokerATR2011 - Planning poker
ATR2011 - Planning poker
 
ATR2011 - Scrum dans les tranchées Normandes
ATR2011 - Scrum dans les tranchées NormandesATR2011 - Scrum dans les tranchées Normandes
ATR2011 - Scrum dans les tranchées Normandes
 
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computingHibernate vs le_cloud_computing
Hibernate vs le_cloud_computing
 
HTML5 en projet
HTML5 en projetHTML5 en projet
HTML5 en projet
 
Git
GitGit
Git
 
Soirée BPM - Introduction Logica
Soirée BPM - Introduction LogicaSoirée BPM - Introduction Logica
Soirée BPM - Introduction Logica
 

Mockito - Design + tests par Brice Duteil

  • 1. Design + tests (TDD)  Mockito inside.
  • 2. TDD ; en général C’est quoi le TDD ? => Test Driven Development Quels avantage à cette pratique ? précise les spécifications du code permet d’utiliser le programme avant qu’il soit même écrit augmente la confiance pour le refactoring valide la conformité du code
  • 3. TDD ; pour le design Quels avantages à plus long terme ? Moins de bugs techniques + plus de bugs métier, sur les specs. Évolutivité et maintenance moins couteuse. Confort du code
  • 4. TDD ; une évolution de la pratique dans le temps  Spécifications &  … specs / exigences / exigences conformité  Codage du test  Design du code  Codage des  Design du test fonctionnalités  API  Intéressé par la conformité Débutant Expérimenté
  • 5. TDD ; une évolution de la pratique dans le temps  Spécifications &  … specs / exigences / exigences conformité  Codage du test  Design du code  Codage des  Design du test fonctionnalités  API  Intéressé par la conformité Débutant Expérimenté
  • 6. Un bon design  Dans un langage objet  Pour quelle audience ?  Comment y arriver ?  Avec quels outils ?
  • 7. Dans un langage OO  À quoi somme nous habitué ?  À un graphe d’objet  Construction hiérarchique de structure  Très souvent une structure de données seules qui est baladé par d’autres objets sans état. => Transaction Script  Nous sommes habitués à une approche ontologique dans le design d’un système.
  • 8. The big idea of object oriented programming  The big idea is "messaging"  The key in making great and growable systems is much more to design how its modules communicate rather than what their internal properties and behaviors should be.  Alan Kay  Un des père de la programmation orientée objet, un des père de SmallTalk  Mockito permet de se focaliser sur les interactions
  • 9. Pour quelle audience ?  Un bon design ok, mais qui est intéressé ?  Est-ce que les intérêts sont les mêmes ?  Pour les auteurs?  Pour les utilisateurs ?
  • 10. Pour quelle audience ?  Un bon design ok, mais qui est intéressé, qui devrait être intéressé ?  Dev, Archi, Manager, Client  Est-ce que les intérêts sont les mêmes ?  Pour les auteurs? ○ Dev de framework / lib : Favoriser l’extensibilité, la réutilisation, le confort, facile à corriger  Pour les utilisateurs ? ○ Utiliser un code facile à comprendre, facilement extensible, corrigeable
  • 11. Pour quelles audiences ?  Pour un dev de lib / de framework  En particulier pour le développement Open Source, problème du temps libre !  On a les même problèmes qu’un manager sur le cycle de vie d’un projet : le temps c’est de l’argent  Pour l’utilisateur, un bon design lui fait gagner en efficacité  API lisible et expressive (!= verbeux) ; un développeur passe en général plus de temps à lire du code qu’a en écrire!  API ouverte aux extensions, plus facile à developper, remplacer du code  Le dev d’une lib ou d’un framework doit aussi être utilisateur de celle-ci.  Le test aide très tôt dans le développement.
  • 13. Avec quels outils ?  Pourquoi Mockito plus que les autres ?  Framework de mock avec une API simple et propre  Rapport d’erreur de premier ordre  Support de l’approche BDD  Super javadoc  Pleins de features  Easymock  API plus verbeuse, et un peu plus intrusive  Moins de features  Powermock  Très bon framework, mais plus complexe à mettre en œuvre (pour l’auteur et pour les utilisateurs)  Dangereux pour le design : tests boite blanche  OK pour le legacy  L’auteur lui-même recommande Mockito
  • 14. Améliorer le design  Le design est une approche pour contrôler la complexité d’un projet  Ses outils : patterns et principes ○ GRASP ○ GoF ○ SOLID  Aux anti-patterns et lois ○ Par ex : The Law of Leaky Abstractions
  • 15. Améliorer le design  Petit focus sur ‘High Cohesion’  C’est avoir des méthodes qui ont en commun un ou quelques concepts seulement  Cette mesure s’appelle LCOM ○ Si elle est trop haute => refactoring (découpage des fonctionnalités, introduction de collaborateur, …)  Low Coupling  Couplage : C’est d’avoir trop de dépendances ○ Imports, Paramètres  Mais pas que : ○ Héritage, Temporel, Flow  Impact fort sur les tests ○ En TDD le couplage rajoute très vite de la pénibilité => refactoring
  • 16. Améliorer le design  Les closures  Petits objets facilement externalisables  Facilement testables  Sur les clients de ces closures.  Moins de chose à tester parce que ○ le reste du code est testé ○ surtout ce n’est plus sa responsabilité (SRP)
  • 17. Améliorer le design  Donnez un peu d’amour aux tests  Si vous refactorez, pensez à  alléger vos test  relaxer le test  se focaliser sur le scénario du test ET la responsabilité du code testé  Pour vos objets de données  Pattern des Value Object en DDD (instanciable avec un constructeur)  Factory Method accountWith("bob", "lee", 100023348.23D)  Builder à la Joshua Bloch
  • 18. Améliorer le design  Les tests aussi ont leurs anti-patterns aka Test Smell  James Carr en a fait une liste ○ Excessive Setup ○ The Liar ○ The Free Ride ○ …  Pour les mocks ○ The Mockery ○ Don’t mock value object ○ Don’t mock types you don’t own
  • 20. À lire + sources  Anti-patterns de test par James Carr http://blog.james-carr.org/2006/11/03/tdd-anti-patterns/  Growing Object Oriented Software Guiged by Tests http://www.amazon.fr/Growing-Object-Oriented-Software-Guided- Tests/dp/0321503627  Échanges sur Hotspot en 98 avec Alan Kay http://lists.squeakfoundation.org/pipermail/squeak-dev/1998- October/017019.html  Étude de productivité de logiciel OO http://www.csm.ornl.gov/~v8q/Homepage/Papers%20Old/spetep- %20printable.pdf  Étude sur la productivité et l’efficacité avec les langages objet http://www.sciweavers.org/publications/study-productivity-and- efficiency-object-oriented-methods-and-languages  Don’t mock types you don’t own http://davesquared.net/2011/04/dont-mock-types-you-dont- own.html