SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
Le développement piloté par les
            tests
     Laurent CARON – lcaron@interfaces-solutions.fr




                                                      1
A l’école on m’a appris…


                           2
LE CYCLE EN V…

      Exigences                                                        Tests fonctionnels




               Analyse                                   Tests d’intégration




                         Conception                Tests unitaires




                                      Implémentation




mar      avr      mai      jui        juil   aou       sep       oct       nov      dec     jan
                                                                                              3
ET CA FONCTIONNE ?
Bien sûr, si on a des spécifications
impeccables, limpides et lisibles…




                                       4
ET CA FONCTIONNE ?
Par un client qui sait ce qui veut…




                                       5
ET CA FONCTIONNE ?
Et une équipe de développeurs en béton
qui respectent les délais




                                         6
ET DANS LA VRAIE VIE ?
Les spécifications arrivent en retard…
Sont retouchées…
Le développement a été refait 18 fois !
Pour tenir à peu près les délais, on rogne
un peu sur les tests…
Puis beaucoup…
On recette sur une version bêta
Puis on croise les doigts à chaque livraison

                                               7
DEVELOPMENT HELL
               Augmentation
               de la pression




Baisse de la                    Moins de temps pour
productivité                      écrire les tests




                 Code moins
                   stable
                                                8
EN PLUS…
 Ce n’est la faute de personne
Expression des besoins



         Spécifications



                Codage



               Cahier de tests
                                  BUG !


                          Tests


                                                 9
EN PLUS…
 Ce n’est la faute de personne
Expression des besoins



         Spécifications
                                  C’est leur faute !

                Codage



               Cahier de tests



                          Tests


                                                              10
EN PLUS…
 Ce n’est la faute de personne
Expression des besoins
                                  C’est mal spécifié !

         Spécifications



                Codage



               Cahier de tests



                          Tests


                                                                11
EN PLUS…
 Si, c’est celle du client !
Expression des besoins

                                  C’est mal exprimé !
         Spécifications



                Codage



               Cahier de tests

                                        Voici le règne des avenants !
                          Tests


                                                                   12
UNE SEULE SOLUTION




                 13
Et pourquoi pas autre chose ?



                                14
LE DÉVELOPPEMENT PILOTÉ PAR LES TESTS
   On écrit les tests AVANT le code
   Déroulement :
     Ecriture du test
     Vérification de l'échec du test (puisque le code
     n'existe pas encore)
     Ecriture du code
     Vérification du test
     Refactoring (amélioration en gardant les
     mêmes fonctionnalités) : javadoc,
     commentaires…
                                                    15
LE DÉVELOPPEMENT PILOTÉ PAR LES TESTS

                           Codage du test



       Refactor                               Compilation

   Lancement du test                        Correction des
  Jusqu’à ce qu’il passe                erreurs de compilation


                                            Lancement du test
   Ecriture du code
                                                 échec


                                                                 16
INTÉRÊT
Précisent les spécifications
Force à réfléchir très tôt aux jeux de test
Permet d'arrêter le travail au bon moment
(quand les tests passent)
     Par conséquent, la conception est
                meilleure




                                              17
INTÉRÊT
Le code produit est testable
Test de composants en couche sans avoir besoin des
couches de présentation
Automatisation et non-régression
Refactoring aisé
             Confiance dans le code




                                                     18
Ce n’est pas seulement une
        technique…


                             19
DANS LES PROJETS INFORMATIQUES…
On rencontre principalement 3 types
d'intervenants
  Ceux qui « spécifient »
  Ceux qui « codent »
  Ceux qui « testent »
Mais, la plupart du temps…
  Ils ne parlent pas le même langage
  Ils ne travaillent pas ensemble
  Ils ne se connaissent parfois même pas

                                           20
QUE FAIRE ?
Il faut les aider…
  à travailler ensemble
  à rendre le travail de chacun utile
  à se sentir ensemble dans cette aventure




                                             21
QUE FAIRE ?
Spécifier les comportements avec des
exemples
Lier les spécifications au code de
production
Ecrire des tests avant le code
Echanger des idées en écrivant des tests
Partager un résultat attendu avant de
coder


                                           22
QUE FAIRE ?
Faire des tests les vedettes de votre projet
Se mettre d'accord sur ce que l'on veut puis
coder
Capitaliser les conversations dans des tests
Documenter l'utilisation d'un code dans
des tests




                                           23
