SlideShare une entreprise Scribd logo
1  sur  45
Télécharger pour lire hors ligne
GRENOBLE


TDD ou comment coder à l'endroit


             Xavier NOPRE – 11/12/2012
C'est quoi les
tests unitaires?
C'est quoi les tests unitaires ?
   Du code pour tester du code

   Tests sur une "unité" de programme = partie de code
    la plus petite ayant une cohérence fonctionnelle
     Classe

   Automatisables, automatisés

   Porter l'attention sur le ROI
C'est quoi les tests unitaires ?
   Du code pour tester du code

   Tests sur une "unité" de programme = partie de code
    la plus petite ayant une cohérence fonctionnelle
     Classe

   Automatisables, automatisés

   Porter l'attention sur le ROI


                                         Mike Cohn
Pourquoi les
tests unitaires?
Pourquoi les tests unitaires ?


 Un   code qui marche

 Un   code qui fait ce qu'il faut

  Non régression
Pourquoi les tests unitaires ?
 Diminuer   les coûts


                  Tests
                 unitaires




                                 Scott Ambler
Pourquoi les tests unitaires ?
 Permettre
         des changements
 courageux
Pourquoi les tests unitaires ?
 Permettre
         des changements
 courageux

  Refactorings
Pourquoi les tests unitaires ?
 Permettre
         des changements
 courageux

  Refactorings

  Développement itératif &
 incrémental
Pourquoi les tests unitaires ?
 Permettre
         des changements
 courageux

  Refactorings

  Développement itératif &
 incrémental

  Agilité
Pourquoi les tests unitaires ?
 Documentation   du code
Pourquoi les tests unitaires ?
 Documentation   du code

  Aide à comprendre l'usage de la
 classe
Pourquoi les tests unitaires ?
 Documentation   du code

  Aide à comprendre l'usage de la
 classe

  Aide à comprendre ce que fait le
 code
C'est quoi TDD ?
C'est quoi TDD ?
 "Test   Driven Development"

= "Développement piloté par les tests"

            Ecrire le code de test
          avant le code de production
C'est quoi TDD ?
 "Test   Driven Development"

= "Développement piloté par les tests"

            Ecrire le code de test
          avant le code de production

               Mais pas que …
Pourquoi le
  TDD ?
Pourquoi le TDD ?
   Code puis tests




    © @jbrains
Pourquoi le TDD ?
   Code puis tests




    © @jbrains
Pourquoi le TDD ?
   Code puis tests




    © @jbrains
Pourquoi le TDD ?
   Design puis Tests-Code




    © @jbrains
Pourquoi le TDD ?
   Design puis Tests-Code




    © @jbrains
Pourquoi le TDD ?
   Design puis Tests-Code




    © @jbrains
Pourquoi le TDD ?
   Analyse puis
    Tests-Code-Design




    © @jbrains
Pourquoi le TDD ?
   Analyse puis
    Tests-Code-Design




    © @jbrains
Pourquoi le TDD ?
   Analyse puis
    Tests-Code-Design




    © @jbrains
Pourquoi le TDD ?
 Aide   à la conception
Pourquoi le TDD ?
 Aide   à la conception

    Se soucier d'abord de l'usage de notre classe
      Nous allons passer du temps à utiliser notre classe :
       priorité à l'architecture et à la conception
       priorité aux nommages et signatures
Pourquoi le TDD ?
 Aide   à la conception

    Se soucier d'abord de l'usage de notre classe
      Nous allons passer du temps à utiliser notre classe :
       priorité à l'architecture et à la conception
       priorité aux nommages et signatures

    Se soucier ensuite du résultat à produire
      Ne pas se soucier de l'implémentation
Pourquoi le TDD ?
 Aide   à la conception

    Se soucier d'abord de l'usage de notre classe
      Nous allons passer du temps à utiliser notre classe :
       priorité à l'architecture et à la conception
       priorité aux nommages et signatures

    Se soucier ensuite du résultat à produire
      Ne pas se soucier de l'implémentation

      Approche "de l'extérieur vers l'intérieur"
Comment le
  TDD ?
