SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
TDD, le meilleur moyen d'écrire du code testable 
Xavier Nopre
Puis-je avoir ce diaporama ? 
Un mail à xnopre@gmail.com : 
–Votre avis sur cette session 
–Vos questions
Qui suis-je ? 
Artisan-programmeur 
Agiliste 
Indépendant 
Xavier Nopre 
•Développement d'applications "sur-mesure" pour des clients finaux 
•Interventions en entreprises : formation, accompagnement, développement freelance 
@xnopre 
xnopre.blogspot.com
Tests unitaires
De quoi parlons-nous ? 
Tests unitaires = 
Du code qui teste du code
Tests unitaires et agilité ? 
Agilité : 
• Développement itératif et incrémental 
• En permanence, adapter le code existant pour ajouter de nouvelles fonctionnalités = refactoring 
•Sans régression  Nécessité de filets de sécurité 
• Tests unitaires et autres
Tests unitaires = la base des tests 
Test unitaires 
Tests intégration / acceptance 
Tests 
GUI 
Tests manuels 
Pyramide des tests – Mike Cohn 
•Les tests unitaires sont la "base" de tous les tests 
•L'investissement et le volume sont plus importants pour les TU 
•Tous les types de tests sont complémentaires
Tests unitaires = limiter les coûts des anomalies 
€ 
€€€
Rappels sur les tests unitaires 
•Simples ("unitaires") 
•Lisibles 
•Rapides à écrire 
•Rapides à exécuter 
•Indépendants (des autres) 
•Répétables 
•Automatisables 
•Pas forcément partout … (pensez ROI) 
•Structurés 
–Préparations 
–Test (1 action) 
–Vérifications 
•Bon outillage 
•…
TDD 
= 
"Test Driven Development"
TDD pourquoi ? 
•Vérifier la compréhension du besoin fonctionnel et être sûr d'y répondre  Traduction des specs en tests 
•Détecter au plus tôt des problèmes dans les specs : oublis, impressions, contradictions, … 
•Générer du code testable 
•Systématiser la présence de tests unitaires, améliorer la couverture du code par les tests 
•Les tests sont plus "faciles" à écrire avant le code de production que après
Oui, mais … 
•Les débuts sont difficiles 
•L'apprentissage est long 
•C'est un investissement, qui doit être collectif (équipe) 
•Plus facile avec formation & accompagnement 
•Mais ROI important !
Le cycle du TDD 
Ecriture du test 
Ecriture du code de production 
Refactoring 
Ecriture d'un test et un seul et s’assurer qu’il ne passe pas pour de bonnes raisons 
Ecriture du code minimum pour faire passer ce test 
Remaniement et mise au propre du code, de l'architecture, de la présentation, factorisation, commentaires, …
Démo time !
Régles du coding-dojo "kata" 
•Démonstration : 
–D' 1 solution 
–À 1 défi 
–Par 1 personne 
•Objectif : montrer 
•Tout le monde doit suivre et comprendre  on peut interrompre
Sujet 
•Issu de l'atelier "Elephant Carpaccio exercise" 
•Calcul de prix avec remises : (PU ; Quantité)  prix 
•Remises : 
Valeur commande 
Réduction 
1 000 € 
3 % 
5 000 € 
5 % 
7 000 € 
7 % 
10 000 € 
10 %
Je réfléchis à mes tests … 
// doit_appliquer_un_prix_sans_remise 
// 3 (1.25) --> 3,75 
// doit_appliquer_une_remise_de_3_pourcents_si_plus_de_1000 
// 100 (12.10) --> 1173.70 
// doit_appliquer_une_remise_de_5_pourcents_si_plus_de_5000 
// 500 (12.10) --> 5747.50 
// doit_appliquer_une_remise_de_7_pourcents_si_plus_de_7000 
// 700 (12.10) --> 7877.10
C'est parti !
TDD : pas seulement du "test first" 
•Plus qu'une pratique  une discipline 
–Pas d'ajout de code sans test rouge 
•Plus qu'une méthode de tests  une activité de conception 
•Etat d'esprit 
•Une approche addictive 
Partie intégrante de la pratique 
de développement logiciel !
Mocks
Les Mocks 
Classe à tester 1 rôle ! 
Collaborateur 
Collaborateur 
Collaborateur 
Collaborateur
Les mocks : sujet de démo 
Jeu de tennis : GUI & Controller !
Les Mocks 
Controler 
Game 
GUI 
ScoreBuilder 
buttonPlayer1Pressed() 
player1Scored() 
computeScore(game)  "15-0" 
displayScore("15-0")
Le 1er test avec les mocks 
•Etant donné (Given) : 
–Un "Controler" et ses collaborateurs 
•Lorsque (When) : 
–J'appelle la méthode "button1HasBeenClicked" 
•Alors (Then) : 
–La méthode "displayScore("?")" est appelée
Les mocks : démo !
Conclusion ? 
•Tests unitaires (et ingénierie agile) : indispensables à l'agilité 
•TDD : "le meilleur moyen d'écrire du code testable" (et testé), et générer une bonne architecture 
•Apprentissage long et difficile :  Formation et accompagnement  S'entrainer, s'entraider  ROI garanti !
Merci ! Questions ? 
xnopre@gmail.com