BONNES PRATIQUES
Tests Petits
Tests Isolés
Fonctionnant sous n'importe quel environnement
Tests Complets
Tests Répétables
Tests Automatiques
Tests Clairs pour tout le monde
Concevoir les tests comme des spécifications, pas
comme des vérifications


                                                24
Et comment faire avec du code
        existant ?


                                25
LE CODE EXISTANT…
Il n’y a pas de test
Ce code n’a pas été conçu pour qu’on puisse
écrire simplement des tests
Par où je commence ?




                                              26
ON ÉCRIT LE TEST POUR TOUT LE CODE ?
 Le projet est gros, il faut donc passer les 6
 prochains mois à écrire des tests
 Evidemment, ce n’est pas réaliste !
 Commençons petit !




                                                 27
ON COMMENCE PAR 1 TEST !
Cherchez une portion de code testable (classe,
méthode, fonction…)
Ecrivez un test qui porte sur cette portion
Lancez-le : il doit réussir
(enfin, normalement ☺)
Ecrivez un test par jour…




                                                 28
TESTEZ À CHAQUE MODIFICATION DU CODE
    La prochaine fois que vous devez corriger
    un bug, écrivez un test qui permet de
    reproduire ce problème…
    Et qui échoue !
    Si la portion de code n’est pas testable,
    modifier le code pour l’isoler et la tester !




                                                    29
LANCEZ VOS TESTS !
Quand vous avez écrit vos tests, vous devez
les lancer !
Si vous ne le faites pas, ils sont inutiles…
Et c’est mieux si vous les faites exécuter
automatiquement…




                                           30
LES DÉFAUTS DE L’APPROCHE TDD
Coûteux en temps
Parfois complexe à
concevoir
Peut sembler peu utile
car le développeur doit
envisager tous les cas de
figure, même ceux a
priori inutiles


                                   31

Contenu connexe

Tendances

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
 
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
 
Pizza party 30-09-2011 bdd-cucumber
Pizza party 30-09-2011 bdd-cucumberPizza party 30-09-2011 bdd-cucumber
Pizza party 30-09-2011 bdd-cucumberHervé Leclerc
 
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
 
Exposé qualité et test
Exposé qualité et test Exposé qualité et test
Exposé qualité et test Imen Turki
 
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
 
A la poursuite du bug perdu - 2019 - THEAULT - DI GIORGIO - ACPQUALIFE
A la poursuite du bug perdu - 2019 - THEAULT - DI GIORGIO - ACPQUALIFEA la poursuite du bug perdu - 2019 - THEAULT - DI GIORGIO - ACPQUALIFE
A la poursuite du bug perdu - 2019 - THEAULT - DI GIORGIO - ACPQUALIFETelecomValley
 
100% couverture de code par les tests
100% couverture de code par les tests100% couverture de code par les tests
100% couverture de code par les testsVincent Tencé
 
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
 
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
 
Le rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testingLe rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testingGeeks Anonymes
 
eXtreme Programming [fr]
eXtreme Programming [fr]eXtreme Programming [fr]
eXtreme Programming [fr]Rémy Coutable
 
Implanter l'AOP... Comment partir du bon pied?
Implanter l'AOP... Comment partir du bon pied?Implanter l'AOP... Comment partir du bon pied?
Implanter l'AOP... Comment partir du bon pied?Elapse Technologies
 
Agilité, Tests Et Industrialisation
Agilité, Tests Et IndustrialisationAgilité, Tests Et Industrialisation
Agilité, Tests Et IndustrialisationPHPPRO
 
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
 
Extreme programming
Extreme programmingExtreme programming
Extreme programmingBilal ZIANE
 

Tendances (20)

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)
 
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
 
Pizza party 30-09-2011 bdd-cucumber
Pizza party 30-09-2011 bdd-cucumberPizza party 30-09-2011 bdd-cucumber
Pizza party 30-09-2011 bdd-cucumber
 
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
 
Exposé qualité et test
Exposé qualité et test Exposé qualité et test
Exposé qualité et test
 
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
 
A la poursuite du bug perdu - 2019 - THEAULT - DI GIORGIO - ACPQUALIFE
A la poursuite du bug perdu - 2019 - THEAULT - DI GIORGIO - ACPQUALIFEA la poursuite du bug perdu - 2019 - THEAULT - DI GIORGIO - ACPQUALIFE
A la poursuite du bug perdu - 2019 - THEAULT - DI GIORGIO - ACPQUALIFE
 