Comment le TDD ?
 Trois   règles (Uncle Bob Martin)

    Pas de code de production si ce n'est
     pour faire passer un test en échec

    Un seul test en échec à la fois

    Code minimum pour faire passer un test
     qui échouait
Comment le TDD ?
 Le   Cycle



                          Ecriture du
           Refactoring
                             test




                Ecriture du code
                 de production
Comment le TDD ?
 Le   Cycle

                                          1 cycle = qq minutes
                                         Plusieurs cycles / heure

                          Ecriture du
           Refactoring
                             test




                Ecriture du code
                 de production
Mise en
pratique ?
Mise en pratique ?
 Un  bon outillage (dispo pour tous les langages)
 Principes de conception :
  Architecture évolutive ("architecture agile")
  Code testable
  1 classe = 1 rôle ("SRP")
  Injection de dépendance
 …
 Utilisation   de mocks (= "faux" collaborateurs)
Mise en pratique ?
 Erreurs   / Pièges :
  Ne pas suivre les 3 règles ou le cycle
  Tests trop gros, trop complexes, inutiles,
   sous forme de scénarios, trop longs à
   exécuter
  Code non lisible (test et prod)
  Démarche non collective de l'équipe
  Mauvais entretien collectif des tests
  Manque de vision globale de l’architecture
Mise en pratique ?
 Conseils   :
  Se former, se faire accompagner
  S'entrainer (coding-dojo)
  Commencer par des cas faciles, évidents
  S'y mettre progressivement
  Faire des tests "à bon escient" …
  Echanger, travail d'équipe, pair-
   programming
  Du courage, ça vaut le coup !
Conclusion
Conclusion
   C'est une méthode de développement
    et non une "méthode de tests"
Conclusion
   C'est une méthode de développement
    et non une "méthode de tests"


        "On ne fait plus des tests"
Conclusion
   C'est une méthode de développement
    et non une "méthode de tests"


        "On ne fait plus des tests"

    "Finalement, le TDD, c'est coder
            …à l'endroit !"
MERCI
   Xavier NOPRE :
       Développeur logiciel Java & Web passionné depuis ~ 20
        ans
       Pratique et partage l’agilité depuis 2007
   Indépendant. Missions :
       Développements sur mesure et accompagnement de projet
           En mode agile
       Coaching en agilité, Scrum, et ingénierie agile



            @xnopre          xnopre.blogspot.com
Références
    http://spin.atomicobject.com/2012/12/06/writing-tests-is-
     not-tdd/
    http://agilitateur.azeau.com/post/2009/03/31/Les-deux-
     sortes-de-TDD
    http://www.jbrains.ca/permalink/how-test-driven-
     development-works-and-more

Contenu connexe

Tendances

Coding dojo en entreprise
Coding dojo en entrepriseCoding dojo en entreprise
Coding dojo en entrepriseNicolas Ledez
 
Pourquoi vous ne pouvez pas tester votre code
Pourquoi vous ne pouvez pas tester votre codePourquoi vous ne pouvez pas tester votre code
Pourquoi vous ne pouvez pas tester votre codeRémi Lesieur
 
[Agile Testing Day] Introduction
[Agile Testing Day] Introduction[Agile Testing Day] Introduction
[Agile Testing Day] IntroductionCellenza
 
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
 
[Agile Testing Day] Techniques avancées de tests
[Agile Testing Day] Techniques avancées de tests[Agile Testing Day] Techniques avancées de tests
[Agile Testing Day] Techniques avancées de testsCellenza
 
Pratiques de développement pour équipes Agile
Pratiques de développement pour équipes AgilePratiques de développement pour équipes Agile
Pratiques de développement pour équipes AgileAgile Tour 2009 Québec
 
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
 
[Agile Testing Day] Behavior Driven Development (BDD)
[Agile Testing Day] Behavior Driven Development (BDD)[Agile Testing Day] Behavior Driven Development (BDD)
[Agile Testing Day] Behavior Driven Development (BDD)Cellenza
 
[Agile Testing Day] Test & Métiers
[Agile Testing Day] Test & Métiers[Agile Testing Day] Test & Métiers
[Agile Testing Day] Test & MétiersCellenza
 
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)French Scrum User Group
 