Contenu connexe

Tendances

Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)Jean-Pierre Lambert
 
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
 
C'est quoi le Software Craftsmanship ?
C'est quoi le Software Craftsmanship ?C'est quoi le Software Craftsmanship ?
C'est quoi le Software Craftsmanship ?Jean-Pierre Lambert
 
Sortir de l’ère des héros - HumanTalks Paris Mars 2017
Sortir de l’ère des héros - HumanTalks Paris Mars 2017Sortir de l’ère des héros - HumanTalks Paris Mars 2017
Sortir de l’ère des héros - HumanTalks Paris Mars 2017Jean-Pierre Lambert
 
[Agile Testing Day] Techniques avancées de tests
[Agile Testing Day] Techniques avancées de tests[Agile Testing Day] Techniques avancées de tests
[Agile Testing Day] Techniques avancées de testsCellenza
 
Pratiques de développement pour équipes Agile
Pratiques de développement pour équipes AgilePratiques de développement pour équipes Agile
Pratiques de développement pour équipes AgileAgile Tour 2009 Québec
 
[Agile Testing Day] Behavior Driven Development (BDD)
[Agile Testing Day] Behavior Driven Development (BDD)[Agile Testing Day] Behavior Driven Development (BDD)
[Agile Testing Day] Behavior Driven Development (BDD)Cellenza
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyonClement Bouillier
 
Sonar 2.0 au JUG Genève
Sonar 2.0 au JUG GenèveSonar 2.0 au JUG Genève
Sonar 2.0 au JUG GenèveFreddy Mallet
 
[Agile Testing Day] Introduction
[Agile Testing Day] Introduction[Agile Testing Day] Introduction
[Agile Testing Day] IntroductionCellenza
 
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
 
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
 
TDD for DevOps with Chef
TDD for DevOps with ChefTDD for DevOps with Chef
TDD for DevOps with ChefOlivier BAZOUD
 
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
 
La revue de code : facile !
La revue de code : facile !La revue de code : facile !
La revue de code : facile !Lucian Precup
 
La revue de code : agile, lean, indispensable !
La revue de code : agile, lean, indispensable !La revue de code : agile, lean, indispensable !
La revue de code : agile, lean, indispensable !Lucian Precup
 
[Agile Testing Day] Test & Métiers
[Agile Testing Day] Test & Métiers[Agile Testing Day] Test & Métiers
[Agile Testing Day] Test & MétiersCellenza
 
Soirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec SonarSoirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec SonarElsassJUG
 

Tendances (20)

Coding Dojo
Coding DojoCoding Dojo
Coding Dojo
 
Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)
 
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
 
C'est quoi le Software Craftsmanship ?
C'est quoi le Software Craftsmanship ?C'est quoi le Software Craftsmanship ?
C'est quoi le Software Craftsmanship ?
 
Sortir de l’ère des héros - HumanTalks Paris Mars 2017
Sortir de l’ère des héros - HumanTalks Paris Mars 2017Sortir de l’ère des héros - HumanTalks Paris Mars 2017
Sortir de l’ère des héros - HumanTalks Paris Mars 2017
 