100% couverture de code par les tests
100% couverture de code par les tests100% couverture de code par les tests
100% couverture de code par les tests
 
Initiation à l'agile
Initiation à l'agileInitiation à l'agile
Initiation à l'agile
 
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)
 
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
 
Le rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testingLe rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testing
 
Ingénierie du test 0.9
Ingénierie du test 0.9Ingénierie du test 0.9
Ingénierie du test 0.9
 
eXtreme Programming [fr]
eXtreme Programming [fr]eXtreme Programming [fr]
eXtreme Programming [fr]
 
Implanter l'AOP... Comment partir du bon pied?
Implanter l'AOP... Comment partir du bon pied?Implanter l'AOP... Comment partir du bon pied?
Implanter l'AOP... Comment partir du bon pied?
 
Agilité, Tests Et Industrialisation
Agilité, Tests Et IndustrialisationAgilité, Tests Et Industrialisation
Agilité, Tests Et Industrialisation
 
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é
 
Présentation banc_ test
Présentation banc_ testPrésentation banc_ test
Présentation banc_ test
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Anatomie du test
Anatomie du testAnatomie du test
Anatomie du test
 

En vedette

10-Necesidades energeticas y minerales
10-Necesidades energeticas y minerales10-Necesidades energeticas y minerales
10-Necesidades energeticas y mineralesIES Montes de Toledo
 
P`royecto textual luis fernando ocmpo
P`royecto textual luis fernando ocmpoP`royecto textual luis fernando ocmpo
P`royecto textual luis fernando ocmpoAligi321
 
Usages des TICE dans une perspective d’aide à l’entraînement et à la formatio...
Usages des TICE dans une perspective d’aide à l’entraînement et à la formatio...Usages des TICE dans une perspective d’aide à l’entraînement et à la formatio...
Usages des TICE dans une perspective d’aide à l’entraînement et à la formatio...CREPS de Montpellier
 
Presentation detaillee enquete_tic_2011 de l'ANRT
Presentation detaillee enquete_tic_2011 de l'ANRTPresentation detaillee enquete_tic_2011 de l'ANRT
Presentation detaillee enquete_tic_2011 de l'ANRTChokri Nouar
 
Destruccion de la vega de granada
Destruccion de la vega de granadaDestruccion de la vega de granada
Destruccion de la vega de granadacosasdeandalucia
 
Diaporama green tic campus
Diaporama green tic campusDiaporama green tic campus
Diaporama green tic campusGreenTICCampus
 
éL Le Ha Escondido Con Un PropóSito—Usted Es
éL  Le  Ha Escondido  Con Un  PropóSito—Usted  EséL  Le  Ha Escondido  Con Un  PropóSito—Usted  Es
éL Le Ha Escondido Con Un PropóSito—Usted EsIRMA CHAVEZ
 
Cap Machinery
Cap MachineryCap Machinery
Cap Machineryvpp1512
 
metodo de estudio ecade
metodo de estudio ecademetodo de estudio ecade
metodo de estudio ecadekipemen
 
Time To Market 10 Sshow
Time To Market 10 SshowTime To Market 10 Sshow
Time To Market 10 Sshowgus1971
 
RocíO 2009 En Santos Lugares
RocíO 2009 En Santos LugaresRocíO 2009 En Santos Lugares
RocíO 2009 En Santos Lugarescosasdeandalucia
 
La Vida Es Tan Corta
La Vida Es Tan CortaLa Vida Es Tan Corta
La Vida Es Tan CortaIRMA CHAVEZ
 

En vedette (20)

Saint-Louis conc'air 2015
Saint-Louis  conc'air 2015Saint-Louis  conc'air 2015
Saint-Louis conc'air 2015
 
10-Necesidades energeticas y minerales
10-Necesidades energeticas y minerales10-Necesidades energeticas y minerales
10-Necesidades energeticas y minerales
 
P`royecto textual luis fernando ocmpo
P`royecto textual luis fernando ocmpoP`royecto textual luis fernando ocmpo
P`royecto textual luis fernando ocmpo
 
Usages des TICE dans une perspective d’aide à l’entraînement et à la formatio...
Usages des TICE dans une perspective d’aide à l’entraînement et à la formatio...Usages des TICE dans une perspective d’aide à l’entraînement et à la formatio...
Usages des TICE dans une perspective d’aide à l’entraînement et à la formatio...
 
