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

Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOpsMicrosoft
 
Introduction au génie logiciel 1.2
Introduction au génie logiciel 1.2Introduction au génie logiciel 1.2
Introduction au génie logiciel 1.2Stéphane Salmons
 
Teste Tradicional e Teste Ágil: de que lado você esta?
Teste Tradicional e Teste Ágil: de que lado você esta?Teste Tradicional e Teste Ágil: de que lado você esta?
Teste Tradicional e Teste Ágil: de que lado você esta?Danilo Sousa
 
Mini projet individuel php
Mini projet individuel phpMini projet individuel php
Mini projet individuel phpKhadim Mbacké
 
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 ContinueVincent Composieux
 
COSCUP 2016: Project 52 每週一個小專案來學習 Golang
COSCUP 2016: Project 52 每週一個小專案來學習 GolangCOSCUP 2016: Project 52 每週一個小專案來學習 Golang
COSCUP 2016: Project 52 每週一個小專案來學習 GolangEvan Lin
 
Clean Code I - Best Practices
Clean Code I - Best PracticesClean Code I - Best Practices
Clean Code I - Best PracticesTheo Jungeblut
 
Introduction to nsubstitute
Introduction to nsubstituteIntroduction to nsubstitute
Introduction to nsubstituteSuresh Loganatha
 
Alphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQLAlphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQLAlphorm
 
Métriques de qualité logicielle
Métriques de qualité logicielleMétriques de qualité logicielle
Métriques de qualité logicielleYouness Boukouchi
 
J'ai fait une app native en React Native
J'ai fait une app native en React NativeJ'ai fait une app native en React Native
J'ai fait une app native en React NativeCocoaHeads France
 
Célèbres pannes du génie logiciel
Célèbres pannes du génie logicielCélèbres pannes du génie logiciel
Célèbres pannes du génie logicielNassim Bahri
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JSAbdoulaye Dieng
 
Realtime selenium interview questions
Realtime selenium interview questionsRealtime selenium interview questions
Realtime selenium interview questionsKuldeep Pawar
 
Criando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssuredCriando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssuredElias Nogueira
 
Présentation Git & GitHub
Présentation Git & GitHubPrésentation Git & GitHub
Présentation Git & GitHubThibault Vlacich
 

Tendances (20)

Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOps
 
Introduction au génie logiciel 1.2
Introduction au génie logiciel 1.2Introduction au génie logiciel 1.2
Introduction au génie logiciel 1.2
 
Teste Tradicional e Teste Ágil: de que lado você esta?
Teste Tradicional e Teste Ágil: de que lado você esta?Teste Tradicional e Teste Ágil: de que lado você esta?
Teste Tradicional e Teste Ágil: de que lado você esta?
 
Mini projet individuel php
Mini projet individuel phpMini projet individuel php
Mini projet individuel php
 
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
 
Méthodes Agiles - La Méthode XP
Méthodes Agiles - La Méthode XPMéthodes Agiles - La Méthode XP
Méthodes Agiles - La Méthode XP
 
Support de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfiSupport de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfi
 
COSCUP 2016: Project 52 每週一個小專案來學習 Golang
COSCUP 2016: Project 52 每週一個小專案來學習 GolangCOSCUP 2016: Project 52 每週一個小專案來學習 Golang
COSCUP 2016: Project 52 每週一個小專案來學習 Golang
 
Clean Code I - Best Practices
Clean Code I - Best PracticesClean Code I - Best Practices
Clean Code I - Best Practices
 
presentation on Docker
presentation on Dockerpresentation on Docker
presentation on Docker
 
Introduction to nsubstitute
Introduction to nsubstituteIntroduction to nsubstitute
Introduction to nsubstitute
 
Alphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQLAlphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQL
 
Métriques de qualité logicielle
Métriques de qualité logicielleMétriques de qualité logicielle
Métriques de qualité logicielle
 
Cours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateurCours design pattern m youssfi partie 3 decorateur
Cours design pattern m youssfi partie 3 decorateur
 
J'ai fait une app native en React Native
J'ai fait une app native en React NativeJ'ai fait une app native en React Native
J'ai fait une app native en React Native
 
Célèbres pannes du génie logiciel
Célèbres pannes du génie logicielCélèbres pannes du génie logiciel
Célèbres pannes du génie logiciel
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JS
 
Realtime selenium interview questions
Realtime selenium interview questionsRealtime selenium interview questions
Realtime selenium interview questions
 
Criando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssuredCriando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssured
 
Présentation Git & GitHub
Présentation Git & GitHubPrésentation Git & GitHub
Présentation Git & GitHub
 

Similaire à Université du soir - 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
 
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileLes cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileDenis Voituron
 
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
 
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
 
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
 
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
 
[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)Cellenza
 
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
 
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
 
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
 
Mockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilMockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilNormandy JUG
 
20110519 cara tests_agiles_grenoble_all
20110519 cara tests_agiles_grenoble_all20110519 cara tests_agiles_grenoble_all
20110519 cara tests_agiles_grenoble_allCARA_Lyon
 
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
 
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
 
Une architecture agile et testable
Une architecture agile et testableUne architecture agile et testable
Une architecture agile et testablemartinsson
 
[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 ?Christophe HERAL
 
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
 
[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 MicrosoftChristophe 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)
 
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
 
[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
 

Plus de Jean-Baptiste Vigneron (9)

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
 

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