SlideShare une entreprise Scribd logo
1  sur  26
TEST DRIVEN DEVELOPMENT
DÉVELOPPEZ VOS APPLICATIONS QUI
RÉSISTERONT A L’ÉPREUVE DU TEMPS
Cyril GRANDJEAN
Mardi 6 Novembre 2018
#BattleDevPLW
Partagez votre soirée sur les
réseaux sociaux avec :
SUIVEZ-NOUS SUR
Agenda
Introduction
Qu’est ce que le Test Driven Development ?
Développement de notre premier service
Correction de notre premier bug
Ajout de fonctionnalités à notre service
Amélioration de la couverture de code
Automatisation des tests
Conclusion
#BattleDevPLW
Partagez votre soirée sur les
réseaux sociaux avec :
Introduction
• Cyril GRANDJEAN
• Lead developer chez Planisware
• Langages principaux
– Java
– Javascript
• Site web: www.cyril-grandjean.fr
• LinkedIn: grandjeancyril
#BattleDevPLW
Partagez votre soirée sur les
réseaux sociaux avec :
Agenda
Introduction
Qu’est ce que le Test Driven Development ?
Développement de notre premier service
Correction de notre premier bug
Ajout de fonctionnalités à notre service
Amélioration de la couverture de code
Automatisation des tests
Conclusion
#BattleDevPLW
Partagez votre soirée sur les
réseaux sociaux avec :
Qu’est ce que le Test Driven
Development ?
• Philosophie
Source: http://fruzenshtein.com/java-tdd-with-junit-example-1/
Agenda
Introduction
Qu’est ce que le Test Driven Development ?
Développement de notre premier service
Correction de notre premier bug
Ajout de fonctionnalités à notre service
Amélioration de la couverture de code
Automatisation des tests
Conclusion
#BattleDevPLW
Partagez votre soirée sur les
réseaux sociaux avec :
Développement de notre premier
service
• Service login
• Bob est un développeur Junior pour la nouvelle startup
MyBestSoft
• Bob doit réaliser un service d’authentification avec login /
mot de passe
• Bob a décidé de développer
en utilisant la philosophie TDD
Développement de notre premier
service
• Démonstration
– La démonstration est disponible sur GitHub:
https://github.com/kyrillos52/tdd-demo
– Le code a été développé en Java mais la
philosophie s’applique quelque soit le langage.
– Le code de la démonstration a été
volontairement simplifié afin de démontrer le
raisonnement et le concept de développement
#BattleDevPLW
Partagez votre soirée sur les
réseaux sociaux avec :
Développement de notre premier
service
• Mise en place de l’application
– Tag Git: 1_INITIALISATION
• Développement du test unitaire
– Tag Git: 2_UNIT_TEST_LOGIN
• Développement de la fonctionnalité
– Tag Git: 3_DEV_LOGIN_FEATURE
#BattleDevPLW
Partagez votre soirée sur les
réseaux sociaux avec :
Agenda
Introduction
Qu’est ce que le Test Driven Development ?
Développement de notre premier service
Correction de notre premier bug
Ajout de fonctionnalités à notre service
Amélioration de la couverture de code
Automatisation des tests
Conclusion
#BattleDevPLW
Partagez votre soirée sur les
réseaux sociaux avec :
Correction de nos premiers bugs
• Premiers bugs
• Cat, la testeuse de
notre jeune startup
remonte à Bob des
bugs:
– quand le login et
mot de passe est
initialisé à null ou
vide
– on rentre un
identifiant
inconnu
Correction de notre premier bug
• Création du test de détection des bugs
– Tag Git: 4_DETECT_QA_LOGIN_BUG
• Fix des bugs
– Tag Git: 5_FIX_QA_LOGIN_BUGS
#BattleDevPLW
Partagez votre soirée sur les
réseaux sociaux avec :
Agenda
Introduction
Qu’est ce que le Test Driven Development ?
Développement de notre premier service
Correction de notre premier bug
Ajout de fonctionnalités à notre service
Amélioration de la couverture de code
Automatisation des tests
Conclusion
#BattleDevPLW
Partagez votre soirée sur les
réseaux sociaux avec :
Ajout de fonctionnalités à notre
service
• Service Json Web Token
• 3 ans après notre premier
service, notre startup
devient une PME et
embauche plus de 40
personnes.
• Bob, devenu développeur
sénior doit rajouter
l’authentification Json
Web Token pour intégrer
l’application à la future
application mobile.
#BattleDevPLW
Partagez votre soirée sur les
réseaux sociaux avec :
Ajout de fonctionnalités à notre
service
• Ajout de nouveaux tests pour la
fonctionnalités
– Tag Git: 6_JWT_UNIT_TESTS
• Création de la fonctionnalité
– Tag Git: 7_JWT_DEV
• Correction de la régression
– Tag Git: 8_JWT_FIX
#BattleDevPLW
Partagez votre soirée sur les
réseaux sociaux avec :
Agenda
Introduction
Qu’est ce que le Test Driven Development ?
Développement de notre premier service
Correction de notre premier bug
Ajout de fonctionnalités à notre service
Amélioration de la couverture de code
Automatisation des tests
Conclusion
#BattleDevPLW
Partagez votre soirée sur les
réseaux sociaux avec :
Automatisation des tests
• Investir sur les tests
• Bob, développeur
consciencieux, veut
toujours améliorer
la fiabilité de son
service en
optimisant la
couverture de son
service.
Amélioration de la couverture de
code
• Optimisation de la couverture de code
– Tag Git: 9_JWT_COVERAGE
#BattleDevPLW
Partagez votre soirée sur les
réseaux sociaux avec :
Agenda
Introduction
Qu’est ce que le Test Driven Development ?
Développement de notre premier service
Correction de notre premier bug
Ajout de fonctionnalités à notre service
Amélioration de la couverture de code
Automatisation des tests
Conclusion
#BattleDevPLW
Partagez votre soirée sur les
réseaux sociaux avec :
Automatisation des tests
• Objectif: Intégration
continue
• Bob, devenu responsable
technique, doit mettre en
place les outils qui
permettront l’intégration
continue
Automatisation des tests
• Exécuter les tests avec Maven
– mvn clean install
• Installer des outils d’intégration continue
– Travis, Jenkins, Bamboo,…
– Exemple: https://travis-
ci.org/kyrillos52/ddbstoolkit
#BattleDevPLW
Partagez votre soirée sur les
réseaux sociaux avec :
Automatisation des tests
• Exécuter des outils d’analyse de code et de
couverture de code
– Sonar, Codecov,…
– Exemple Sonar:
https://sonarcloud.io/dashboard?id=org.ddbstoolk
it.toolkit%3Addbstoolkit-root
– Exemple Codecov:
https://codecov.io/gh/kyrillos52/ddbstoolkit
#BattleDevPLW
Partagez votre soirée sur les
réseaux sociaux avec :
Agenda
Introduction
Qu’est ce que le Test Driven Development ?
Développement de notre premier service
Correction de notre premier bug
Ajout de fonctionnalités à notre service
Amélioration de la couverture de code
Automatisation des tests
Conclusion
#BattleDevPLW
Partagez votre soirée sur les
réseaux sociaux avec :
Conclusion
• La mise en place du Test Driven
Development a permis:
• Tester automatiquement un nouveau développement
• Détecter et corriger un bug de développement
• Développer une nouvelle fonctionnalité sans
régression
• Améliorer la qualité du livrable
• Avoir des métriques sur l’état du code
• Gagner du temps sur les nouveaux développements
• Moins de stress, gain de confiance, plus de créativité
et donc plus de productivité 
#BattleDevPLW
Partagez votre soirée sur les
réseaux sociaux avec :
Agenda
Introduction
Cycle de développement
Analyse, spécifications, conception
Codage
Tests
Questions
#BattleDevPLW
Partagez votre soirée sur les
réseaux sociaux avec :
AVEZ-VOUS DES
QUESTIONS ?
SUIVEZ-NOUS SUR

