SlideShare a Scribd company logo
1 of 39
Le pilotage par les tests


    Mise en pratique
 et retour d’expérience
Merci à nos sponsors !
Moi…


                           Jérôme Avoustin
                            .NET, Agilité, Performance
                                                 @JeromeAvoustin




http://blog.avoustin.com           Agilité, AMOA, .NET, SharePoint
                                         http://www.smartview.fr
De quoi va-t-on parler ?




         Given
                 Emergent Design
Business               A
                       Cucumber

  Needs        Qualité TBDDTests
   xBehave

 Unit Red    TDDxUnit
                         d’acceptance
                       D Green
                       D Refactoring
 Tests
             When



                       Then
                    Spec
De quoi va-t-on parler ?




         Given
                 Emergent Design
Business               A
                       Cucumber

  Needs        Qualité TBDDTests
   xBehave

 Unit Red    TDDxUnit
                         d’acceptance
                       D Green
                       D Refactoring
 Tests
             When



                       Then
                    Spec
C’est quoi la
 Qualité ?
Sur le web
Sur twitter

     Any fool can write code that a computer can understand.
     Good programmers write code that humans can understand.
     Martin Fowler

Codez toujours en pensant que celui qui maintiendra votre
code est un psychopathe qui connait votre adresse.
Martin Golding

       My project is 90% done. I hope the second half goes as well.
       Scott W. Ambler

J’écris des tests qui passent avant d’avoir écrit le code.
Chuck Norris
Sur Wikipedia



Aptitude d’un ensemble de caractéristiques intrinsèques à
satisfaire les besoins exprimés ou potentiels des utilisateurs.




                        Niveau de finition ou de perfection
                        d’exécution d’une action ou d’un produit.
Une autre proposition…




Une application informatique est de qualité lorsque
 le coût d’ajout d’une fonctionnalité est stable.
Une autre proposition…

   Une application informatique est de qualité lorsque
    le coût d’ajout d’une fonctionnalité est stable.

Coût




                                                         Temps
Les types de dette




   Code            Tests




Obsolescence      Besoins
Pourquoi automatiser le test ?
Les stratégies de test

Pas de tests
                  Test-after

  Test-first

                    TDD
Un peu de philo

     Validation du code
T est
           Centré sur le besoin

D riven
           Design émergent

D evelopment
  esign Refactoring intensif
Concrètement, c’est quoi le TDD ?

              1. Red
              2. Green
              3. Refactor
TDD



Exemple
Et l’ATDD ?


  Intégrer le client
                                     Réduire
  dans le processus
                                l’interprétabilité

              Acceptance
Améliore le            TDD          Spécification
 feedback                           par l’exemple
               Spécifications
                exécutables
Position dans le processus



Vision
ATDD



Exemple
Quid du BDD ?


Test            Comportement
         Test = documentation

            Behaviour
                    DD
  Comportement           DevraitFaire…
   décrit dans le         ou
nom de la méthode        NeDevraitPasFaire…
Quid du BDD ?


  1 Comportement =
1 critère d’acceptance       Plus de proximité
                               avec le client

             Behaviour
Langage              DD
universel                    Given <contexte>
                             When <action>
                             Then <résultat>
        1 DSL : le Gherkin
BDD



Exemple
Quand s’en servir ?


   Types de tests      TDD    ATDD       BDD

   Tests unitaires

 Tests d’intégration

 Tests fonctionnels

  Tests d’interface

 Tests d’ergonomie

Tests de performance
En résumé


Developer         Customer
 centric           centric


TDD               ATDD
            BDD
Retour d’expérience : Le contexte

• Domaine de l’assurance
• Développement d’un extranet
• Application Web traditionnelle
  o MVC
  o Repository + NHibernate
• Equipe assez hétérogène
  o Histoire, expériences, âges, compétences
• Pas d’habitude des tests automatisés
• Adhésion du management aux pratiques agiles
Approche des tests en Top Down

    Tests d’interfaces
             Red                                        BDD
     Green                           Tests unitaires
                                     des Controller

   SpecFlow                   Red         Green
(Cucumber-like)
+ WatiN + NUnit
                                                          Tests unitaires
                                                          des Repository
                               Refactor

                           NUnit                  Red              Green


                                                        Refactor
                                                                      NUnit
