SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
Antoine Rey
 
Présentation de Robot framework
Présentation de Robot frameworkPrésentation de Robot framework
Présentation de Robot framework
gilleslenfant
 

Tendances (20)

Test unitaire
Test unitaireTest unitaire
Test unitaire
 
softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...
 
Gitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement ContinueGitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement Continue
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
 
BDD with Cucumber
BDD with CucumberBDD with Cucumber
BDD with Cucumber
 
Support cours angular
Support cours angularSupport cours angular
Support cours angular
 
Présentation du DevOps
Présentation du DevOpsPrésentation du DevOps
Présentation du DevOps
 
Technologies sur angular.pptx
Technologies sur angular.pptxTechnologies sur angular.pptx
Technologies sur angular.pptx
 
Introduction à ASP.NET
Introduction à ASP.NETIntroduction à ASP.NET
Introduction à ASP.NET
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014
 
Cours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observerCours design pattern m youssfi partie 2 observer
Cours design pattern m youssfi partie 2 observer
 
Jenkins Introduction
Jenkins IntroductionJenkins Introduction
Jenkins Introduction
 
Formation autour de git et git lab
Formation autour de git et git labFormation autour de git et git lab
Formation autour de git et git lab
 
Présentation de Robot framework
Présentation de Robot frameworkPrésentation de Robot framework
Présentation de Robot framework
 
Génie Logiciel : les tests
Génie Logiciel : les testsGénie Logiciel : les tests
Génie Logiciel : les tests
 
Jenkins presentation
Jenkins presentationJenkins presentation
Jenkins presentation
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
Introduction to CI/CD
Introduction to CI/CDIntroduction to CI/CD
Introduction to CI/CD
 
Angular
AngularAngular
Angular
 

Similaire à 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
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
Christophe HERAL
 

Similaire à Université du soir - TDD (20)

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)
 
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
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
 
Test Driven Development (aka TDD) for agile teams
Test Driven Development (aka TDD) for agile teamsTest Driven Development (aka TDD) for agile teams
Test Driven Development (aka TDD) for agile teams
 

Plus de Jean-Baptiste Vigneron

Plus 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
 

Dernier (6)

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
 
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
 
pdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdf
pdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdfpdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdf
pdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdf
 
mémoire genie civil presenté lors de la soutenance de mémoire
mémoire genie civil presenté lors de la soutenance de mémoiremémoire genie civil presenté lors de la soutenance de mémoire
mémoire genie civil presenté lors de la soutenance de mémoire
 
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
 
le probleme de la planification JSP exposee (2) (2).pptx
le probleme de la planification JSP exposee (2) (2).pptxle probleme de la planification JSP exposee (2) (2).pptx
le probleme de la planification JSP exposee (2) (2).pptx
 

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