SlideShare une entreprise Scribd logo
1  sur  15
Télécharger pour lire hors ligne
Une méthode agile, sans le savoir !
         Test Driven Development
         ou comment tester en développant




                                             Frédéric Delorme
                                           frederic.delorme@gmail.com


Décembre 2011
TDD: qu’est-ce ?

 La
   méthode TDD, Test Driven
 Developement ou développement piloté par les
 tests est une méthode de développement (comme
 son nom l’indique) imposant la formalisation
 du besoin technique avant son développement,
 et ce en utilisant des outils permettant de
 rejouer et vérifier à volonté la conformité de
 son implémentation.
  Sur la plateforme Java, cet outil est souvent
   JUnit (http://www.junit.org).
Habitude du développeur

Conception réalisée par des consultants
fonctionnels                                       Conception




Développement réalisée par des développeurs          Code



Test(s) réalisé(s) par d’autres personnes
(souvent les développeurs, mais pas ceux qui ont    Test(s?)
créé le code, dans un esprit de cross-testing…)
La vision TDD

Conception réalisée par des consultants
fonctionnels                              Conception




                                           Test(s?)
Tests et Développement (dans l’ordre)
réalisés par la même personne pour
un même composant !

                                            Code
Le cycle initial du TDD
Etape 4:
                                      Etape 1:
Le développeur
                                      Le concepteur
refactorise son code
(Commons +               Conception   fonctionnel fait le
                                      design en rédigeant
couverture des cas
                                      des Cas de test .
d’erreur)




       Test                                 Test


Etape 3:                              Etape 2:
Le même développeur                   Le développeur
code au fur et à                      code les tests
mesure l’(es) objet(s)
                           Code       unitaires
qui répond(ent) aux                   correspondant aux
cas de test                           cas de tests
Démarche (1/2)

 Ici,
     le développeur écrit un peu de code de test et ensuite
  implémente le métier.
 Le code métier est soumis aux tests puis il est corrigé jusqu‘à
  ce que ses tests soient validés.
 Le développeur procède éventuellement ensuite à
  un refactor du code qui est un autre principe de l'Extreme
  Programing permettant d'améliorer la qualité interne du code
  en procédant à plusieurs opérations (renommage de
  méthodes, suppression de codes inutiles,...).
Démarche (2/2)
   Décomposée en trois phases
    appelé RGR
    (aussi appelé la Mantra).
    Les deux premières phases sont
    nommées d’après la couleur de la
    barre de progression dans les
    outils de tests unitaires comme
    Junit

   R (Red): écrire un code de test et
    les faire échouer

   G (Green) : écrire le code métier
    qui valide le test

   R (Refactor)  : remaniement du
    code afin d'en améliorer la qualité
En clair
      Ajouter un test


Exécuter le test et constater
    qu’il échoue (RED)


 Ajouter du code pour faire
       passer le test


Exécuter le test et constater
    qu’il passe (GREEN)


   Remaniement du code


  Contrôler que les tests
    passent toujours
Avantages : Tests écrits !

 La mise en place de la méthode TDD offre de nombreux
  avantages au sein du développement d'un logiciel.
 Voici les avantages apportés par l'emploi de cette
  méthode

 Les tests unitaires sont réellement écrits
 On remarque généralement que les tests unitaires sont
 souvent remis à plus tard (par manque de temps ou
 d'intérêt). Le fait de commencer par rédiger les tests
 permet de s'assurer que les tests seront écrits.
Avantages : Satisfaction

    La satisfaction du développeur permet d'obtenir un code plus cohérent
    En suivant la méthode traditionnelle le développeur écrit une unité et va ensuite procéder aux
    tests afin de s'assurer que ce qu'il a codé est valide. Cette méthode est peu satisfaisante pour
    un développeur car il est déjà conscient que le code qu'il a écrit est juste. A l'inverse, en
    appliquant la méthode TDD, il va commencer par rédiger les tests puis ensuite passer à
    l'implémentation de l'unité afin de faire passer les tests. Ce procédé est plus satisfaisant et
    motivant car il s'agit d'une sorte de défis de faire valider les tests, C'est une sensation
    d'accomplissement. Il est important de ne pas ignorer les aspects psychologiques si on veut
    s'assurer que le travail réalisé par les développeurs soit propre et efficace.
Avantages : Clarification

 Clarification  des détails de l'interface et du
 comportement
 En effet, lorsque le développeur écrit du code de test pour
 tester une implémentation qui n'existe pas encore, il va
 devoir penser aux détails de la méthode dont il a besoin
 pour écrire la spécification.

 Aussi, il va s'interroger sur le nom de la méthode, sa(ses)
 valeur de retour, ses paramètres, comportement,...

 Cela permet de clarifier la conception et d'écrire
 seulement du code utile.
Avantages : Rejouabilité

 Vérification   démontrable,
 répétable et automatisé
 Le fait de disposer d'un grand
 nombre de test permet de s'assurer
 de la solidité et garantie du code.
Avantages: Non
        régression
 Non  présence de régression
 Lorsqu'un développeur modifie une
 méthode existante, il peut relancer
 les tests unitaires afin de s'assurer
 que sa modification n'a pas impacté
 l'existant et donc cela offre un
 feedback immédiat.
Comment procède-t-on ?

 Dans   le monde Java: utilisation d’API
  JUNIT
   ▪ Pour le code des classes de tests unitaires
  DBUNIT
   ▪ Pour le setting de données dans une base
  HSQLDB (par exemple)
   ▪ Comme moteur de base de données en mémoire
     (pour le temps d’exécution des tests)
   ▪ Chaque test peut avoir son jeu de données isolé.
Travaux pratiques

 Exemple   1 :
 Implémentation d’une classe de
 service de compte bancaire
 (basique)

 Exemple   2:
 Implémentation d’une DAO pour un
 objet persistant et ajout d’un jeu de
 données de test.

Contenu connexe

Tendances

La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineLa qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineGeeks Anonymes
 
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
 
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
 
Tdd en action - découverte
Tdd en action - découverteTdd en action - découverte
Tdd en action - découverteEric Mignot
 
Outils et pratiques : tester une application web moderne
Outils et pratiques : tester une application web moderneOutils et pratiques : tester une application web moderne
Outils et pratiques : tester une application web modernehalleck45
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringneuros
 
Exposé qualité et test
Exposé qualité et test Exposé qualité et test
Exposé qualité et test Imen Turki
 
Exposée: Processus de test logiciel
Exposée:  Processus de test logiciel Exposée:  Processus de test logiciel
Exposée: Processus de test logiciel Esaie88
 
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
 
eXtreme Programming [fr]
eXtreme Programming [fr]eXtreme Programming [fr]
eXtreme Programming [fr]Rémy Coutable
 
L'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoringL'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoringPascal Laurin
 
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
 
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
 
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
 
Introduction à la validation de logiciel
Introduction à la validation de logicielIntroduction à la validation de logiciel
Introduction à la validation de logicielJean-Paul CARMONA
 
PyConFR - testons en python
PyConFR - testons en pythonPyConFR - testons en python
PyConFR - testons en pythongburet
 

Tendances (20)

La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineLa qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
 
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
 
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...
 
Tdd en action - découverte
Tdd en action - découverteTdd en action - découverte
Tdd en action - découverte
 
Outils et pratiques : tester une application web moderne
Outils et pratiques : tester une application web moderneOutils et pratiques : tester une application web moderne
Outils et pratiques : tester une application web moderne
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoring
 
Exposé qualité et test
Exposé qualité et test Exposé qualité et test
Exposé qualité et test
 
Test logiciel
Test logicielTest logiciel
Test logiciel
 
Bbl sur les tests
Bbl sur les testsBbl sur les tests
Bbl sur les tests
 
Exposée: Processus de test logiciel
Exposée:  Processus de test logiciel Exposée:  Processus de test logiciel
Exposée: Processus de test logiciel
 
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é
 
eXtreme Programming [fr]
eXtreme Programming [fr]eXtreme Programming [fr]
eXtreme Programming [fr]
 
L'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoringL'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoring
 
Behavior driven Development
Behavior driven DevelopmentBehavior driven Development
Behavior driven Development
 
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
 
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)
 
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
 
Introduction à la validation de logiciel
Introduction à la validation de logicielIntroduction à la validation de logiciel
Introduction à la validation de logiciel
 
PyConFR - testons en python
PyConFR - testons en pythonPyConFR - testons en python
PyConFR - testons en python
 
Et4 4 testinformel
Et4 4 testinformelEt4 4 testinformel
Et4 4 testinformel
 

En vedette

Adoption De Pratiques De Test Agile Dans Un Environnement Legacy
Adoption De Pratiques De Test Agile Dans Un Environnement LegacyAdoption De Pratiques De Test Agile Dans Un Environnement Legacy
Adoption De Pratiques De Test Agile Dans Un Environnement LegacyXavier Warzee
 
Automatiser les tests des développements BI grâce à NBi
Automatiser les tests des développements BI grâce à NBiAutomatiser les tests des développements BI grâce à NBi
Automatiser les tests des développements BI grâce à NBiCédric Charlier
 
Agile france 2011, rex centre de service agile chez clt services
Agile france 2011, rex centre de service agile chez clt servicesAgile france 2011, rex centre de service agile chez clt services
Agile france 2011, rex centre de service agile chez clt servicesDamien Thouvenin
 
Gestion de projets agiles avec scrum
Gestion de projets agiles avec scrumGestion de projets agiles avec scrum
Gestion de projets agiles avec scrumPierre E. NEIS
 
Methodologies de Developpement Agiles : Scrum et XP
Methodologies de Developpement Agiles : Scrum et XPMethodologies de Developpement Agiles : Scrum et XP
Methodologies de Developpement Agiles : Scrum et XPNicolas Perriault
 

En vedette (7)

Adoption De Pratiques De Test Agile Dans Un Environnement Legacy
Adoption De Pratiques De Test Agile Dans Un Environnement LegacyAdoption De Pratiques De Test Agile Dans Un Environnement Legacy
Adoption De Pratiques De Test Agile Dans Un Environnement Legacy
 
Automatiser les tests des développements BI grâce à NBi
Automatiser les tests des développements BI grâce à NBiAutomatiser les tests des développements BI grâce à NBi
Automatiser les tests des développements BI grâce à NBi
 
Psp Tsp Agile 3 1 Fr
Psp Tsp Agile 3 1 FrPsp Tsp Agile 3 1 Fr
Psp Tsp Agile 3 1 Fr
 
Agile france 2011, rex centre de service agile chez clt services
Agile france 2011, rex centre de service agile chez clt servicesAgile france 2011, rex centre de service agile chez clt services
Agile france 2011, rex centre de service agile chez clt services
 
Gestion de projets agiles avec scrum
Gestion de projets agiles avec scrumGestion de projets agiles avec scrum
Gestion de projets agiles avec scrum
 
Agilité pour les nuls
Agilité pour les nulsAgilité pour les nuls
Agilité pour les nuls
 
Methodologies de Developpement Agiles : Scrum et XP
Methodologies de Developpement Agiles : Scrum et XPMethodologies de Developpement Agiles : Scrum et XP
Methodologies de Developpement Agiles : Scrum et XP
 

Similaire à Test driven development v0.2 20121221

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
 
Mockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilMockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilNormandy JUG
 
Omnilog 2016 - Apéro techno : Rex FFF sur l'intégration continue
Omnilog 2016 - Apéro techno : Rex FFF sur l'intégration continueOmnilog 2016 - Apéro techno : Rex FFF sur l'intégration continue
Omnilog 2016 - Apéro techno : Rex FFF sur l'intégration continueXavier Callens
 
Cleancode / Tocea / Introduction
Cleancode / Tocea / IntroductionCleancode / Tocea / Introduction
Cleancode / Tocea / IntroductionSylvain Leroy
 
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileLes cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileDenis Voituron
 
4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciel4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciellauraty3204
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transcolaurent_opnworks
 
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
 
NightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous DeliveryNightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous DeliveryZenika
 
Les tests fonctionnels avec Visual Studio 2010
Les tests fonctionnels avec Visual Studio 2010Les tests fonctionnels avec Visual Studio 2010
Les tests fonctionnels avec Visual Studio 2010Microsoft
 
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
 
AgileTour Toulouse 2012 : TFS
AgileTour Toulouse 2012 : TFSAgileTour Toulouse 2012 : TFS
AgileTour Toulouse 2012 : TFSAgile Toulouse
 
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
 
presentation Zest au JFTL 2014
presentation Zest au JFTL 2014presentation Zest au JFTL 2014
presentation Zest au JFTL 2014Laurent PY
 
Développement en méthode agile
Développement en méthode agileDéveloppement en méthode agile
Développement en méthode agilelaurent bristiel
 
RA et CCDS - Séance 1.pptx
RA et CCDS - Séance 1.pptxRA et CCDS - Séance 1.pptx
RA et CCDS - Séance 1.pptxtestuser715939
 
SharePoint Summit 2012 - Les tests automatisés et SharePoint 2010, c'est poss...
SharePoint Summit 2012 - Les tests automatisés et SharePoint 2010, c'est poss...SharePoint Summit 2012 - Les tests automatisés et SharePoint 2010, c'est poss...
SharePoint Summit 2012 - Les tests automatisés et SharePoint 2010, c'est poss...Sébastien Levert
 

Similaire à Test driven development v0.2 20121221 (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
 
Mockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilMockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice Duteil
 
Xtreme Programming
Xtreme ProgrammingXtreme Programming
Xtreme Programming
 
Method XP
Method XP Method XP
Method XP
 
Omnilog 2016 - Apéro techno : Rex FFF sur l'intégration continue
Omnilog 2016 - Apéro techno : Rex FFF sur l'intégration continueOmnilog 2016 - Apéro techno : Rex FFF sur l'intégration continue
Omnilog 2016 - Apéro techno : Rex FFF sur l'intégration continue
 
Cleancode / Tocea / Introduction
Cleancode / Tocea / IntroductionCleancode / Tocea / Introduction
Cleancode / Tocea / Introduction
 
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileLes cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
 
4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciel4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciel
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transco
 
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
 
NightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous DeliveryNightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous Delivery
 
Les tests fonctionnels avec Visual Studio 2010
Les tests fonctionnels avec Visual Studio 2010Les tests fonctionnels avec Visual Studio 2010
Les tests fonctionnels avec Visual Studio 2010
 
Université du soir - TDD
Université du soir - TDDUniversité du soir - TDD
Université du soir - TDD
 
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
 
AgileTour Toulouse 2012 : TFS
AgileTour Toulouse 2012 : TFSAgileTour Toulouse 2012 : TFS
AgileTour Toulouse 2012 : TFS
 
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 ?
 
presentation Zest au JFTL 2014
presentation Zest au JFTL 2014presentation Zest au JFTL 2014
presentation Zest au JFTL 2014
 
Développement en méthode agile
Développement en méthode agileDéveloppement en méthode agile
Développement en méthode agile
 
RA et CCDS - Séance 1.pptx
RA et CCDS - Séance 1.pptxRA et CCDS - Séance 1.pptx
RA et CCDS - Séance 1.pptx
 
SharePoint Summit 2012 - Les tests automatisés et SharePoint 2010, c'est poss...
SharePoint Summit 2012 - Les tests automatisés et SharePoint 2010, c'est poss...SharePoint Summit 2012 - Les tests automatisés et SharePoint 2010, c'est poss...
SharePoint Summit 2012 - Les tests automatisés et SharePoint 2010, c'est poss...
 

Test driven development v0.2 20121221

  • 1. Une méthode agile, sans le savoir ! Test Driven Development ou comment tester en développant Frédéric Delorme frederic.delorme@gmail.com Décembre 2011
  • 2. TDD: qu’est-ce ?  La méthode TDD, Test Driven Developement ou développement piloté par les tests est une méthode de développement (comme son nom l’indique) imposant la formalisation du besoin technique avant son développement, et ce en utilisant des outils permettant de rejouer et vérifier à volonté la conformité de son implémentation.  Sur la plateforme Java, cet outil est souvent JUnit (http://www.junit.org).
  • 3. Habitude du développeur Conception réalisée par des consultants fonctionnels Conception Développement réalisée par des développeurs Code Test(s) réalisé(s) par d’autres personnes (souvent les développeurs, mais pas ceux qui ont Test(s?) créé le code, dans un esprit de cross-testing…)
  • 4. La vision TDD Conception réalisée par des consultants fonctionnels Conception Test(s?) Tests et Développement (dans l’ordre) réalisés par la même personne pour un même composant ! Code
  • 5. Le cycle initial du TDD Etape 4: Etape 1: Le développeur Le concepteur refactorise son code (Commons + Conception fonctionnel fait le design en rédigeant couverture des cas des Cas de test . d’erreur) Test Test Etape 3: Etape 2: Le même développeur Le développeur code au fur et à code les tests mesure l’(es) objet(s) Code unitaires qui répond(ent) aux correspondant aux cas de test cas de tests
  • 6. Démarche (1/2)  Ici, le développeur écrit un peu de code de test et ensuite implémente le métier.  Le code métier est soumis aux tests puis il est corrigé jusqu‘à ce que ses tests soient validés.  Le développeur procède éventuellement ensuite à un refactor du code qui est un autre principe de l'Extreme Programing permettant d'améliorer la qualité interne du code en procédant à plusieurs opérations (renommage de méthodes, suppression de codes inutiles,...).
  • 7. Démarche (2/2)  Décomposée en trois phases appelé RGR (aussi appelé la Mantra). Les deux premières phases sont nommées d’après la couleur de la barre de progression dans les outils de tests unitaires comme Junit  R (Red): écrire un code de test et les faire échouer  G (Green) : écrire le code métier qui valide le test  R (Refactor)  : remaniement du code afin d'en améliorer la qualité
  • 8. En clair Ajouter un test Exécuter le test et constater qu’il échoue (RED) Ajouter du code pour faire passer le test Exécuter le test et constater qu’il passe (GREEN) Remaniement du code Contrôler que les tests passent toujours
  • 9. Avantages : Tests écrits !  La mise en place de la méthode TDD offre de nombreux avantages au sein du développement d'un logiciel.  Voici les avantages apportés par l'emploi de cette méthode  Les tests unitaires sont réellement écrits On remarque généralement que les tests unitaires sont souvent remis à plus tard (par manque de temps ou d'intérêt). Le fait de commencer par rédiger les tests permet de s'assurer que les tests seront écrits.
  • 10. Avantages : Satisfaction  La satisfaction du développeur permet d'obtenir un code plus cohérent En suivant la méthode traditionnelle le développeur écrit une unité et va ensuite procéder aux tests afin de s'assurer que ce qu'il a codé est valide. Cette méthode est peu satisfaisante pour un développeur car il est déjà conscient que le code qu'il a écrit est juste. A l'inverse, en appliquant la méthode TDD, il va commencer par rédiger les tests puis ensuite passer à l'implémentation de l'unité afin de faire passer les tests. Ce procédé est plus satisfaisant et motivant car il s'agit d'une sorte de défis de faire valider les tests, C'est une sensation d'accomplissement. Il est important de ne pas ignorer les aspects psychologiques si on veut s'assurer que le travail réalisé par les développeurs soit propre et efficace.
  • 11. Avantages : Clarification  Clarification des détails de l'interface et du comportement En effet, lorsque le développeur écrit du code de test pour tester une implémentation qui n'existe pas encore, il va devoir penser aux détails de la méthode dont il a besoin pour écrire la spécification. Aussi, il va s'interroger sur le nom de la méthode, sa(ses) valeur de retour, ses paramètres, comportement,... Cela permet de clarifier la conception et d'écrire seulement du code utile.
  • 12. Avantages : Rejouabilité  Vérification démontrable, répétable et automatisé Le fait de disposer d'un grand nombre de test permet de s'assurer de la solidité et garantie du code.
  • 13. Avantages: Non régression  Non présence de régression Lorsqu'un développeur modifie une méthode existante, il peut relancer les tests unitaires afin de s'assurer que sa modification n'a pas impacté l'existant et donc cela offre un feedback immédiat.
  • 14. Comment procède-t-on ?  Dans le monde Java: utilisation d’API  JUNIT ▪ Pour le code des classes de tests unitaires  DBUNIT ▪ Pour le setting de données dans une base  HSQLDB (par exemple) ▪ Comme moteur de base de données en mémoire (pour le temps d’exécution des tests) ▪ Chaque test peut avoir son jeu de données isolé.
  • 15. Travaux pratiques  Exemple 1 : Implémentation d’une classe de service de compte bancaire (basique)  Exemple 2: Implémentation d’une DAO pour un objet persistant et ajout d’un jeu de données de test.