Contenu connexe

Similaire à Test driven development

Developement logiciel: comment livrer de la qualite ?
Developement logiciel: comment livrer  de la qualite ?Developement logiciel: comment livrer  de la qualite ?
Developement logiciel: comment livrer de la qualite ?Innobec
 
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continueOmnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continueXavier Callens
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyFrançois Petitit
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logicielsSylvain Leroy
 
Adoption incrémentale des tests dans VS ALM
Adoption incrémentale des tests dans VS ALMAdoption incrémentale des tests dans VS ALM
Adoption incrémentale des tests dans VS ALMGrégory Ott
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOpsMicrosoft
 
Formation devops par la pratique
Formation devops par la pratiqueFormation devops par la pratique
Formation devops par la pratiqueKhaled Ben Driss
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...ENSIBS
 
20-06 Google Apps dans l'entreprise
20-06 Google Apps dans l'entreprise20-06 Google Apps dans l'entreprise
20-06 Google Apps dans l'entrepriseGDG Nantes
 
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
 
Comment améliorer la site performance ?
Comment améliorer la site performance ? Comment améliorer la site performance ?
Comment améliorer la site performance ? CDNetworks
 
Et si mon test était la spécification de mon application ? - JACOB - iWE - So...
Et si mon test était la spécification de mon application ? - JACOB - iWE - So...Et si mon test était la spécification de mon application ? - JACOB - iWE - So...
Et si mon test était la spécification de mon application ? - JACOB - iWE - So...TelecomValley
 
