SlideShare una empresa de Scribd logo
1 de 15
TDD -TEST DRIVEN
DEVELOPMENT
Jean-BaptisteVIGNERON – 18/10/2016
Sommaire
• Questionnaire
• Les tests unitaires
• Le mouvement « Software Craftsmanship »
• TDD
• Démo
Questionnaire
•Nommez 3 pratiques (ou plus) de développement
qui marchent très bien selon vous
•Nommez 3 choses à éviter lorsque l’on
programme
Les tests unitaires
• En programmation informatique, le test unitaire (ouT.U.) est une procédure
permettant de vérifier le bon fonctionnement d'une partie précise d'un
logiciel ou d'une portion d'un programme.
• Chaque langage possède au moins un outil / framework de tests unitaires
(C#, Java, Ruby, PHP, JavaScript…)
• L'ensemble des tests unitaires doit être rejoué après une modification du
code afin de vérifier qu'il n'y a pas de régressions.
• Utilisation des mocks : ce sont des objets simulés qui reproduisent le
comportement d'objets réels de manière contrôlée (ex: base de données,
webservices, API, etc.)
Le mouvement « Software Craftsmanship »
• Complète le manifeste agile
• Proposé en 2009
• Plusieurs pratiques
• TDD
• BDD
• Legacy Refactoring
• Revues de code
• Clean code
• Pair-programming
• Principes KISS et SOLID
Commauté « Software Craftsmanship » à Lille
• Communauté créée en 2015 animée par Julien JAKUBOWSKI
• http://www.meetup.com/fr-FR/Software-Craftsmanship-Lille/
• Gratuit
• Meetup tous les 2 mois environ
• Réunit les différents acteurs lillois intéressés ou pratiquant le « software craftsmanship »
TDD
• C’est une technique qui consiste à couvrir notre programme de tests unitaires
• C’est une technique de développement
• Les tests aident à spécifier du code, et non pas à le valider
• 3 étapes pour développer une fonctionnalité ou corriger un bug
• Je pose un test unitaire et je le fais passer au rouge
• J’écris le code nécessaire pour faire passer mon test au vert
• Je nettoie mon code et le refactorise
• La couverture de code devient alors un bénéfice, et non plus un objectif
• Le vrai indicateur à regarder est : la NON-couverture de code
TDD
TDD
• TDD renverse le modèle classique
• Besoins ‐> Spécifications ‐> Codage/Tests Unitaires ‐>Tests d’intégration ‐> Maintenance
• Scénarios Utilisateurs ‐>Test/Code/Refactor ‐>Tests d’Intégration
• TDD remplace une approche « industrielle »…
• Concevoir, puis produire, puis valider, puis analyser, puis corriger
• Rationnaliser la production de code : le mieux est l’ennemi du bien
• …par une approche « artisanale »
• Le code est un matériau de production, on cherche l’excellence dans le geste
• Tester et maintenir le code au plus près de son écriture
• Principes KISS et SOLID (Clean code)
TDD – quelques principes de Clean code
• KISS : Keep It Simple Stupid
• SOLID
• Single Responsibility Principe : une classe doit avoir une seule responsabilité
• Open/Closed : une classe doit être ouvert à l’extension mais fermée à la modification
• Liskov Substitution : utilisez le type le plus « haut » possible (classes abstraites, interfaces…)
• Interface segregation : préférez utiliser plusieurs interfaces spécifiques pour chaque client plutôt
qu’une interface générale
• Dependency Inversion : injection de dépendances. Il faut dépendre des abstractions et non pas des
implémentations
• DRY : Don’t Repeat Yourself
• YAGNI :You ain’t gonna need it (Vous n’en aurez pas besoin)
TDD
• Un test contient trois parties
• Agencement (Arrange): créer un ou plusieurs objets
• Action (Act): appeler une fonction
• Assertion (Assert): comparer le résultat de l’appel avec le résultat
attendu
• Essayez de commencer par l’assertion
TDD
• Commencez toujours par un test automatisé qui échoue
• N’ajoutez jamais de tests sur la barre rouge
• Eliminez toute duplication
DEMO

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Méthode d'Agile: Scrum
Méthode d'Agile: ScrumMéthode d'Agile: Scrum
Méthode d'Agile: Scrum
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Systèmes d'Exploitation - chp2-gestion des processus
Systèmes d'Exploitation - chp2-gestion des processusSystèmes d'Exploitation - chp2-gestion des processus
Systèmes d'Exploitation - chp2-gestion des processus
 
Méthodes agiles
Méthodes agilesMéthodes agiles
Méthodes agiles
 
Les méthodes Agiles - Introduction
Les méthodes Agiles - IntroductionLes méthodes Agiles - Introduction
Les méthodes Agiles - Introduction
 
Methodes agiles
Methodes agilesMethodes agiles
Methodes agiles
 
An Introduction to Test Driven Development
An Introduction to Test Driven Development An Introduction to Test Driven Development
An Introduction to Test Driven Development
 