[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
 
Normandy JUG integration Continue
Normandy JUG integration ContinueNormandy JUG integration Continue
Normandy JUG integration Continue
 
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] Behavior Driven Development (BDD)
[Agile Testing Day] Behavior Driven Development (BDD)[Agile Testing Day] Behavior Driven Development (BDD)
[Agile Testing Day] Behavior Driven Development (BDD)
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyon
 
Sonar 2.0 au JUG Genève
Sonar 2.0 au JUG GenèveSonar 2.0 au JUG Genève
Sonar 2.0 au JUG Genève
 
[Agile Testing Day] Introduction
[Agile Testing Day] Introduction[Agile Testing Day] Introduction
[Agile Testing Day] Introduction
 
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
 
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)
 
TDD for DevOps with Chef
TDD for DevOps with ChefTDD for DevOps with Chef
TDD for DevOps with Chef
 
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
 
La revue de code : facile !
La revue de code : facile !La revue de code : facile !
La revue de code : facile !
 
La revue de code : agile, lean, indispensable !
La revue de code : agile, lean, indispensable !La revue de code : agile, lean, indispensable !
La revue de code : agile, lean, indispensable !
 
[Agile Testing Day] Test & Métiers
[Agile Testing Day] Test & Métiers[Agile Testing Day] Test & Métiers
[Agile Testing Day] Test & Métiers
 
Soirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec SonarSoirée Qualité Logicielle avec Sonar
Soirée Qualité Logicielle avec Sonar
 

En vedette

Agile Tour Nantes 2014 - 10 ans d'agile, c'est chouette ! La rétro des points...
Agile Tour Nantes 2014 - 10 ans d'agile, c'est chouette ! La rétro des points...Agile Tour Nantes 2014 - 10 ans d'agile, c'est chouette ! La rétro des points...
Agile Tour Nantes 2014 - 10 ans d'agile, c'est chouette ! La rétro des points...Association Agile Nantes
 
session Agile Tour Bordeaux 2013 - "Au secours, ma bibliothèque iTu*** me par...
session Agile Tour Bordeaux 2013 - "Au secours, ma bibliothèque iTu*** me par...session Agile Tour Bordeaux 2013 - "Au secours, ma bibliothèque iTu*** me par...
session Agile Tour Bordeaux 2013 - "Au secours, ma bibliothèque iTu*** me par...Cédric Bodin
 
Agile Test Driven Development
Agile Test Driven DevelopmentAgile Test Driven Development
Agile Test Driven DevelopmentViraf Karai
 
Test Driven Development (TDD)
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)David Ehringer
 
De la culture projet à la culture produit V2
De la culture projet à la culture produit V2De la culture projet à la culture produit V2
De la culture projet à la culture produit V2Goood!
 
session Agile Tour Nantes 2013 - "Au secours, ma bibliothèque iTu*** me parle...
session Agile Tour Nantes 2013 - "Au secours, ma bibliothèque iTu*** me parle...session Agile Tour Nantes 2013 - "Au secours, ma bibliothèque iTu*** me parle...
session Agile Tour Nantes 2013 - "Au secours, ma bibliothèque iTu*** me parle...Cédric Bodin
 
Standard fci briquet griffon vendéen
Standard fci briquet griffon vendéenStandard fci briquet griffon vendéen
Standard fci briquet griffon vendéenelyaneforet
 
Expocision our body
Expocision our bodyExpocision our body
Expocision our bodysofirenia
 
Je peux m’exprimer aussi! 1st idea Belgacom 2011
Je peux m’exprimer aussi!  1st idea Belgacom 2011Je peux m’exprimer aussi!  1st idea Belgacom 2011
Je peux m’exprimer aussi! 1st idea Belgacom 2011Face All
 
Reglement juges definitif
Reglement juges definitifReglement juges definitif
Reglement juges definitifelyaneforet
 
5 prints+applications
5 prints+applications5 prints+applications
5 prints+applicationsvikas_arora
 
Conceptos y ejercicios
Conceptos y ejerciciosConceptos y ejercicios
Conceptos y ejercicioskaren garcia
 
Biographies
BiographiesBiographies
BiographiesEPSILIM
 
Mandala2010 4 Básico
Mandala2010 4 BásicoMandala2010 4 Básico
Mandala2010 4 Básiconvigorenar
 