Happy dev ... & ops
Happy dev ... & opsHappy dev ... & ops
Happy dev ... & opsQuentin Adam
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache MavenArnaud Héritier
 
Cast Consulting
Cast ConsultingCast Consulting
Cast ConsultingCAST
 
DevOps et ALM : Application Lifecycle Management: Continuous Delivery avec Vi...
DevOps et ALM : Application Lifecycle Management: Continuous Delivery avec Vi...DevOps et ALM : Application Lifecycle Management: Continuous Delivery avec Vi...
DevOps et ALM : Application Lifecycle Management: Continuous Delivery avec Vi...Adrien Clerbois
 
Offre de formations PEAKS
Offre de formations PEAKSOffre de formations PEAKS
Offre de formations PEAKSMarine Quillon
 

Similaire à Test driven development (20)

Developement logiciel: comment livrer de la qualite ?
Developement logiciel: comment livrer  de la qualite ?Developement logiciel: comment livrer  de la qualite ?
Developement logiciel: comment livrer de la qualite ?
 
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continueOmnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
Omnilog 2016 - Apéro techno : Rex Identicar sur l'intégration continue
 
Paris Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacyParis Web 2015 - Atelier désendettement Javascript legacy
Paris Web 2015 - Atelier désendettement Javascript legacy
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
Adoption incrémentale des tests dans VS ALM
Adoption incrémentale des tests dans VS ALMAdoption incrémentale des tests dans VS ALM
Adoption incrémentale des tests dans VS ALM
 
Adoption incrémentale des tests dans VS ALM
Adoption incrémentale des tests dans VS ALMAdoption incrémentale des tests dans VS ALM
Adoption incrémentale des tests dans VS ALM
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOps
 
Formation devops par la pratique
Formation devops par la pratiqueFormation devops par la pratique
Formation devops par la pratique
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
 
20-06 Google Apps dans l'entreprise
20-06 Google Apps dans l'entreprise20-06 Google Apps dans l'entreprise
20-06 Google Apps dans l'entreprise
 
Hands on Sonar
Hands on SonarHands on Sonar
Hands on Sonar
 
Test driven development v0.2 20121221
Test driven development v0.2 20121221Test driven development v0.2 20121221
Test driven development v0.2 20121221
 
Mockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice DuteilMockito - Design + tests par Brice Duteil
Mockito - Design + tests par Brice Duteil
 
Comment améliorer la site performance ?
Comment améliorer la site performance ? Comment améliorer la site performance ?
Comment améliorer la site performance ?
 
Et si mon test était la spécification de mon application ? - JACOB - iWE - So...
Et si mon test était la spécification de mon application ? - JACOB - iWE - So...Et si mon test était la spécification de mon application ? - JACOB - iWE - So...
Et si mon test était la spécification de mon application ? - JACOB - iWE - So...
 