Un petit bilan…




      Pas simple tous les jours…        Plein de questions…




83%
…de couverture !

                         Un surcoût…!
                                              Un code assez clean !
Les tests OK, mais pour quel coût ?



100%                   120%
Où est l’intérêt finalement ?

• Le temps de Debug, passe sur le temps de Tests
• Le temps de Tests prend en compte :
    o Une partie de la rédaction de specs,
    o La réalisation de tests manuels de non régression
      • La recette existe toujours !
•   Le temps de Dev prend en compte le refactoring
•   On a réduit drastiquement le nombre de bugs
•   On n’écrit plus de code inutile
•   On a gagné en prédictibilité !
    o Le temps de Debug est imprévisible
Les questions qui se sont posées...

Par où commencer ?
Par le test le plus simple !

                        Par quoi poursuivre ?
                        Par le prochain test le plus simple !

Faut-il tester les méthodes « passe-plats » ?
A vous de voir…

          Jusqu’où s’arrêter ? Faut-il TOUT tester ?
          J’y répondrai à la fin… 
…et qui se posent encore !



Faut-il des mocks ou des stubs ?
De manière générale, des stubs,
mais les mocks ont leur utilité
http://martinfowler.com/articles/mocksArentStubs.html




                  Le critère d’acceptance du PO est nul !
                  Mettons-nous autour de la table…
Quelques conseils sur… le TDD

• Pour être testée, une application doit être…
  testable !
  o Privilégier l’injection de dépendance
  o Privilégier les frameworks « testables » unitairement
  o Eliminer tout ce qui est static
• Ne passez pas trop de temps sur un test
• 1 chose testée par méthode de test
  o Plusieurs Assert permis…
• Ne courrez pas derrière le 100% de couverture
• Ajouter un test lorsque vous rencontrez un bug
Quelques conseils sur le… BDD

• Utilisez le plus haut niveau d’abstraction métier
  possible dans vos descriptions
  o Exemple : Given je suis sur la page d’accueil
     et non Given je vais à l’URL http://localhost:87675/


• Concentrez le test sur ce qui doit être testé
  o Ne pas répéter des étapes
  o Dans le Given, décrire le contexte le plus tard possible
Quelques conseils sur le… Refactoring

• Ne reportez pas le Refactoring à plus tard
  o Dette technique !


• Commencez par refactorer les tests !!!!

• Mettez en place la règle du Boy Scout
  o « A chaque fois que je passe à un endroit, je le rends un
    tout petit peu plus propre qu’il ne l’était avant »


• Inspirez-vous du Software Craftsmanship
Récapitulons…


              Spécification

                                   Design
Interaction
               Le pilotage
               par les tests
                                  Formalisme
 1 Process

                     Qualité
C’est surtout un état d’esprit !


Attention au changement de culture !

            Osez vous tromper !...
                                …Et persévérez !

Soyez curieux, et regardez
toutes les pratiques (Faites des dojos !)

        Faites appel à votre bon sens !!
Pour aller plus loin

http://dannorth.net/introducing-bdd/                     @kentbeck
                                                         @jamesshore
http://www.ibm.com/developerworks/java/libr              @gojkoadzic
ary/j-eaed2/index.html                                   @martinfowler
                                                         @tastapod
                                                         @ericminio
Merci ! Des questions ?

Jérôme Avoustin
    @JeromeAvoustin

           jerome.avoustin@smartview.fr
               http://www.smartview.fr
              http://blog.avoustin.com


  Scrum Pastis Montpellier : 22/11/2011

        Meetup : http://past.is/bP2R
        Questionnaire : http://past.is/bPza

More Related Content

What's hot

Coding Dojo - Kata sur le pilotage par les tests d'acceptances (ATDD)
Coding Dojo - Kata sur le pilotage par les tests d'acceptances (ATDD)Coding Dojo - Kata sur le pilotage par les tests d'acceptances (ATDD)
Coding Dojo - Kata sur le pilotage par les tests d'acceptances (ATDD)Agile Tour Genève
 
Propulser votre architecture grâce aux mocks
Propulser votre architecture grâce aux mocksPropulser votre architecture grâce aux mocks
Propulser votre architecture grâce aux mocksElapse Technologies
 