Nouvelle Lettre - Dictionnaire du libéralisme - page 8
Nouvelle Lettre - Dictionnaire du libéralisme - page 8Nouvelle Lettre - Dictionnaire du libéralisme - page 8
Nouvelle Lettre - Dictionnaire du libéralisme - page 8Mathieu Laine
 

En vedette (20)

Agile Tour Nantes 2014 - 10 ans d'agile, c'est chouette ! La rétro des points...
Agile Tour Nantes 2014 - 10 ans d'agile, c'est chouette ! La rétro des points...Agile Tour Nantes 2014 - 10 ans d'agile, c'est chouette ! La rétro des points...
Agile Tour Nantes 2014 - 10 ans d'agile, c'est chouette ! La rétro des points...
 
Agile Tour Nantes 2014 - Sois autonome !
Agile Tour Nantes 2014 - Sois autonome !Agile Tour Nantes 2014 - Sois autonome !
Agile Tour Nantes 2014 - Sois autonome !
 
session Agile Tour Bordeaux 2013 - "Au secours, ma bibliothèque iTu*** me par...
session Agile Tour Bordeaux 2013 - "Au secours, ma bibliothèque iTu*** me par...session Agile Tour Bordeaux 2013 - "Au secours, ma bibliothèque iTu*** me par...
session Agile Tour Bordeaux 2013 - "Au secours, ma bibliothèque iTu*** me par...
 
Agile Test Driven Development
Agile Test Driven DevelopmentAgile Test Driven Development
Agile Test Driven Development
 
TDD - Agile
TDD - Agile TDD - Agile
TDD - Agile
 
Test Driven Development (TDD)
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)
 
De la culture projet à la culture produit V2
De la culture projet à la culture produit V2De la culture projet à la culture produit V2
De la culture projet à la culture produit V2
 
session Agile Tour Nantes 2013 - "Au secours, ma bibliothèque iTu*** me parle...
session Agile Tour Nantes 2013 - "Au secours, ma bibliothèque iTu*** me parle...session Agile Tour Nantes 2013 - "Au secours, ma bibliothèque iTu*** me parle...
session Agile Tour Nantes 2013 - "Au secours, ma bibliothèque iTu*** me parle...
 
Standard fci briquet griffon vendéen
Standard fci briquet griffon vendéenStandard fci briquet griffon vendéen
Standard fci briquet griffon vendéen
 
Expocision our body
Expocision our bodyExpocision our body
Expocision our body
 
Je peux m’exprimer aussi! 1st idea Belgacom 2011
Je peux m’exprimer aussi!  1st idea Belgacom 2011Je peux m’exprimer aussi!  1st idea Belgacom 2011
Je peux m’exprimer aussi! 1st idea Belgacom 2011
 
Reglement juges definitif
Reglement juges definitifReglement juges definitif
Reglement juges definitif
 
5 prints+applications
5 prints+applications5 prints+applications
5 prints+applications
 
Observación
ObservaciónObservación
Observación
 
Andres
AndresAndres
Andres
 
Conceptos y ejercicios
Conceptos y ejerciciosConceptos y ejercicios
Conceptos y ejercicios
 
Biographies
BiographiesBiographies
Biographies
 
Libro 2
Libro 2Libro 2
Libro 2
 
Mandala2010 4 Básico
Mandala2010 4 BásicoMandala2010 4 Básico
Mandala2010 4 Básico
 
Nouvelle Lettre - Dictionnaire du libéralisme - page 8
Nouvelle Lettre - Dictionnaire du libéralisme - page 8Nouvelle Lettre - Dictionnaire du libéralisme - page 8
Nouvelle Lettre - Dictionnaire du libéralisme - page 8
 

Similaire à Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable

Agilité, Tests Et Industrialisation
Agilité, Tests Et IndustrialisationAgilité, Tests Et Industrialisation
Agilité, Tests Et IndustrialisationPHPPRO
 
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
 
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
 
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
 
Test driven development v0.2 20121221
Test driven development v0.2 20121221Test driven development v0.2 20121221
Test driven development v0.2 20121221Frédéric Delorme
 
Mockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilMockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilNormandy JUG
 
Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?CGI Québec Formation
 
Strategie de test à agile tour bordeaux
Strategie de test à agile tour bordeauxStrategie de test à agile tour bordeaux
Strategie de test à agile tour bordeauxNicolas Fédou
 