Presentation detaillee enquete_tic_2011 de l'ANRT
Presentation detaillee enquete_tic_2011 de l'ANRTPresentation detaillee enquete_tic_2011 de l'ANRT
Presentation detaillee enquete_tic_2011 de l'ANRT
 
Destruccion de la vega de granada
Destruccion de la vega de granadaDestruccion de la vega de granada
Destruccion de la vega de granada
 
Test1
Test1Test1
Test1
 
Diaporama green tic campus
Diaporama green tic campusDiaporama green tic campus
Diaporama green tic campus
 
Abalar
AbalarAbalar
Abalar
 
Deporte
DeporteDeporte
Deporte
 
éL Le Ha Escondido Con Un PropóSito—Usted Es
éL  Le  Ha Escondido  Con Un  PropóSito—Usted  EséL  Le  Ha Escondido  Con Un  PropóSito—Usted  Es
éL Le Ha Escondido Con Un PropóSito—Usted Es
 
Asg Brochure 1
Asg Brochure 1Asg Brochure 1
Asg Brochure 1
 
Cap Machinery
Cap MachineryCap Machinery
Cap Machinery
 
Mi Rutina Mae
Mi Rutina MaeMi Rutina Mae
Mi Rutina Mae
 
metodo de estudio ecade
metodo de estudio ecademetodo de estudio ecade
metodo de estudio ecade
 
Time To Market 10 Sshow
Time To Market 10 SshowTime To Market 10 Sshow
Time To Market 10 Sshow
 
RocíO 2009 En Santos Lugares
RocíO 2009 En Santos LugaresRocíO 2009 En Santos Lugares
RocíO 2009 En Santos Lugares
 
K
KK
K
 
La Vida Es Tan Corta
La Vida Es Tan CortaLa Vida Es Tan Corta
La Vida Es Tan Corta
 
El pianista
El pianista El pianista
El pianista
 

Similaire à 201001 TDD

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
 
Développement piloté par les tests - DDD
Développement piloté par les tests - DDDDéveloppement piloté par les tests - DDD
Développement piloté par les tests - DDDPyxis Technologies
 
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?XP Day CH
 
Les Code Reviews : le guide de survie
Les Code Reviews : le guide de survieLes Code Reviews : le guide de survie
Les Code Reviews : le guide de survieNicolas VERINAUD
 
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
 
Présentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisésPrésentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisésDjamel Zouaoui
 
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 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
 
Valtech - Quel ROI pour ma transformation Agile ?
Valtech - Quel ROI pour ma transformation Agile ?Valtech - Quel ROI pour ma transformation Agile ?
Valtech - Quel ROI pour ma transformation Agile ?Valtech
 
Essential skills for the agile developer
Essential skills for the agile developerEssential skills for the agile developer
Essential skills for the agile developerAlice Barralon
 
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
 
Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Elapse Technologies
 
Tdd en action - refactoring
Tdd en action - refactoringTdd en action - refactoring
Tdd en action - refactoringEric Mignot
 
Revue de code - PHP Tour Nantes 2012
Revue de code - PHP Tour Nantes 2012Revue de code - PHP Tour Nantes 2012
Revue de code - PHP Tour Nantes 2012Jean-Marc Fontaine
 
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] 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
 
Agile tour 2015 alliés contre les défauts
Agile tour 2015   alliés contre les défautsAgile tour 2015   alliés contre les défauts
Agile tour 2015 alliés contre les défautsJulien Jakubowski
 
Agile tour Lille 2015 allies ensemble contre les defauts
Agile tour Lille 2015 allies ensemble contre les defautsAgile tour Lille 2015 allies ensemble contre les defauts
Agile tour Lille 2015 allies ensemble contre les defautsAntoine Blk
 
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
 