C'est quoi le Software Craftsmanship ?
C'est quoi le Software Craftsmanship ?C'est quoi le Software Craftsmanship ?
C'est quoi le Software Craftsmanship ?Jean-Pierre Lambert
 
Iut agile lyon 20 nov. 2013 - bdd
Iut agile lyon   20 nov. 2013 - bddIut agile lyon   20 nov. 2013 - bdd
Iut agile lyon 20 nov. 2013 - bddagnes_crepet
 
Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Sylvain Leroy
 
Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2Christophe Rochefolle
 
7 astuces pour améliorer vos tests unitaires
7 astuces pour améliorer vos tests unitaires7 astuces pour améliorer vos tests unitaires
7 astuces pour améliorer vos tests unitairesPascal Laurin
 
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
 
Sonar 2.0 au JUG Genève
Sonar 2.0 au JUG GenèveSonar 2.0 au JUG Genève
Sonar 2.0 au JUG GenèveFreddy Mallet
 
Sortir de l’ère des héros - HumanTalks Paris Mars 2017
Sortir de l’ère des héros - HumanTalks Paris Mars 2017Sortir de l’ère des héros - HumanTalks Paris Mars 2017
Sortir de l’ère des héros - HumanTalks Paris Mars 2017Jean-Pierre Lambert
 

Tendances (20)

Coding dojo en entreprise
Coding dojo en entrepriseCoding dojo en entreprise
Coding dojo en entreprise
 
Normandy JUG integration Continue
Normandy JUG integration ContinueNormandy JUG integration Continue
Normandy JUG integration Continue
 
Pourquoi vous ne pouvez pas tester votre code
Pourquoi vous ne pouvez pas tester votre codePourquoi vous ne pouvez pas tester votre code
Pourquoi vous ne pouvez pas tester votre code
 
Valider par des tests - Blend
Valider par des tests - BlendValider par des tests - Blend
Valider par des tests - Blend
 
[Agile Testing Day] Introduction
[Agile Testing Day] Introduction[Agile Testing Day] Introduction
[Agile Testing Day] Introduction
 
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 collaboratif
 
[Agile Testing Day] Techniques avancées de tests
[Agile Testing Day] Techniques avancées de tests[Agile Testing Day] Techniques avancées de tests
[Agile Testing Day] Techniques avancées de tests
 
Pratiques de développement pour équipes Agile
Pratiques de développement pour équipes AgilePratiques de développement pour équipes Agile
Pratiques de développement pour équipes Agile
 
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)
 
[Agile Testing Day] Behavior Driven Development (BDD)
[Agile Testing Day] Behavior Driven Development (BDD)[Agile Testing Day] Behavior Driven Development (BDD)
[Agile Testing Day] Behavior Driven Development (BDD)
 
[Agile Testing Day] Test & Métiers
[Agile Testing Day] Test & Métiers[Agile Testing Day] Test & Métiers
[Agile Testing Day] Test & Métiers
 
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
 
C'est quoi le Software Craftsmanship ?
C'est quoi le Software Craftsmanship ?C'est quoi le Software Craftsmanship ?
C'est quoi le Software Craftsmanship ?
 
Iut agile lyon 20 nov. 2013 - bdd
Iut agile lyon   20 nov. 2013 - bddIut agile lyon   20 nov. 2013 - bdd
Iut agile lyon 20 nov. 2013 - bdd
 
Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Rappels Modularisation application C/C++
Rappels Modularisation application C/C++
 
Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2
 
7 astuces pour améliorer vos tests unitaires
7 astuces pour améliorer vos tests unitaires7 astuces pour améliorer vos tests unitaires
7 astuces pour améliorer vos tests unitaires
 
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
 
Sonar 2.0 au JUG Genève
Sonar 2.0 au JUG GenèveSonar 2.0 au JUG Genève
Sonar 2.0 au JUG Genève
 
Sortir de l’ère des héros - HumanTalks Paris Mars 2017
Sortir de l’ère des héros - HumanTalks Paris Mars 2017Sortir de l’ère des héros - HumanTalks Paris Mars 2017
Sortir de l’ère des héros - HumanTalks Paris Mars 2017
 

