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 :