Cleancode / Tocea / Introduction
Cleancode / Tocea / IntroductionCleancode / Tocea / Introduction
Cleancode / Tocea / IntroductionSylvain Leroy
 
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...DC CONSULTANTS
 
Webinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDD
Webinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDDWebinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDD
Webinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDDDC CONSULTANTS
 
Développement en méthode agile
Développement en méthode agileDéveloppement en méthode agile
Développement en méthode agilelaurent bristiel
 
Vincent Biret Societic devops Sherbrooke
Vincent Biret Societic devops SherbrookeVincent Biret Societic devops Sherbrooke
Vincent Biret Societic devops SherbrookeVincent Biret
 
NDepend 5 en action par son créateur
NDepend 5 en action par son créateurNDepend 5 en action par son créateur
NDepend 5 en action par son créateurMicrosoft
 
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
 
4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciel4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciellauraty3204
 

Similaire à Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable (20)

Agilité, Tests Et Industrialisation
Agilité, Tests Et IndustrialisationAgilité, Tests Et Industrialisation
Agilité, Tests Et Industrialisation
 
Université du soir - TDD
Université du soir - TDDUniversité du soir - TDD
Université du soir - TDD
 
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...
 
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
 
Le pilotage par les tests
Le pilotage par les testsLe pilotage par les tests
Le pilotage par les tests
 
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
 
Test driven development v0.2 20121221
Test driven development v0.2 20121221Test driven development v0.2 20121221
Test driven development v0.2 20121221
 
Tour d'horizon des tests
Tour d'horizon des testsTour d'horizon des tests
Tour d'horizon des tests
 
Mockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilMockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice Duteil
 
Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?
 
Tests Logiciel
Tests LogicielTests Logiciel
Tests Logiciel
 
Strategie de test à agile tour bordeaux
Strategie de test à agile tour bordeauxStrategie de test à agile tour bordeaux
Strategie de test à agile tour bordeaux
 
Cleancode / Tocea / Introduction
Cleancode / Tocea / IntroductionCleancode / Tocea / Introduction
Cleancode / Tocea / Introduction
 
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
 
Webinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDD
Webinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDDWebinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDD
Webinar - Mieux s'entendre entre Dev / PO / Testeur avec TDD et BDD
 
Développement en méthode agile
Développement en méthode agileDéveloppement en méthode agile
Développement en méthode agile
 
Vincent Biret Societic devops Sherbrooke
Vincent Biret Societic devops SherbrookeVincent Biret Societic devops Sherbrooke
Vincent Biret Societic devops Sherbrooke
 
NDepend 5 en action par son créateur
NDepend 5 en action par son créateurNDepend 5 en action par son créateur
NDepend 5 en action par son créateur
 
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
 
4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciel4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciel
 

Plus de Association Agile Nantes

Agile Tour Nantes 2014 - Comment impliquer vos clients dans leurs projets ?
Agile Tour Nantes 2014 - Comment impliquer vos clients dans leurs projets ?Agile Tour Nantes 2014 - Comment impliquer vos clients dans leurs projets ?
Agile Tour Nantes 2014 - Comment impliquer vos clients dans leurs projets ?Association Agile Nantes
 
Le projet Aristote / Steeve Evers & Marc Dugué
Le projet Aristote / Steeve Evers & Marc DuguéLe projet Aristote / Steeve Evers & Marc Dugué
Le projet Aristote / Steeve Evers & Marc DuguéAssociation Agile Nantes
 
Initiation à l'agilité - Agile Tour 2017
Initiation à l'agilité - Agile Tour 2017Initiation à l'agilité - Agile Tour 2017
Initiation à l'agilité - Agile Tour 2017Association Agile Nantes
 
Et si on maîtrisait vraiment notre produit
Et si on maîtrisait vraiment notre produitEt si on maîtrisait vraiment notre produit
Et si on maîtrisait vraiment notre produitAssociation Agile Nantes
 
Agile Tour Nantes 2013 - L'EPOPEE DU CHEVALIER AGILE FILS DU ROI PRAGMATIQUE ...
Agile Tour Nantes 2013 - L'EPOPEE DU CHEVALIER AGILE FILS DU ROI PRAGMATIQUE ...Agile Tour Nantes 2013 - L'EPOPEE DU CHEVALIER AGILE FILS DU ROI PRAGMATIQUE ...
Agile Tour Nantes 2013 - L'EPOPEE DU CHEVALIER AGILE FILS DU ROI PRAGMATIQUE ...Association Agile Nantes
 