En vedette

J'ai mis du DDD et du BDD dans ma marmite.
J'ai mis du DDD et du BDD dans ma marmite.J'ai mis du DDD et du BDD dans ma marmite.
J'ai mis du DDD et du BDD dans ma marmite.fchardon
 
BDD avec Behat, PhpSpec et Symfony2
BDD avec Behat, PhpSpec et Symfony2BDD avec Behat, PhpSpec et Symfony2
BDD avec Behat, PhpSpec et Symfony2Mohammed Rhamnia
 
Unit testing PHP apps with PHPUnit
Unit testing PHP apps with PHPUnitUnit testing PHP apps with PHPUnit
Unit testing PHP apps with PHPUnitMichelangelo van Dam
 
PHPUnit: from zero to hero
PHPUnit: from zero to heroPHPUnit: from zero to hero
PHPUnit: from zero to heroJeremy Cook
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsHugo Hamon
 
Bonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPBonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPPascal MARTIN
 
Test Driven Development with PHPUnit
Test Driven Development with PHPUnitTest Driven Development with PHPUnit
Test Driven Development with PHPUnitMindfire Solutions
 
Behavior Driven Development
Behavior Driven DevelopmentBehavior Driven Development
Behavior Driven DevelopmentLiz Keogh
 
Zoom sur le Métier de Développeur
Zoom sur le Métier de DéveloppeurZoom sur le Métier de Développeur
Zoom sur le Métier de DéveloppeurANAPEC
 
La qualité au meilleur prix grâce aux tests unitaires
La qualité au meilleur prix grâce aux tests unitairesLa qualité au meilleur prix grâce aux tests unitaires
La qualité au meilleur prix grâce aux tests unitairesGauthier Delamarre
 
Comment transformer un débutant en super-développeur
Comment transformer un débutant en super-développeurComment transformer un débutant en super-développeur
Comment transformer un débutant en super-développeurGauthier Delamarre
 
Drupalcamp Nantes - Présentation Drush
Drupalcamp Nantes - Présentation DrushDrupalcamp Nantes - Présentation Drush
Drupalcamp Nantes - Présentation DrushArtusamak
 
Publimetro 24 junio2011
Publimetro 24 junio2011Publimetro 24 junio2011
Publimetro 24 junio2011Walkiria Calva
 
Autoestima femenina
Autoestima femeninaAutoestima femenina
Autoestima femeninaLeila Cura
 
P E N S A M I E N T O Y V I D A E T I C A
P E N S A M I E N T O  Y  V I D A  E T I C AP E N S A M I E N T O  Y  V I D A  E T I C A
P E N S A M I E N T O Y V I D A E T I C Ajesjimtor
 
Mein Lieblingstier-Nikodimos
Mein Lieblingstier-NikodimosMein Lieblingstier-Nikodimos
Mein Lieblingstier-NikodimosYPEPTH
 

En vedette (20)

J'ai mis du DDD et du BDD dans ma marmite.
J'ai mis du DDD et du BDD dans ma marmite.J'ai mis du DDD et du BDD dans ma marmite.
J'ai mis du DDD et du BDD dans ma marmite.
 
BDD avec Behat, PhpSpec et Symfony2
BDD avec Behat, PhpSpec et Symfony2BDD avec Behat, PhpSpec et Symfony2
BDD avec Behat, PhpSpec et Symfony2
 
Unit testing PHP apps with PHPUnit
Unit testing PHP apps with PHPUnitUnit testing PHP apps with PHPUnit
Unit testing PHP apps with PHPUnit
 
PHPUnit: from zero to hero
PHPUnit: from zero to heroPHPUnit: from zero to hero
PHPUnit: from zero to hero
 
Behavior driven Development
Behavior driven DevelopmentBehavior driven Development
Behavior driven Development
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec Jenkins
 
Bonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHPBonnes pratiques de developpement en PHP
Bonnes pratiques de developpement en PHP
 
Test Driven Development with PHPUnit
Test Driven Development with PHPUnitTest Driven Development with PHPUnit
Test Driven Development with PHPUnit
 