Similaire à 201001 TDD (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
 
Développement piloté par les tests - DDD
Développement piloté par les tests - DDDDéveloppement piloté par les tests - DDD
Développement piloté par les tests - DDD
 
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
 
Les Code Reviews : le guide de survie
Les Code Reviews : le guide de survieLes Code Reviews : le guide de survie
Les Code Reviews : le guide de survie
 
Test driven development v0.2 20121221
Test driven development v0.2 20121221Test driven development v0.2 20121221
Test driven development v0.2 20121221
 
Présentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisésPrésentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisés
 
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
 
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
 
Valtech - Quel ROI pour ma transformation Agile ?
Valtech - Quel ROI pour ma transformation Agile ?Valtech - Quel ROI pour ma transformation Agile ?
Valtech - Quel ROI pour ma transformation Agile ?
 
Tour d'horizon des tests
Tour d'horizon des testsTour d'horizon des tests
Tour d'horizon des tests
 
Essential skills for the agile developer
Essential skills for the agile developerEssential skills for the agile developer
Essential skills for the agile developer
 
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
 
Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29
 
Tdd en action - refactoring
Tdd en action - refactoringTdd en action - refactoring
Tdd en action - refactoring
 
Revue de code - PHP Tour Nantes 2012
Revue de code - PHP Tour Nantes 2012Revue de code - PHP Tour Nantes 2012
Revue de code - PHP Tour Nantes 2012
 
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] 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
 
Agile tour 2015 alliés contre les défauts
Agile tour 2015   alliés contre les défautsAgile tour 2015   alliés contre les défauts
Agile tour 2015 alliés contre les défauts
 
Agile tour Lille 2015 allies ensemble contre les defauts
Agile tour Lille 2015 allies ensemble contre les defautsAgile tour Lille 2015 allies ensemble contre les defauts
Agile tour Lille 2015 allies ensemble contre les defauts
 
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 ?
 

Plus de lyonjug

DIY: Analyse statique en Java
DIY: Analyse statique en JavaDIY: Analyse statique en Java
DIY: Analyse statique en Javalyonjug
 
Lightning talk LyonJUG février 2016 - Ansible
Lightning talk LyonJUG février 2016 - AnsibleLightning talk LyonJUG février 2016 - Ansible
Lightning talk LyonJUG février 2016 - Ansiblelyonjug
 
Introduction LyonJUG décembre 2015
Introduction LyonJUG décembre 2015Introduction LyonJUG décembre 2015
Introduction LyonJUG décembre 2015lyonjug
 
Introduction LyonJUG Janvier 2016
Introduction LyonJUG Janvier 2016Introduction LyonJUG Janvier 2016
Introduction LyonJUG Janvier 2016lyonjug
 
Presentation jug novembre2015
Presentation jug novembre2015Presentation jug novembre2015
Presentation jug novembre2015lyonjug
 
201502 - Integration Testing
201502 - Integration Testing201502 - Integration Testing
201502 - Integration Testinglyonjug
 
201311 - Middleware
201311 - Middleware201311 - Middleware
201311 - Middlewarelyonjug
 
201303 - Golo
201303 - Golo201303 - Golo
201303 - Gololyonjug
 
201303 - Java8
201303 - Java8201303 - Java8
201303 - Java8lyonjug
 
201305 - Lambda by R. Forax
201305 - Lambda by R. Forax201305 - Lambda by R. Forax
201305 - Lambda by R. Foraxlyonjug
 
201301 - Focus Neo4j
201301 - Focus Neo4j201301 - Focus Neo4j
201301 - Focus Neo4jlyonjug
 
201301 - Panorama NoSQL
201301 - Panorama NoSQL201301 - Panorama NoSQL
201301 - Panorama NoSQLlyonjug
 
201209 Lombok & Guava
201209 Lombok & Guava201209 Lombok & Guava
201209 Lombok & Guavalyonjug
 
201209 LT Clojure
201209 LT Clojure201209 LT Clojure
201209 LT Clojurelyonjug
 
Spring Batch Workshop (advanced)
Spring Batch Workshop (advanced)Spring Batch Workshop (advanced)
Spring Batch Workshop (advanced)lyonjug
 
Spring Batch Workshop
Spring Batch WorkshopSpring Batch Workshop
Spring Batch Workshoplyonjug
 
Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...
Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...
Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...lyonjug
 
GlassFish, Application versioning et rolling upgrade en haute disponibilité
GlassFish, Application versioning et rolling upgrade en haute disponibilitéGlassFish, Application versioning et rolling upgrade en haute disponibilité
GlassFish, Application versioning et rolling upgrade en haute disponibilitélyonjug
 
Développement dans le cloud - Sacha Labourey
Développement dans le cloud - Sacha LaboureyDéveloppement dans le cloud - Sacha Labourey
Développement dans le cloud - Sacha Laboureylyonjug
 