Agile Tour Nantes 2013 - Urbanisation des services : Pour changer le monde du...
Agile Tour Nantes 2013 - Urbanisation des services : Pour changer le monde du...Agile Tour Nantes 2013 - Urbanisation des services : Pour changer le monde du...
Agile Tour Nantes 2013 - Urbanisation des services : Pour changer le monde du...Association Agile Nantes
 
Agile Tour Nantes 2013 - Scrum ou kanban - Alexandre BOUTIN
Agile Tour Nantes 2013 - Scrum ou kanban - Alexandre BOUTINAgile Tour Nantes 2013 - Scrum ou kanban - Alexandre BOUTIN
Agile Tour Nantes 2013 - Scrum ou kanban - Alexandre BOUTINAssociation Agile Nantes
 
Agile Tour Nantes 2013 - Introduction aux méthodes agiles - Grégoire ROBIN - ...
Agile Tour Nantes 2013 - Introduction aux méthodes agiles - Grégoire ROBIN - ...Agile Tour Nantes 2013 - Introduction aux méthodes agiles - Grégoire ROBIN - ...
Agile Tour Nantes 2013 - Introduction aux méthodes agiles - Grégoire ROBIN - ...Association Agile Nantes
 
Agt nantes 2013 aurélien morvant - agiletour.comment.etre.agile.et.le.rester
Agt nantes 2013   aurélien morvant - agiletour.comment.etre.agile.et.le.resterAgt nantes 2013   aurélien morvant - agiletour.comment.etre.agile.et.le.rester
Agt nantes 2013 aurélien morvant - agiletour.comment.etre.agile.et.le.resterAssociation Agile Nantes
 
Agt nantes 2013 rémy génin - l'agilité peut changer le monde
Agt nantes 2013   rémy génin - l'agilité peut changer le mondeAgt nantes 2013   rémy génin - l'agilité peut changer le monde
Agt nantes 2013 rémy génin - l'agilité peut changer le mondeAssociation Agile Nantes
 
Patrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnellePatrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnelleAssociation Agile Nantes
 
Coching julien Sylvie Le Bail / Christophe Morin
Coching julien Sylvie Le Bail / Christophe MorinCoching julien Sylvie Le Bail / Christophe Morin
Coching julien Sylvie Le Bail / Christophe MorinAssociation Agile Nantes
 
Lightning Talk Scrum mutations Fabrice Aimetti
Lightning Talk Scrum mutations Fabrice AimettiLightning Talk Scrum mutations Fabrice Aimetti
Lightning Talk Scrum mutations Fabrice AimettiAssociation Agile Nantes
 

Plus de Association Agile Nantes (20)

PI Planning-Vos échanges!.pdf
PI Planning-Vos échanges!.pdfPI Planning-Vos échanges!.pdf
PI Planning-Vos échanges!.pdf
 
Agile Tour Nantes 2014 - Comment impliquer vos clients dans leurs projets ?
Agile Tour Nantes 2014 - Comment impliquer vos clients dans leurs projets ?Agile Tour Nantes 2014 - Comment impliquer vos clients dans leurs projets ?
Agile Tour Nantes 2014 - Comment impliquer vos clients dans leurs projets ?
 
Le projet Aristote / Steeve Evers & Marc Dugué
Le projet Aristote / Steeve Evers & Marc DuguéLe projet Aristote / Steeve Evers & Marc Dugué
Le projet Aristote / Steeve Evers & Marc Dugué
 
Tous en scène - Arnaud Garnier
Tous en scène - Arnaud GarnierTous en scène - Arnaud Garnier
Tous en scène - Arnaud Garnier
 
Initiation à l'agilité - Agile Tour 2017
Initiation à l'agilité - Agile Tour 2017Initiation à l'agilité - Agile Tour 2017
Initiation à l'agilité - Agile Tour 2017
 
Agile nantes leanstartup_20160323
Agile nantes leanstartup_20160323Agile nantes leanstartup_20160323
Agile nantes leanstartup_20160323
 