Behavior Driven Development
Behavior Driven DevelopmentBehavior Driven Development
Behavior Driven Development
 
Zoom sur le Métier de Développeur
Zoom sur le Métier de DéveloppeurZoom sur le Métier de Développeur
Zoom sur le Métier de Développeur
 
La qualité au meilleur prix grâce aux tests unitaires
La qualité au meilleur prix grâce aux tests unitairesLa qualité au meilleur prix grâce aux tests unitaires
La qualité au meilleur prix grâce aux tests unitaires
 
Comment transformer un débutant en super-développeur
Comment transformer un débutant en super-développeurComment transformer un débutant en super-développeur
Comment transformer un débutant en super-développeur
 
Tdd cara nov2010
Tdd cara nov2010Tdd cara nov2010
Tdd cara nov2010
 
Drupalcamp Nantes - Présentation Drush
Drupalcamp Nantes - Présentation DrushDrupalcamp Nantes - Présentation Drush
Drupalcamp Nantes - Présentation Drush
 
Almuerzo con Dios
Almuerzo con DiosAlmuerzo con Dios
Almuerzo con Dios
 
Publimetro 24 junio2011
Publimetro 24 junio2011Publimetro 24 junio2011
Publimetro 24 junio2011
 
Autoestima femenina
Autoestima femeninaAutoestima femenina
Autoestima femenina
 
Francophonie
FrancophonieFrancophonie
Francophonie
 
P E N S A M I E N T O Y V I D A E T I C A
P E N S A M I E N T O  Y  V I D A  E T I C AP E N S A M I E N T O  Y  V I D A  E T I C A
P E N S A M I E N T O Y V I D A E T I C A
 
Mein Lieblingstier-Nikodimos
Mein Lieblingstier-NikodimosMein Lieblingstier-Nikodimos
Mein Lieblingstier-Nikodimos
 

Similaire à Human Talks Grenoble - 11/12/2012 - TDD

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
 
Mockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilMockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilNormandy JUG
 
Cleancode / Tocea / Introduction
Cleancode / Tocea / IntroductionCleancode / Tocea / Introduction
Cleancode / Tocea / IntroductionSylvain Leroy
 
Agilité, Tests Et Industrialisation
Agilité, Tests Et IndustrialisationAgilité, Tests Et Industrialisation
Agilité, Tests Et IndustrialisationPHPPRO
 
Petit Déjeuner TDR
Petit Déjeuner TDRPetit Déjeuner TDR
Petit Déjeuner TDRguest4e4aad
 
presentation Zest au JFTL 2014
presentation Zest au JFTL 2014presentation Zest au JFTL 2014
presentation Zest au JFTL 2014Laurent PY
 
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...Cyrille Grandval
 
AgileTour Toulouse 2012 : TFS
AgileTour Toulouse 2012 : TFSAgileTour Toulouse 2012 : TFS
AgileTour Toulouse 2012 : TFSAgile Toulouse
 
Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013
Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013
Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013Xavier NOPRE
 
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
 
10 ans de Code (Agile Bordeaux 2019).pptx
10 ans de Code (Agile Bordeaux 2019).pptx10 ans de Code (Agile Bordeaux 2019).pptx
10 ans de Code (Agile Bordeaux 2019).pptxGuillaume Saint Etienne
 
Lyong testing agile_testing
Lyong testing agile_testingLyong testing agile_testing
Lyong testing agile_testinglaurent bristiel
 
4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciel4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciellauraty3204
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOpsMicrosoft
 
Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...
Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...
Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...Samuel Metias
 
NDepend 5 en action par son créateur
NDepend 5 en action par son créateurNDepend 5 en action par son créateur
NDepend 5 en action par son créateurMicrosoft
 

Similaire à Human Talks Grenoble - 11/12/2012 - TDD (20)

Test driven development v0.2 20121221
Test driven development v0.2 20121221Test driven development v0.2 20121221
Test driven development v0.2 20121221
 
Mockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilMockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice Duteil
 
Cleancode / Tocea / Introduction
Cleancode / Tocea / IntroductionCleancode / Tocea / Introduction
Cleancode / Tocea / Introduction
 