Présentation Granite ds lyon 2011 par William Draï
Présentation Granite ds lyon 2011 par William DraïPrésentation Granite ds lyon 2011 par William Draï
Présentation Granite ds lyon 2011 par William Draïlyonjug
 

Plus de lyonjug (20)

DIY: Analyse statique en Java
DIY: Analyse statique en JavaDIY: Analyse statique en Java
DIY: Analyse statique en Java
 
Lightning talk LyonJUG février 2016 - Ansible
Lightning talk LyonJUG février 2016 - AnsibleLightning talk LyonJUG février 2016 - Ansible
Lightning talk LyonJUG février 2016 - Ansible
 
Introduction LyonJUG décembre 2015
Introduction LyonJUG décembre 2015Introduction LyonJUG décembre 2015
Introduction LyonJUG décembre 2015
 
Introduction LyonJUG Janvier 2016
Introduction LyonJUG Janvier 2016Introduction LyonJUG Janvier 2016
Introduction LyonJUG Janvier 2016
 
Presentation jug novembre2015
Presentation jug novembre2015Presentation jug novembre2015
Presentation jug novembre2015
 
201502 - Integration Testing
201502 - Integration Testing201502 - Integration Testing
201502 - Integration Testing
 
201311 - Middleware
201311 - Middleware201311 - Middleware
201311 - Middleware
 
201303 - Golo
201303 - Golo201303 - Golo
201303 - Golo
 
201303 - Java8
201303 - Java8201303 - Java8
201303 - Java8
 
201305 - Lambda by R. Forax
201305 - Lambda by R. Forax201305 - Lambda by R. Forax
201305 - Lambda by R. Forax
 
201301 - Focus Neo4j
201301 - Focus Neo4j201301 - Focus Neo4j
201301 - Focus Neo4j
 
201301 - Panorama NoSQL
201301 - Panorama NoSQL201301 - Panorama NoSQL
201301 - Panorama NoSQL
 
201209 Lombok & Guava
201209 Lombok & Guava201209 Lombok & Guava
201209 Lombok & Guava
 
201209 LT Clojure
201209 LT Clojure201209 LT Clojure
201209 LT Clojure
 
Spring Batch Workshop (advanced)
Spring Batch Workshop (advanced)Spring Batch Workshop (advanced)
Spring Batch Workshop (advanced)
 
Spring Batch Workshop
Spring Batch WorkshopSpring Batch Workshop
Spring Batch Workshop
 
Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...
Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...
Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...
 
GlassFish, Application versioning et rolling upgrade en haute disponibilité
GlassFish, Application versioning et rolling upgrade en haute disponibilitéGlassFish, Application versioning et rolling upgrade en haute disponibilité
GlassFish, Application versioning et rolling upgrade en haute disponibilité
 
Développement dans le cloud - Sacha Labourey
Développement dans le cloud - Sacha LaboureyDéveloppement dans le cloud - Sacha Labourey
Développement dans le cloud - Sacha Labourey
 
Présentation Granite ds lyon 2011 par William Draï
Présentation Granite ds lyon 2011 par William DraïPrésentation Granite ds lyon 2011 par William Draï
Présentation Granite ds lyon 2011 par William Draï
 