Bbd dans le flow nov.2012
Bbd dans le flow nov.2012Bbd dans le flow nov.2012
Bbd dans le flow nov.2012guillaumeagilr
 
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
 
Propulsez votre architecture grâce au TDD et aux mocks (Agile Tour Montréal 2...
Propulsez votre architecture grâce au TDD et aux mocks (Agile Tour Montréal 2...Propulsez votre architecture grâce au TDD et aux mocks (Agile Tour Montréal 2...
Propulsez votre architecture grâce au TDD et aux mocks (Agile Tour Montréal 2...Elapse Technologies
 
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
 
Soirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec SonarSoirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec SonarElsassJUG
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringneuros
 
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
 
Extreme programming
Extreme programmingExtreme programming
Extreme programmingBilal ZIANE
 
2019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.1
2019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.12019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.1
2019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.1TelecomValley
 
eXtreme Programming [fr]
eXtreme Programming [fr]eXtreme Programming [fr]
eXtreme Programming [fr]Rémy Coutable
 
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
 
Propulsez votre architectures grâce au TDD et aux Mocks (Agile Montréal 2014)
Propulsez votre architectures grâce au TDD et aux Mocks (Agile Montréal 2014)Propulsez votre architectures grâce au TDD et aux Mocks (Agile Montréal 2014)
Propulsez votre architectures grâce au TDD et aux Mocks (Agile Montréal 2014)Elapse Technologies
 
Tdd en action - découverte
Tdd en action - découverteTdd en action - découverte
Tdd en action - découverteEric Mignot
 

What's hot (20)

Coding Dojo - Kata sur le pilotage par les tests d'acceptances (ATDD)
Coding Dojo - Kata sur le pilotage par les tests d'acceptances (ATDD)Coding Dojo - Kata sur le pilotage par les tests d'acceptances (ATDD)
Coding Dojo - Kata sur le pilotage par les tests d'acceptances (ATDD)
 
Propulser votre architecture grâce aux mocks
Propulser votre architecture grâce aux mocksPropulser votre architecture grâce aux mocks
Propulser votre architecture grâce aux mocks
 
Bbd dans le flow nov.2012
Bbd dans le flow nov.2012Bbd dans le flow nov.2012
Bbd dans le flow nov.2012
 
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
 
Propulsez votre architecture grâce au TDD et aux mocks (Agile Tour Montréal 2...
Propulsez votre architecture grâce au TDD et aux mocks (Agile Tour Montréal 2...Propulsez votre architecture grâce au TDD et aux mocks (Agile Tour Montréal 2...
Propulsez votre architecture grâce au TDD et aux mocks (Agile Tour Montréal 2...
 
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é
 
Soirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec SonarSoirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec Sonar
 
Présentation kanban
Présentation kanbanPrésentation kanban
Présentation kanban
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoring
 
Agile Methodologies
Agile MethodologiesAgile Methodologies
Agile Methodologies
 
Method XP
Method XP Method XP
Method XP
 
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
 
Xtreme Programming
Xtreme ProgrammingXtreme Programming
Xtreme Programming
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
2019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.1
2019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.12019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.1
2019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.1
 
eXtreme Programming [fr]
eXtreme Programming [fr]eXtreme Programming [fr]
eXtreme Programming [fr]
 
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...
 
Propulsez votre architectures grâce au TDD et aux Mocks (Agile Montréal 2014)
Propulsez votre architectures grâce au TDD et aux Mocks (Agile Montréal 2014)Propulsez votre architectures grâce au TDD et aux Mocks (Agile Montréal 2014)
Propulsez votre architectures grâce au TDD et aux Mocks (Agile Montréal 2014)
 
to Test or not to Test?
to Test or not to Test?to Test or not to Test?
to Test or not to Test?
 
Tdd en action - découverte
Tdd en action - découverteTdd en action - découverte
Tdd en action - découverte
 

Viewers also liked

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
 
Measuring Code Quality in WTF/min.
Measuring Code Quality in WTF/min. Measuring Code Quality in WTF/min.
Measuring Code Quality in WTF/min. David Gómez García
 
Behavior Driven Development
Behavior Driven DevelopmentBehavior Driven Development
Behavior Driven DevelopmentLiz Keogh
 
Tests & recette - Les fondamentaux
Tests & recette - Les fondamentauxTests & recette - Les fondamentaux
Tests & recette - Les fondamentauxCOMPETENSIS
 
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
 
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
 
Bilan electrique francais 2010
Bilan electrique francais 2010Bilan electrique francais 2010
Bilan electrique francais 2010RTE
 
Importancia de un plan de negocio[1]
Importancia de un plan de negocio[1]Importancia de un plan de negocio[1]
Importancia de un plan de negocio[1]Saris Moncada Lopera
 
Gauvreausectionviews
GauvreausectionviewsGauvreausectionviews
Gauvreausectionviewsgauvy1234
 
MI TARJETA DE PRESENTACION
MI TARJETA DE PRESENTACIONMI TARJETA DE PRESENTACION
MI TARJETA DE PRESENTACIONForjando Valores
 
Trabajo de informática angel turizo
Trabajo de informática angel turizoTrabajo de informática angel turizo
Trabajo de informática angel turizoangelturizo94
 
Siege social asso soc et médico sociale
Siege social asso soc et médico socialeSiege social asso soc et médico sociale
Siege social asso soc et médico socialeMarie Bluzet Proniewski
 
initiation au javascript
initiation au javascriptinitiation au javascript
initiation au javascriptAbdoulaye Dieng
 
200963 rosette1945 (1)
200963 rosette1945 (1)200963 rosette1945 (1)
200963 rosette1945 (1)cicii3
 

Viewers also liked (20)

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
 
Measuring Code Quality in WTF/min.
Measuring Code Quality in WTF/min. Measuring Code Quality in WTF/min.
Measuring Code Quality in WTF/min.
 
Behavior Driven Development
Behavior Driven DevelopmentBehavior Driven Development
Behavior Driven Development
 
Tests & recette - Les fondamentaux
Tests & recette - Les fondamentauxTests & recette - Les fondamentaux
Tests & recette - Les fondamentaux
 
Tdd cara nov2010
Tdd cara nov2010Tdd cara nov2010
Tdd cara nov2010
 
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)
 
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
 
Rédiger des User Stories
Rédiger des User StoriesRédiger des User Stories
Rédiger des User Stories
 
Bilan electrique francais 2010
Bilan electrique francais 2010Bilan electrique francais 2010
Bilan electrique francais 2010
 
Importancia de un plan de negocio[1]
Importancia de un plan de negocio[1]Importancia de un plan de negocio[1]
Importancia de un plan de negocio[1]
 
Gauvreausectionviews
GauvreausectionviewsGauvreausectionviews
Gauvreausectionviews
 
10 hugo nigro_mazzilli
10 hugo nigro_mazzilli10 hugo nigro_mazzilli
10 hugo nigro_mazzilli
 
MI TARJETA DE PRESENTACION
MI TARJETA DE PRESENTACIONMI TARJETA DE PRESENTACION
MI TARJETA DE PRESENTACION
 
Mon quartier
Mon quartierMon quartier
Mon quartier
 
Doglife l3
Doglife l3Doglife l3
Doglife l3
 
Trabajo de informática angel turizo
Trabajo de informática angel turizoTrabajo de informática angel turizo
Trabajo de informática angel turizo
 
90 la tendresse
90 la tendresse90 la tendresse
90 la tendresse
 
Siege social asso soc et médico sociale
Siege social asso soc et médico socialeSiege social asso soc et médico sociale
Siege social asso soc et médico sociale
 
initiation au javascript
initiation au javascriptinitiation au javascript
initiation au javascript
 
200963 rosette1945 (1)
200963 rosette1945 (1)200963 rosette1945 (1)
200963 rosette1945 (1)
 

Similar to Le pilotage par les tests

Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAgile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAssociation Agile Nantes
 
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
 
[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Test Driven Development (TDD)[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Test Driven Development (TDD)Cellenza
 
Agilité, Tests Et Industrialisation
Agilité, Tests Et IndustrialisationAgilité, Tests Et Industrialisation
Agilité, Tests Et IndustrialisationPHPPRO
 
Mockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilMockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilNormandy JUG
 
Petit Déjeuner TDR
Petit Déjeuner TDRPetit Déjeuner TDR
Petit Déjeuner TDRguest4e4aad
 
TDD de la vraie vie - AlpesCraft 2022
TDD de la vraie vie - AlpesCraft 2022TDD de la vraie vie - AlpesCraft 2022
TDD de la vraie vie - AlpesCraft 2022martinsson
 
Pas d'agilité sans qualité
Pas d'agilité sans qualitéPas d'agilité sans qualité
Pas d'agilité sans qualitéAgile Montréal
 
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
 
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
 
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
 
Deux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succèsDeux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succèsAgile Tour 2009 Québec
 
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
 
dev et admin sys : une cohabitation simplifiée
dev et admin sys : une cohabitation simplifiéedev et admin sys : une cohabitation simplifiée
dev et admin sys : une cohabitation simplifiéeNicolas Silberman
 
Deployer en continu, Benoît Lafontaine, USIEVENT 2013
Deployer en continu, Benoît Lafontaine, USIEVENT 2013Deployer en continu, Benoît Lafontaine, USIEVENT 2013
Deployer en continu, Benoît Lafontaine, USIEVENT 2013Benoît Lafontaine
 
Mix it 2016 - Software craftsmanship : le chainon manquant de l’agilité ?
Mix it 2016 - Software craftsmanship : le chainon manquant de l’agilité ?Mix it 2016 - Software craftsmanship : le chainon manquant de l’agilité ?
Mix it 2016 - Software craftsmanship : le chainon manquant de l’agilité ?Charles Bouttaz
 
Mix it 2016 - Software craftsmanship : le chainon manquant de l’agilité ?
Mix it 2016 - Software craftsmanship : le chainon manquant de l’agilité ?Mix it 2016 - Software craftsmanship : le chainon manquant de l’agilité ?
Mix it 2016 - Software craftsmanship : le chainon manquant de l’agilité ?Nicolas Ruffel
 
Comment accélérer le DevOps avec l’ATDD/BDD?
Comment accélérer le DevOps avec l’ATDD/BDD?Comment accélérer le DevOps avec l’ATDD/BDD?
Comment accélérer le DevOps avec l’ATDD/BDD?Danka Zindovic-Dana
 

Similar to Le pilotage par les tests (20)

Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAgile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
 
Tour d'horizon des tests
Tour d'horizon des testsTour d'horizon des tests
Tour d'horizon des 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
 
[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Test Driven Development (TDD)[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Test Driven Development (TDD)
 
Agilité, Tests Et Industrialisation
Agilité, Tests Et IndustrialisationAgilité, Tests Et Industrialisation
Agilité, Tests Et Industrialisation
 
Mockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilMockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice Duteil
 
Petit Déjeuner TDR
Petit Déjeuner TDRPetit Déjeuner TDR
Petit Déjeuner TDR
 
TDD de la vraie vie - AlpesCraft 2022
TDD de la vraie vie - AlpesCraft 2022TDD de la vraie vie - AlpesCraft 2022
TDD de la vraie vie - AlpesCraft 2022
 
Pas d'agilité sans qualité
Pas d'agilité sans qualitéPas d'agilité sans qualité
Pas d'agilité sans qualité
 
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
 
Test driven development v0.2 20121221
Test driven development v0.2 20121221Test driven development v0.2 20121221
Test driven development v0.2 20121221
 
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 qualife
 
Deux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succèsDeux ans de développement Agile, erreurs et succès
Deux ans de développement Agile, erreurs et succès
 
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...
 
dev et admin sys : une cohabitation simplifiée
dev et admin sys : une cohabitation simplifiéedev et admin sys : une cohabitation simplifiée
dev et admin sys : une cohabitation simplifiée
 
Deployer en continu, Benoît Lafontaine, USIEVENT 2013
Deployer en continu, Benoît Lafontaine, USIEVENT 2013Deployer en continu, Benoît Lafontaine, USIEVENT 2013
Deployer en continu, Benoît Lafontaine, USIEVENT 2013
 
Université du soir - TDD
Université du soir - TDDUniversité du soir - TDD
Université du soir - TDD
 
Mix it 2016 - Software craftsmanship : le chainon manquant de l’agilité ?
Mix it 2016 - Software craftsmanship : le chainon manquant de l’agilité ?Mix it 2016 - Software craftsmanship : le chainon manquant de l’agilité ?
Mix it 2016 - Software craftsmanship : le chainon manquant de l’agilité ?
 
Mix it 2016 - Software craftsmanship : le chainon manquant de l’agilité ?
Mix it 2016 - Software craftsmanship : le chainon manquant de l’agilité ?Mix it 2016 - Software craftsmanship : le chainon manquant de l’agilité ?
Mix it 2016 - Software craftsmanship : le chainon manquant de l’agilité ?
 
Comment accélérer le DevOps avec l’ATDD/BDD?
Comment accélérer le DevOps avec l’ATDD/BDD?Comment accélérer le DevOps avec l’ATDD/BDD?
Comment accélérer le DevOps avec l’ATDD/BDD?
 

Le pilotage par les tests

  • 1. Le pilotage par les tests Mise en pratique et retour d’expérience
  • 2. Merci à nos sponsors !
  • 3. Moi… Jérôme Avoustin .NET, Agilité, Performance @JeromeAvoustin http://blog.avoustin.com Agilité, AMOA, .NET, SharePoint http://www.smartview.fr
  • 4. De quoi va-t-on parler ? Given Emergent Design Business A Cucumber Needs Qualité TBDDTests xBehave Unit Red TDDxUnit d’acceptance D Green D Refactoring Tests When Then Spec
  • 5. De quoi va-t-on parler ? Given Emergent Design Business A Cucumber Needs Qualité TBDDTests xBehave Unit Red TDDxUnit d’acceptance D Green D Refactoring Tests When Then Spec
  • 6. C’est quoi la Qualité ?
  • 8. Sur twitter Any fool can write code that a computer can understand. Good programmers write code that humans can understand. Martin Fowler Codez toujours en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse. Martin Golding My project is 90% done. I hope the second half goes as well. Scott W. Ambler J’écris des tests qui passent avant d’avoir écrit le code. Chuck Norris
  • 9. Sur Wikipedia Aptitude d’un ensemble de caractéristiques intrinsèques à satisfaire les besoins exprimés ou potentiels des utilisateurs. Niveau de finition ou de perfection d’exécution d’une action ou d’un produit.
  • 10. Une autre proposition… Une application informatique est de qualité lorsque le coût d’ajout d’une fonctionnalité est stable.
  • 11. Une autre proposition… Une application informatique est de qualité lorsque le coût d’ajout d’une fonctionnalité est stable. Coût Temps
  • 12. Les types de dette Code Tests Obsolescence Besoins
  • 14. Les stratégies de test Pas de tests Test-after Test-first TDD
  • 15. Un peu de philo Validation du code T est Centré sur le besoin D riven Design émergent D evelopment esign Refactoring intensif
  • 16. Concrètement, c’est quoi le TDD ? 1. Red 2. Green 3. Refactor
  • 18. Et l’ATDD ? Intégrer le client Réduire dans le processus l’interprétabilité Acceptance Améliore le TDD Spécification feedback par l’exemple Spécifications exécutables
  • 19. Position dans le processus Vision
  • 21. Quid du BDD ? Test Comportement Test = documentation Behaviour DD Comportement DevraitFaire… décrit dans le ou nom de la méthode NeDevraitPasFaire…
  • 22. Quid du BDD ? 1 Comportement = 1 critère d’acceptance Plus de proximité avec le client Behaviour Langage DD universel Given <contexte> When <action> Then <résultat> 1 DSL : le Gherkin
  • 24. Quand s’en servir ? Types de tests TDD ATDD BDD Tests unitaires Tests d’intégration Tests fonctionnels Tests d’interface Tests d’ergonomie Tests de performance
  • 25. En résumé Developer Customer centric centric TDD ATDD BDD
  • 26. Retour d’expérience : Le contexte • Domaine de l’assurance • Développement d’un extranet • Application Web traditionnelle o MVC o Repository + NHibernate • Equipe assez hétérogène o Histoire, expériences, âges, compétences • Pas d’habitude des tests automatisés • Adhésion du management aux pratiques agiles
  • 27. Approche des tests en Top Down Tests d’interfaces Red BDD Green Tests unitaires des Controller SpecFlow Red Green (Cucumber-like) + WatiN + NUnit Tests unitaires des Repository Refactor NUnit Red Green Refactor NUnit
  • 28. Un petit bilan… Pas simple tous les jours… Plein de questions… 83% …de couverture ! Un surcoût…! Un code assez clean !
  • 29. Les tests OK, mais pour quel coût ? 100% 120%
  • 30. Où est l’intérêt finalement ? • Le temps de Debug, passe sur le temps de Tests • Le temps de Tests prend en compte : o Une partie de la rédaction de specs, o La réalisation de tests manuels de non régression • La recette existe toujours ! • Le temps de Dev prend en compte le refactoring • On a réduit drastiquement le nombre de bugs • On n’écrit plus de code inutile • On a gagné en prédictibilité ! o Le temps de Debug est imprévisible
  • 31. Les questions qui se sont posées... Par où commencer ? Par le test le plus simple ! Par quoi poursuivre ? Par le prochain test le plus simple ! Faut-il tester les méthodes « passe-plats » ? A vous de voir… Jusqu’où s’arrêter ? Faut-il TOUT tester ? J’y répondrai à la fin… 
  • 32. …et qui se posent encore ! Faut-il des mocks ou des stubs ? De manière générale, des stubs, mais les mocks ont leur utilité http://martinfowler.com/articles/mocksArentStubs.html Le critère d’acceptance du PO est nul ! Mettons-nous autour de la table…
  • 33. Quelques conseils sur… le TDD • Pour être testée, une application doit être… testable ! o Privilégier l’injection de dépendance o Privilégier les frameworks « testables » unitairement o Eliminer tout ce qui est static • Ne passez pas trop de temps sur un test • 1 chose testée par méthode de test o Plusieurs Assert permis… • Ne courrez pas derrière le 100% de couverture • Ajouter un test lorsque vous rencontrez un bug
  • 34. Quelques conseils sur le… BDD • Utilisez le plus haut niveau d’abstraction métier possible dans vos descriptions o Exemple : Given je suis sur la page d’accueil et non Given je vais à l’URL http://localhost:87675/ • Concentrez le test sur ce qui doit être testé o Ne pas répéter des étapes o Dans le Given, décrire le contexte le plus tard possible
  • 35. Quelques conseils sur le… Refactoring • Ne reportez pas le Refactoring à plus tard o Dette technique ! • Commencez par refactorer les tests !!!! • Mettez en place la règle du Boy Scout o « A chaque fois que je passe à un endroit, je le rends un tout petit peu plus propre qu’il ne l’était avant » • Inspirez-vous du Software Craftsmanship
  • 36. Récapitulons… Spécification Design Interaction Le pilotage par les tests Formalisme 1 Process Qualité
  • 37. C’est surtout un état d’esprit ! Attention au changement de culture ! Osez vous tromper !... …Et persévérez ! Soyez curieux, et regardez toutes les pratiques (Faites des dojos !) Faites appel à votre bon sens !!
  • 38. Pour aller plus loin http://dannorth.net/introducing-bdd/ @kentbeck @jamesshore http://www.ibm.com/developerworks/java/libr @gojkoadzic ary/j-eaed2/index.html @martinfowler @tastapod @ericminio
  • 39. Merci ! Des questions ? Jérôme Avoustin @JeromeAvoustin jerome.avoustin@smartview.fr http://www.smartview.fr http://blog.avoustin.com Scrum Pastis Montpellier : 22/11/2011 Meetup : http://past.is/bP2R Questionnaire : http://past.is/bPza

Editor's Notes

  1. PAS DE TESTS : cas des forfaits. Dette technique et dette de tests énormes. Heures de séance de débuggage assurées. Cas : pas le temps OU pas besoin car trop fortsTEST AFTER : intérêt des tests limité. On ne fait du test que pour le test. Mais c’est trop tard ! On ne teste que les cas les plus évidents. Sous le stress du résultat, on abandonne. Le test est souvent mal écrit, peu efficace et peu maintenable.TEST FIRST : Le test sans le refactoring
  2. Nom de la méthode important pour : bien comprendre le comportement ciblé, savoir exactement ce qu’il ne va pas en cas d’échec[Reprendre exemple TDD]