Agilité, Tests Et Industrialisation
Agilité, Tests Et IndustrialisationAgilité, Tests Et Industrialisation
Agilité, Tests Et Industrialisation
 
Université du soir - TDD
Université du soir - TDDUniversité du soir - TDD
Université du soir - TDD
 
Petit Déjeuner TDR
Petit Déjeuner TDRPetit Déjeuner TDR
Petit Déjeuner TDR
 
Le pilotage par les tests
Le pilotage par les testsLe pilotage par les tests
Le pilotage par les tests
 
Tests Logiciel
Tests LogicielTests Logiciel
Tests Logiciel
 
presentation Zest au JFTL 2014
presentation Zest au JFTL 2014presentation Zest au JFTL 2014
presentation Zest au JFTL 2014
 
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
 
Flex Unit Testing
Flex Unit TestingFlex Unit Testing
Flex Unit Testing
 
AgileTour Toulouse 2012 : TFS
AgileTour Toulouse 2012 : TFSAgileTour Toulouse 2012 : TFS
AgileTour Toulouse 2012 : TFS
 
Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013
Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013
Mix-IT 2013 - Agilistes : n'oubliez pas la technique - mix-it 2013
 
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 ?
 
10 ans de Code (Agile Bordeaux 2019).pptx
10 ans de Code (Agile Bordeaux 2019).pptx10 ans de Code (Agile Bordeaux 2019).pptx
10 ans de Code (Agile Bordeaux 2019).pptx
 
Lyong testing agile_testing
Lyong testing agile_testingLyong testing agile_testing
Lyong testing agile_testing
 
4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciel4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciel
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOps
 
Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...
Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...
Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...
 
NDepend 5 en action par son créateur
NDepend 5 en action par son créateurNDepend 5 en action par son créateur
NDepend 5 en action par son créateur
 