201001 TDD

  • 1. Le développement piloté par les tests Laurent CARON – lcaron@interfaces-solutions.fr 1
  • 2. A l’école on m’a appris… 2
  • 3. LE CYCLE EN V… Exigences Tests fonctionnels Analyse Tests d’intégration Conception Tests unitaires Implémentation mar avr mai jui juil aou sep oct nov dec jan 3
  • 4. ET CA FONCTIONNE ? Bien sûr, si on a des spécifications impeccables, limpides et lisibles… 4
  • 5. ET CA FONCTIONNE ? Par un client qui sait ce qui veut… 5
  • 6. ET CA FONCTIONNE ? Et une équipe de développeurs en béton qui respectent les délais 6
  • 7. ET DANS LA VRAIE VIE ? Les spécifications arrivent en retard… Sont retouchées… Le développement a été refait 18 fois ! Pour tenir à peu près les délais, on rogne un peu sur les tests… Puis beaucoup… On recette sur une version bêta Puis on croise les doigts à chaque livraison 7
  • 8. DEVELOPMENT HELL Augmentation de la pression Baisse de la Moins de temps pour productivité écrire les tests Code moins stable 8
  • 9. EN PLUS… Ce n’est la faute de personne Expression des besoins Spécifications Codage Cahier de tests BUG ! Tests 9
  • 10. EN PLUS… Ce n’est la faute de personne Expression des besoins Spécifications C’est leur faute ! Codage Cahier de tests Tests 10
  • 11. EN PLUS… Ce n’est la faute de personne Expression des besoins C’est mal spécifié ! Spécifications Codage Cahier de tests Tests 11
  • 12. EN PLUS… Si, c’est celle du client ! Expression des besoins C’est mal exprimé ! Spécifications Codage Cahier de tests Voici le règne des avenants ! Tests 12
  • 14. Et pourquoi pas autre chose ? 14
  • 15. LE DÉVELOPPEMENT PILOTÉ PAR LES TESTS On écrit les tests AVANT le code Déroulement : Ecriture du test Vérification de l'échec du test (puisque le code n'existe pas encore) Ecriture du code Vérification du test Refactoring (amélioration en gardant les mêmes fonctionnalités) : javadoc, commentaires… 15
  • 16. LE DÉVELOPPEMENT PILOTÉ PAR LES TESTS Codage du test Refactor Compilation Lancement du test Correction des Jusqu’à ce qu’il passe erreurs de compilation Lancement du test Ecriture du code échec 16
  • 17. INTÉRÊT Précisent les spécifications Force à réfléchir très tôt aux jeux de test Permet d'arrêter le travail au bon moment (quand les tests passent) Par conséquent, la conception est meilleure 17
  • 18. INTÉRÊT Le code produit est testable Test de composants en couche sans avoir besoin des couches de présentation Automatisation et non-régression Refactoring aisé Confiance dans le code 18
  • 19. Ce n’est pas seulement une technique… 19
  • 20. DANS LES PROJETS INFORMATIQUES… On rencontre principalement 3 types d'intervenants Ceux qui « spécifient » Ceux qui « codent » Ceux qui « testent » Mais, la plupart du temps… Ils ne parlent pas le même langage Ils ne travaillent pas ensemble Ils ne se connaissent parfois même pas 20
  • 21. QUE FAIRE ? Il faut les aider… à travailler ensemble à rendre le travail de chacun utile à se sentir ensemble dans cette aventure 21
  • 22. QUE FAIRE ? Spécifier les comportements avec des exemples Lier les spécifications au code de production Ecrire des tests avant le code Echanger des idées en écrivant des tests Partager un résultat attendu avant de coder 22
  • 23. QUE FAIRE ? Faire des tests les vedettes de votre projet Se mettre d'accord sur ce que l'on veut puis coder Capitaliser les conversations dans des tests Documenter l'utilisation d'un code dans des tests 23
  • 24. BONNES PRATIQUES Tests Petits Tests Isolés Fonctionnant sous n'importe quel environnement Tests Complets Tests Répétables Tests Automatiques Tests Clairs pour tout le monde Concevoir les tests comme des spécifications, pas comme des vérifications 24
  • 25. Et comment faire avec du code existant ? 25
  • 26. LE CODE EXISTANT… Il n’y a pas de test Ce code n’a pas été conçu pour qu’on puisse écrire simplement des tests Par où je commence ? 26
  • 27. ON ÉCRIT LE TEST POUR TOUT LE CODE ? Le projet est gros, il faut donc passer les 6 prochains mois à écrire des tests Evidemment, ce n’est pas réaliste ! Commençons petit ! 27
  • 28. ON COMMENCE PAR 1 TEST ! Cherchez une portion de code testable (classe, méthode, fonction…) Ecrivez un test qui porte sur cette portion Lancez-le : il doit réussir (enfin, normalement ☺) Ecrivez un test par jour… 28
  • 29. TESTEZ À CHAQUE MODIFICATION DU CODE La prochaine fois que vous devez corriger un bug, écrivez un test qui permet de reproduire ce problème… Et qui échoue ! Si la portion de code n’est pas testable, modifier le code pour l’isoler et la tester ! 29
  • 30. LANCEZ VOS TESTS ! Quand vous avez écrit vos tests, vous devez les lancer ! Si vous ne le faites pas, ils sont inutiles… Et c’est mieux si vous les faites exécuter automatiquement… 30
  • 31. LES DÉFAUTS DE L’APPROCHE TDD Coûteux en temps Parfois complexe à concevoir Peut sembler peu utile car le développeur doit envisager tous les cas de figure, même ceux a priori inutiles 31