Et si on maîtrisait vraiment notre produit
Et si on maîtrisait vraiment notre produitEt si on maîtrisait vraiment notre produit
Et si on maîtrisait vraiment notre produit
 
Agile Tour Nantes 2013 - L'EPOPEE DU CHEVALIER AGILE FILS DU ROI PRAGMATIQUE ...
Agile Tour Nantes 2013 - L'EPOPEE DU CHEVALIER AGILE FILS DU ROI PRAGMATIQUE ...Agile Tour Nantes 2013 - L'EPOPEE DU CHEVALIER AGILE FILS DU ROI PRAGMATIQUE ...
Agile Tour Nantes 2013 - L'EPOPEE DU CHEVALIER AGILE FILS DU ROI PRAGMATIQUE ...
 
Agile Tour Nantes 2013 - Urbanisation des services : Pour changer le monde du...
Agile Tour Nantes 2013 - Urbanisation des services : Pour changer le monde du...Agile Tour Nantes 2013 - Urbanisation des services : Pour changer le monde du...
Agile Tour Nantes 2013 - Urbanisation des services : Pour changer le monde du...
 
Agile Tour Nantes 2013 - Scrum ou kanban - Alexandre BOUTIN
Agile Tour Nantes 2013 - Scrum ou kanban - Alexandre BOUTINAgile Tour Nantes 2013 - Scrum ou kanban - Alexandre BOUTIN
Agile Tour Nantes 2013 - Scrum ou kanban - Alexandre BOUTIN
 
Agile Tour Nantes 2013 - Introduction aux méthodes agiles - Grégoire ROBIN - ...
Agile Tour Nantes 2013 - Introduction aux méthodes agiles - Grégoire ROBIN - ...Agile Tour Nantes 2013 - Introduction aux méthodes agiles - Grégoire ROBIN - ...
Agile Tour Nantes 2013 - Introduction aux méthodes agiles - Grégoire ROBIN - ...
 
Agt nantes 2013 aurélien morvant - agiletour.comment.etre.agile.et.le.rester
Agt nantes 2013   aurélien morvant - agiletour.comment.etre.agile.et.le.resterAgt nantes 2013   aurélien morvant - agiletour.comment.etre.agile.et.le.rester
Agt nantes 2013 aurélien morvant - agiletour.comment.etre.agile.et.le.rester
 
Agt nantes 2013 rémy génin - l'agilité peut changer le monde
Agt nantes 2013   rémy génin - l'agilité peut changer le mondeAgt nantes 2013   rémy génin - l'agilité peut changer le monde
Agt nantes 2013 rémy génin - l'agilité peut changer le monde
 
Patrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnellePatrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnelle
 
Des mots, des maux ? Démo !
Des mots, des maux ? Démo !Des mots, des maux ? Démo !
Des mots, des maux ? Démo !
 
REX Scrum mature
REX Scrum matureREX Scrum mature
REX Scrum mature
 
L'agilité dans la mobilité
L'agilité dans la mobilitéL'agilité dans la mobilité
L'agilité dans la mobilité
 
Coching julien Sylvie Le Bail / Christophe Morin
Coching julien Sylvie Le Bail / Christophe MorinCoching julien Sylvie Le Bail / Christophe Morin
Coching julien Sylvie Le Bail / Christophe Morin
 
Lightning Talk Scrum mutations Fabrice Aimetti
Lightning Talk Scrum mutations Fabrice AimettiLightning Talk Scrum mutations Fabrice Aimetti
Lightning Talk Scrum mutations Fabrice Aimetti
 