Happy dev ... & ops
Happy dev ... & opsHappy dev ... & ops
Happy dev ... & ops
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
Cast Consulting
Cast ConsultingCast Consulting
Cast Consulting
 
DevOps et ALM : Application Lifecycle Management: Continuous Delivery avec Vi...
DevOps et ALM : Application Lifecycle Management: Continuous Delivery avec Vi...DevOps et ALM : Application Lifecycle Management: Continuous Delivery avec Vi...
DevOps et ALM : Application Lifecycle Management: Continuous Delivery avec Vi...
 
Offre de formations PEAKS
Offre de formations PEAKSOffre de formations PEAKS
Offre de formations PEAKS
 

Test driven development

  • 1. TEST DRIVEN DEVELOPMENT DÉVELOPPEZ VOS APPLICATIONS QUI RÉSISTERONT A L’ÉPREUVE DU TEMPS Cyril GRANDJEAN Mardi 6 Novembre 2018 #BattleDevPLW Partagez votre soirée sur les réseaux sociaux avec : SUIVEZ-NOUS SUR
  • 2. Agenda Introduction Qu’est ce que le Test Driven Development ? Développement de notre premier service Correction de notre premier bug Ajout de fonctionnalités à notre service Amélioration de la couverture de code Automatisation des tests Conclusion #BattleDevPLW Partagez votre soirée sur les réseaux sociaux avec :
  • 3. Introduction • Cyril GRANDJEAN • Lead developer chez Planisware • Langages principaux – Java – Javascript • Site web: www.cyril-grandjean.fr • LinkedIn: grandjeancyril #BattleDevPLW Partagez votre soirée sur les réseaux sociaux avec :
  • 4. Agenda Introduction Qu’est ce que le Test Driven Development ? Développement de notre premier service Correction de notre premier bug Ajout de fonctionnalités à notre service Amélioration de la couverture de code Automatisation des tests Conclusion #BattleDevPLW Partagez votre soirée sur les réseaux sociaux avec :
  • 5. Qu’est ce que le Test Driven Development ? • Philosophie Source: http://fruzenshtein.com/java-tdd-with-junit-example-1/
  • 6. Agenda Introduction Qu’est ce que le Test Driven Development ? Développement de notre premier service Correction de notre premier bug Ajout de fonctionnalités à notre service Amélioration de la couverture de code Automatisation des tests Conclusion #BattleDevPLW Partagez votre soirée sur les réseaux sociaux avec :
  • 7. Développement de notre premier service • Service login • Bob est un développeur Junior pour la nouvelle startup MyBestSoft • Bob doit réaliser un service d’authentification avec login / mot de passe • Bob a décidé de développer en utilisant la philosophie TDD
  • 8. Développement de notre premier service • Démonstration – La démonstration est disponible sur GitHub: https://github.com/kyrillos52/tdd-demo – Le code a été développé en Java mais la philosophie s’applique quelque soit le langage. – Le code de la démonstration a été volontairement simplifié afin de démontrer le raisonnement et le concept de développement #BattleDevPLW Partagez votre soirée sur les réseaux sociaux avec :
  • 9. Développement de notre premier service • Mise en place de l’application – Tag Git: 1_INITIALISATION • Développement du test unitaire – Tag Git: 2_UNIT_TEST_LOGIN • Développement de la fonctionnalité – Tag Git: 3_DEV_LOGIN_FEATURE #BattleDevPLW Partagez votre soirée sur les réseaux sociaux avec :
  • 10. Agenda Introduction Qu’est ce que le Test Driven Development ? Développement de notre premier service Correction de notre premier bug Ajout de fonctionnalités à notre service Amélioration de la couverture de code Automatisation des tests Conclusion #BattleDevPLW Partagez votre soirée sur les réseaux sociaux avec :
  • 11. Correction de nos premiers bugs • Premiers bugs • Cat, la testeuse de notre jeune startup remonte à Bob des bugs: – quand le login et mot de passe est initialisé à null ou vide – on rentre un identifiant inconnu
  • 12. Correction de notre premier bug • Création du test de détection des bugs – Tag Git: 4_DETECT_QA_LOGIN_BUG • Fix des bugs – Tag Git: 5_FIX_QA_LOGIN_BUGS #BattleDevPLW Partagez votre soirée sur les réseaux sociaux avec :
  • 13. Agenda Introduction Qu’est ce que le Test Driven Development ? Développement de notre premier service Correction de notre premier bug Ajout de fonctionnalités à notre service Amélioration de la couverture de code Automatisation des tests Conclusion #BattleDevPLW Partagez votre soirée sur les réseaux sociaux avec :
  • 14. Ajout de fonctionnalités à notre service • Service Json Web Token • 3 ans après notre premier service, notre startup devient une PME et embauche plus de 40 personnes. • Bob, devenu développeur sénior doit rajouter l’authentification Json Web Token pour intégrer l’application à la future application mobile. #BattleDevPLW Partagez votre soirée sur les réseaux sociaux avec :
  • 15. Ajout de fonctionnalités à notre service • Ajout de nouveaux tests pour la fonctionnalités – Tag Git: 6_JWT_UNIT_TESTS • Création de la fonctionnalité – Tag Git: 7_JWT_DEV • Correction de la régression – Tag Git: 8_JWT_FIX #BattleDevPLW Partagez votre soirée sur les réseaux sociaux avec :
  • 16. Agenda Introduction Qu’est ce que le Test Driven Development ? Développement de notre premier service Correction de notre premier bug Ajout de fonctionnalités à notre service Amélioration de la couverture de code Automatisation des tests Conclusion #BattleDevPLW Partagez votre soirée sur les réseaux sociaux avec :
  • 17. Automatisation des tests • Investir sur les tests • Bob, développeur consciencieux, veut toujours améliorer la fiabilité de son service en optimisant la couverture de son service.
  • 18. Amélioration de la couverture de code • Optimisation de la couverture de code – Tag Git: 9_JWT_COVERAGE #BattleDevPLW Partagez votre soirée sur les réseaux sociaux avec :
  • 19. Agenda Introduction Qu’est ce que le Test Driven Development ? Développement de notre premier service Correction de notre premier bug Ajout de fonctionnalités à notre service Amélioration de la couverture de code Automatisation des tests Conclusion #BattleDevPLW Partagez votre soirée sur les réseaux sociaux avec :
  • 20. Automatisation des tests • Objectif: Intégration continue • Bob, devenu responsable technique, doit mettre en place les outils qui permettront l’intégration continue
  • 21. Automatisation des tests • Exécuter les tests avec Maven – mvn clean install • Installer des outils d’intégration continue – Travis, Jenkins, Bamboo,… – Exemple: https://travis- ci.org/kyrillos52/ddbstoolkit #BattleDevPLW Partagez votre soirée sur les réseaux sociaux avec :
  • 22. Automatisation des tests • Exécuter des outils d’analyse de code et de couverture de code – Sonar, Codecov,… – Exemple Sonar: https://sonarcloud.io/dashboard?id=org.ddbstoolk it.toolkit%3Addbstoolkit-root – Exemple Codecov: https://codecov.io/gh/kyrillos52/ddbstoolkit #BattleDevPLW Partagez votre soirée sur les réseaux sociaux avec :
  • 23. Agenda Introduction Qu’est ce que le Test Driven Development ? Développement de notre premier service Correction de notre premier bug Ajout de fonctionnalités à notre service Amélioration de la couverture de code Automatisation des tests Conclusion #BattleDevPLW Partagez votre soirée sur les réseaux sociaux avec :
  • 24. Conclusion • La mise en place du Test Driven Development a permis: • Tester automatiquement un nouveau développement • Détecter et corriger un bug de développement • Développer une nouvelle fonctionnalité sans régression • Améliorer la qualité du livrable • Avoir des métriques sur l’état du code • Gagner du temps sur les nouveaux développements • Moins de stress, gain de confiance, plus de créativité et donc plus de productivité  #BattleDevPLW Partagez votre soirée sur les réseaux sociaux avec :
  • 25. Agenda Introduction Cycle de développement Analyse, spécifications, conception Codage Tests Questions #BattleDevPLW Partagez votre soirée sur les réseaux sociaux avec :

Notes de l'éditeur

  1. Microsoft Confidentiel