Human Talks Grenoble - 11/12/2012 - TDD

  • 1. GRENOBLE TDD ou comment coder à l'endroit Xavier NOPRE – 11/12/2012
  • 2. C'est quoi les tests unitaires?
  • 3. C'est quoi les tests unitaires ?  Du code pour tester du code  Tests sur une "unité" de programme = partie de code la plus petite ayant une cohérence fonctionnelle  Classe  Automatisables, automatisés  Porter l'attention sur le ROI
  • 4. C'est quoi les tests unitaires ?  Du code pour tester du code  Tests sur une "unité" de programme = partie de code la plus petite ayant une cohérence fonctionnelle  Classe  Automatisables, automatisés  Porter l'attention sur le ROI Mike Cohn
  • 6. Pourquoi les tests unitaires ?  Un code qui marche  Un code qui fait ce qu'il faut  Non régression
  • 7. Pourquoi les tests unitaires ?  Diminuer les coûts Tests unitaires Scott Ambler
  • 8. Pourquoi les tests unitaires ?  Permettre des changements courageux
  • 9. Pourquoi les tests unitaires ?  Permettre des changements courageux  Refactorings
  • 10. Pourquoi les tests unitaires ?  Permettre des changements courageux  Refactorings  Développement itératif & incrémental
  • 11. Pourquoi les tests unitaires ?  Permettre des changements courageux  Refactorings  Développement itératif & incrémental  Agilité
  • 12. Pourquoi les tests unitaires ?  Documentation du code
  • 13. Pourquoi les tests unitaires ?  Documentation du code  Aide à comprendre l'usage de la classe
  • 14. Pourquoi les tests unitaires ?  Documentation du code  Aide à comprendre l'usage de la classe  Aide à comprendre ce que fait le code
  • 16. C'est quoi TDD ?  "Test Driven Development" = "Développement piloté par les tests"  Ecrire le code de test avant le code de production
  • 17. C'est quoi TDD ?  "Test Driven Development" = "Développement piloté par les tests"  Ecrire le code de test avant le code de production Mais pas que …
  • 18. Pourquoi le TDD ?
  • 19. Pourquoi le TDD ?  Code puis tests © @jbrains
  • 20. Pourquoi le TDD ?  Code puis tests © @jbrains
  • 21. Pourquoi le TDD ?  Code puis tests © @jbrains
  • 22. Pourquoi le TDD ?  Design puis Tests-Code © @jbrains
  • 23. Pourquoi le TDD ?  Design puis Tests-Code © @jbrains
  • 24. Pourquoi le TDD ?  Design puis Tests-Code © @jbrains
  • 25. Pourquoi le TDD ?  Analyse puis Tests-Code-Design © @jbrains
  • 26. Pourquoi le TDD ?  Analyse puis Tests-Code-Design © @jbrains
  • 27. Pourquoi le TDD ?  Analyse puis Tests-Code-Design © @jbrains
  • 28. Pourquoi le TDD ?  Aide à la conception
  • 29. Pourquoi le TDD ?  Aide à la conception  Se soucier d'abord de l'usage de notre classe Nous allons passer du temps à utiliser notre classe :  priorité à l'architecture et à la conception  priorité aux nommages et signatures
  • 30. Pourquoi le TDD ?  Aide à la conception  Se soucier d'abord de l'usage de notre classe Nous allons passer du temps à utiliser notre classe :  priorité à l'architecture et à la conception  priorité aux nommages et signatures  Se soucier ensuite du résultat à produire Ne pas se soucier de l'implémentation
  • 31. Pourquoi le TDD ?  Aide à la conception  Se soucier d'abord de l'usage de notre classe Nous allons passer du temps à utiliser notre classe :  priorité à l'architecture et à la conception  priorité aux nommages et signatures  Se soucier ensuite du résultat à produire Ne pas se soucier de l'implémentation  Approche "de l'extérieur vers l'intérieur"
  • 32. Comment le TDD ?
  • 33. Comment le TDD ?  Trois règles (Uncle Bob Martin)  Pas de code de production si ce n'est pour faire passer un test en échec  Un seul test en échec à la fois  Code minimum pour faire passer un test qui échouait
  • 34. Comment le TDD ?  Le Cycle Ecriture du Refactoring test Ecriture du code de production
  • 35. Comment le TDD ?  Le Cycle 1 cycle = qq minutes  Plusieurs cycles / heure Ecriture du Refactoring test Ecriture du code de production
  • 37. Mise en pratique ?  Un bon outillage (dispo pour tous les langages)  Principes de conception :  Architecture évolutive ("architecture agile")  Code testable  1 classe = 1 rôle ("SRP")  Injection de dépendance …  Utilisation de mocks (= "faux" collaborateurs)
  • 38. Mise en pratique ?  Erreurs / Pièges :  Ne pas suivre les 3 règles ou le cycle  Tests trop gros, trop complexes, inutiles, sous forme de scénarios, trop longs à exécuter  Code non lisible (test et prod)  Démarche non collective de l'équipe  Mauvais entretien collectif des tests  Manque de vision globale de l’architecture
  • 39. Mise en pratique ?  Conseils :  Se former, se faire accompagner  S'entrainer (coding-dojo)  Commencer par des cas faciles, évidents  S'y mettre progressivement  Faire des tests "à bon escient" …  Echanger, travail d'équipe, pair- programming  Du courage, ça vaut le coup !
  • 41. Conclusion  C'est une méthode de développement et non une "méthode de tests"
  • 42. Conclusion  C'est une méthode de développement et non une "méthode de tests" "On ne fait plus des tests"
  • 43. Conclusion  C'est une méthode de développement et non une "méthode de tests" "On ne fait plus des tests" "Finalement, le TDD, c'est coder …à l'endroit !"
  • 44. MERCI  Xavier NOPRE :  Développeur logiciel Java & Web passionné depuis ~ 20 ans  Pratique et partage l’agilité depuis 2007  Indépendant. Missions :  Développements sur mesure et accompagnement de projet  En mode agile  Coaching en agilité, Scrum, et ingénierie agile @xnopre xnopre.blogspot.com
  • 45. Références  http://spin.atomicobject.com/2012/12/06/writing-tests-is- not-tdd/  http://agilitateur.azeau.com/post/2009/03/31/Les-deux- sortes-de-TDD  http://www.jbrains.ca/permalink/how-test-driven- development-works-and-more