kubernetes, pourquoi et comment
kubernetes, pourquoi et commentkubernetes, pourquoi et comment
kubernetes, pourquoi et comment
 
#MSDEVMTL Introduction à #SonarQube
#MSDEVMTL Introduction à #SonarQube#MSDEVMTL Introduction à #SonarQube
#MSDEVMTL Introduction à #SonarQube
 
Systèmes d'Exploitation - chp3-gestion mémoire
Systèmes d'Exploitation - chp3-gestion mémoireSystèmes d'Exploitation - chp3-gestion mémoire
Systèmes d'Exploitation - chp3-gestion mémoire
 
Test logiciel
Test logicielTest logiciel
Test logiciel
 
Design Pattern introduction
Design Pattern introductionDesign Pattern introduction
Design Pattern introduction
 
Tests Logiciel
Tests LogicielTests Logiciel
Tests Logiciel
 
Introduction à Scrum
Introduction à ScrumIntroduction à Scrum
Introduction à Scrum
 
Après l’#agilité, le #DevOps, la nouvelle arme de la DSI
Après l’#agilité, le #DevOps, la nouvelle arme de la DSIAprès l’#agilité, le #DevOps, la nouvelle arme de la DSI
Après l’#agilité, le #DevOps, la nouvelle arme de la DSI
 
O que é DevOps afinal?
O que é DevOps afinal?O que é DevOps afinal?
O que é DevOps afinal?
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOps
 
Apresentacao dev ops
Apresentacao dev opsApresentacao dev ops
Apresentacao dev ops
 
DevOps: una breve introducción
DevOps: una breve introducciónDevOps: una breve introducción
DevOps: una breve introducción
 
Chapitre 5 classes abstraites et interfaces
Chapitre 5  classes abstraites et interfacesChapitre 5  classes abstraites et interfaces
Chapitre 5 classes abstraites et interfaces
 

Similar a 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...
Cyrille Grandval
 
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
 
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
Clement Bouillier
 

Similar a Université du soir - TDD (20)

TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoring
 
Flex Unit Testing
Flex Unit TestingFlex Unit Testing
Flex Unit Testing
 
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
 
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
 
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
 
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...
 
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
 
Test driven development v0.2 20121221
Test driven development v0.2 20121221Test driven development v0.2 20121221
Test driven development v0.2 20121221
 