Atelier Story Map
Atelier Story MapAtelier Story Map
Atelier Story Map
 

Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable

  • 1. TDD, le meilleur moyen d'écrire du code testable Xavier Nopre
  • 2. Puis-je avoir ce diaporama ? Un mail à xnopre@gmail.com : –Votre avis sur cette session –Vos questions
  • 3. Qui suis-je ? Artisan-programmeur Agiliste Indépendant Xavier Nopre •Développement d'applications "sur-mesure" pour des clients finaux •Interventions en entreprises : formation, accompagnement, développement freelance @xnopre xnopre.blogspot.com
  • 5. De quoi parlons-nous ? Tests unitaires = Du code qui teste du code
  • 6. Tests unitaires et agilité ? Agilité : • Développement itératif et incrémental • En permanence, adapter le code existant pour ajouter de nouvelles fonctionnalités = refactoring •Sans régression  Nécessité de filets de sécurité • Tests unitaires et autres
  • 7. Tests unitaires = la base des tests Test unitaires Tests intégration / acceptance Tests GUI Tests manuels Pyramide des tests – Mike Cohn •Les tests unitaires sont la "base" de tous les tests •L'investissement et le volume sont plus importants pour les TU •Tous les types de tests sont complémentaires
  • 8. Tests unitaires = limiter les coûts des anomalies € €€€
  • 9. Rappels sur les tests unitaires •Simples ("unitaires") •Lisibles •Rapides à écrire •Rapides à exécuter •Indépendants (des autres) •Répétables •Automatisables •Pas forcément partout … (pensez ROI) •Structurés –Préparations –Test (1 action) –Vérifications •Bon outillage •…
  • 10. TDD = "Test Driven Development"
  • 11. TDD pourquoi ? •Vérifier la compréhension du besoin fonctionnel et être sûr d'y répondre  Traduction des specs en tests •Détecter au plus tôt des problèmes dans les specs : oublis, impressions, contradictions, … •Générer du code testable •Systématiser la présence de tests unitaires, améliorer la couverture du code par les tests •Les tests sont plus "faciles" à écrire avant le code de production que après
  • 12. Oui, mais … •Les débuts sont difficiles •L'apprentissage est long •C'est un investissement, qui doit être collectif (équipe) •Plus facile avec formation & accompagnement •Mais ROI important !
  • 13. Le cycle du TDD Ecriture du test Ecriture du code de production Refactoring Ecriture d'un test et un seul et s’assurer qu’il ne passe pas pour de bonnes raisons Ecriture du code minimum pour faire passer ce test Remaniement et mise au propre du code, de l'architecture, de la présentation, factorisation, commentaires, …
  • 15. Régles du coding-dojo "kata" •Démonstration : –D' 1 solution –À 1 défi –Par 1 personne •Objectif : montrer •Tout le monde doit suivre et comprendre  on peut interrompre
  • 16. Sujet •Issu de l'atelier "Elephant Carpaccio exercise" •Calcul de prix avec remises : (PU ; Quantité)  prix •Remises : Valeur commande Réduction 1 000 € 3 % 5 000 € 5 % 7 000 € 7 % 10 000 € 10 %
  • 17. Je réfléchis à mes tests … // doit_appliquer_un_prix_sans_remise // 3 (1.25) --> 3,75 // doit_appliquer_une_remise_de_3_pourcents_si_plus_de_1000 // 100 (12.10) --> 1173.70 // doit_appliquer_une_remise_de_5_pourcents_si_plus_de_5000 // 500 (12.10) --> 5747.50 // doit_appliquer_une_remise_de_7_pourcents_si_plus_de_7000 // 700 (12.10) --> 7877.10
  • 19. TDD : pas seulement du "test first" •Plus qu'une pratique  une discipline –Pas d'ajout de code sans test rouge •Plus qu'une méthode de tests  une activité de conception •Etat d'esprit •Une approche addictive Partie intégrante de la pratique de développement logiciel !
  • 20. Mocks
  • 21. Les Mocks Classe à tester 1 rôle ! Collaborateur Collaborateur Collaborateur Collaborateur
  • 22. Les mocks : sujet de démo Jeu de tennis : GUI & Controller !
  • 23. Les Mocks Controler Game GUI ScoreBuilder buttonPlayer1Pressed() player1Scored() computeScore(game)  "15-0" displayScore("15-0")
  • 24. Le 1er test avec les mocks •Etant donné (Given) : –Un "Controler" et ses collaborateurs •Lorsque (When) : –J'appelle la méthode "button1HasBeenClicked" •Alors (Then) : –La méthode "displayScore("?")" est appelée
  • 25. Les mocks : démo !
  • 26. Conclusion ? •Tests unitaires (et ingénierie agile) : indispensables à l'agilité •TDD : "le meilleur moyen d'écrire du code testable" (et testé), et générer une bonne architecture •Apprentissage long et difficile :  Formation et accompagnement  S'entrainer, s'entraider  ROI garanti !
  • 27. Merci ! Questions ? xnopre@gmail.com