[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Test Driven Development (TDD)[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Test Driven Development (TDD)
 
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
 
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)
 
Strategie de test à agile tour bordeaux
Strategie de test à agile tour bordeauxStrategie de test à agile tour bordeaux
Strategie de test à agile tour bordeaux
 
Mockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilMockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice Duteil
 
20110519 cara tests_agiles_grenoble_all
20110519 cara tests_agiles_grenoble_all20110519 cara tests_agiles_grenoble_all
20110519 cara tests_agiles_grenoble_all
 
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
 
Valider par des tests - Blend
Valider par des tests - BlendValider par des tests - Blend
Valider par des tests - Blend
 
Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?
 
Une architecture agile et testable
Une architecture agile et testableUne architecture agile et testable
Une architecture agile et testable
 
[Agile Tour Paris 2014] Comment rendre testable du code qui ne l'est pas ?
[Agile Tour Paris 2014] Comment rendre testable du code qui ne l'est pas ?[Agile Tour Paris 2014] Comment rendre testable du code qui ne l'est pas ?
[Agile Tour Paris 2014] Comment rendre testable du code qui ne l'est pas ?
 
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
 

Más de Jean-Baptiste Vigneron

Más de Jean-Baptiste Vigneron (10)

Introduction à Angular
Introduction à AngularIntroduction à Angular
Introduction à Angular
 
Une introduction à Javascript et ECMAScript 6
Une introduction à Javascript et ECMAScript 6Une introduction à Javascript et ECMAScript 6
Une introduction à Javascript et ECMAScript 6
 
Agile Tour 2016 @ Lille
Agile Tour 2016 @ LilleAgile Tour 2016 @ Lille
Agile Tour 2016 @ Lille
 
Compte-rendu Agile Tour 2014 à Lille
Compte-rendu Agile Tour 2014 à LilleCompte-rendu Agile Tour 2014 à Lille
Compte-rendu Agile Tour 2014 à Lille
 
Initiation à ASP.NET 4.0
Initiation à ASP.NET 4.0Initiation à ASP.NET 4.0
Initiation à ASP.NET 4.0
 
Atelier initiation Windows Phone 7
Atelier initiation Windows Phone 7Atelier initiation Windows Phone 7
Atelier initiation Windows Phone 7
 
Pattern MVVM avec MVVM Light Toolkit
Pattern MVVM avec MVVM Light ToolkitPattern MVVM avec MVVM Light Toolkit
Pattern MVVM avec MVVM Light Toolkit
 
Langage C#
Langage C#Langage C#
Langage C#
 
.NET Framework
.NET Framework.NET Framework
.NET Framework
 
Versioning avec Git
Versioning avec GitVersioning avec Git
Versioning avec Git
 

Último

conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de plancher
mansouriahlam
 

Último (7)

Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
 
Algo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigésAlgo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigés
 
conception d'un batiment r+4 comparative de defferente ariante de plancher
conception d'un  batiment  r+4 comparative de defferente ariante de plancherconception d'un  batiment  r+4 comparative de defferente ariante de plancher
conception d'un batiment r+4 comparative de defferente ariante de plancher
 
optimisation logistique MLT_231102_155827.pdf
optimisation logistique  MLT_231102_155827.pdfoptimisation logistique  MLT_231102_155827.pdf
optimisation logistique MLT_231102_155827.pdf
 
firefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdffirefly algoriyhm sac a dos step by step .pdf
firefly algoriyhm sac a dos step by step .pdf
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestion
 
JTC 2024 Bâtiment et Photovoltaïque.pdf
JTC 2024  Bâtiment et Photovoltaïque.pdfJTC 2024  Bâtiment et Photovoltaïque.pdf
JTC 2024 Bâtiment et Photovoltaïque.pdf
 

Université du soir - TDD

  • 2. Sommaire • Questionnaire • Les tests unitaires • Le mouvement « Software Craftsmanship » • TDD • Démo
  • 3. Questionnaire •Nommez 3 pratiques (ou plus) de développement qui marchent très bien selon vous •Nommez 3 choses à éviter lorsque l’on programme
  • 4. Les tests unitaires • En programmation informatique, le test unitaire (ouT.U.) est une procédure permettant de vérifier le bon fonctionnement d'une partie précise d'un logiciel ou d'une portion d'un programme. • Chaque langage possède au moins un outil / framework de tests unitaires (C#, Java, Ruby, PHP, JavaScript…) • L'ensemble des tests unitaires doit être rejoué après une modification du code afin de vérifier qu'il n'y a pas de régressions. • Utilisation des mocks : ce sont des objets simulés qui reproduisent le comportement d'objets réels de manière contrôlée (ex: base de données, webservices, API, etc.)
  • 5.
  • 6.
  • 7. Le mouvement « Software Craftsmanship » • Complète le manifeste agile • Proposé en 2009 • Plusieurs pratiques • TDD • BDD • Legacy Refactoring • Revues de code • Clean code • Pair-programming • Principes KISS et SOLID
  • 8. Commauté « Software Craftsmanship » à Lille • Communauté créée en 2015 animée par Julien JAKUBOWSKI • http://www.meetup.com/fr-FR/Software-Craftsmanship-Lille/ • Gratuit • Meetup tous les 2 mois environ • Réunit les différents acteurs lillois intéressés ou pratiquant le « software craftsmanship »
  • 9. TDD • C’est une technique qui consiste à couvrir notre programme de tests unitaires • C’est une technique de développement • Les tests aident à spécifier du code, et non pas à le valider • 3 étapes pour développer une fonctionnalité ou corriger un bug • Je pose un test unitaire et je le fais passer au rouge • J’écris le code nécessaire pour faire passer mon test au vert • Je nettoie mon code et le refactorise • La couverture de code devient alors un bénéfice, et non plus un objectif • Le vrai indicateur à regarder est : la NON-couverture de code
  • 10. TDD
  • 11. TDD • TDD renverse le modèle classique • Besoins ‐> Spécifications ‐> Codage/Tests Unitaires ‐>Tests d’intégration ‐> Maintenance • Scénarios Utilisateurs ‐>Test/Code/Refactor ‐>Tests d’Intégration • TDD remplace une approche « industrielle »… • Concevoir, puis produire, puis valider, puis analyser, puis corriger • Rationnaliser la production de code : le mieux est l’ennemi du bien • …par une approche « artisanale » • Le code est un matériau de production, on cherche l’excellence dans le geste • Tester et maintenir le code au plus près de son écriture • Principes KISS et SOLID (Clean code)
  • 12. TDD – quelques principes de Clean code • KISS : Keep It Simple Stupid • SOLID • Single Responsibility Principe : une classe doit avoir une seule responsabilité • Open/Closed : une classe doit être ouvert à l’extension mais fermée à la modification • Liskov Substitution : utilisez le type le plus « haut » possible (classes abstraites, interfaces…) • Interface segregation : préférez utiliser plusieurs interfaces spécifiques pour chaque client plutôt qu’une interface générale • Dependency Inversion : injection de dépendances. Il faut dépendre des abstractions et non pas des implémentations • DRY : Don’t Repeat Yourself • YAGNI :You ain’t gonna need it (Vous n’en aurez pas besoin)
  • 13. TDD • Un test contient trois parties • Agencement (Arrange): créer un ou plusieurs objets • Action (Act): appeler une fonction • Assertion (Assert): comparer le résultat de l’appel avec le résultat attendu • Essayez de commencer par l’assertion
  • 14. TDD • Commencez toujours par un test automatisé qui échoue • N’ajoutez jamais de tests sur la barre rouge • Eliminez toute duplication
  • 15. DEMO