TDD, le meilleur moyen d'écrire du code testable 
Xavier Nopre
Puis-je avoir ce diaporama ? 
Un mail à xnopre@gmail.com : 
–Votre avis sur cette session 
–Vos questions
Qui suis-je ? 
Artisan-programmeur 
Agiliste 
Indépendant 
Xavier Nopre 
•Développement d'applications "sur-mesure" pour d...
Tests unitaires
De quoi parlons-nous ? 
Tests unitaires = 
Du code qui teste du code
Tests unitaires et agilité ? 
Agilité : 
• Développement itératif et incrémental 
• En permanence, adapter le code exist...
Tests unitaires = la base des tests 
Test unitaires 
Tests intégration / acceptance 
Tests 
GUI 
Tests manuels 
Pyramide d...
Tests unitaires = limiter les coûts des anomalies 
€ 
€€€
Rappels sur les tests unitaires 
•Simples ("unitaires") 
•Lisibles 
•Rapides à écrire 
•Rapides à exécuter 
•Indépendants ...
TDD 
= 
"Test Driven Development"
TDD pourquoi ? 
•Vérifier la compréhension du besoin fonctionnel et être sûr d'y répondre  Traduction des specs en tests ...
Oui, mais … 
•Les débuts sont difficiles 
•L'apprentissage est long 
•C'est un investissement, qui doit être collectif (éq...
Le cycle du TDD 
Ecriture du test 
Ecriture du code de production 
Refactoring 
Ecriture d'un test et un seul et s’assurer...
Démo time !
Régles du coding-dojo "kata" 
•Démonstration : 
–D' 1 solution 
–À 1 défi 
–Par 1 personne 
•Objectif : montrer 
•Tout le ...
Sujet 
•Issu de l'atelier "Elephant Carpaccio exercise" 
•Calcul de prix avec remises : (PU ; Quantité)  prix 
•Remises :...
Je réfléchis à mes tests … 
// doit_appliquer_un_prix_sans_remise 
// 3 (1.25) --> 3,75 
// doit_appliquer_une_remise_de_3...
C'est parti !
TDD : pas seulement du "test first" 
•Plus qu'une pratique  une discipline 
–Pas d'ajout de code sans test rouge 
•Plus q...
Mocks
Les Mocks 
Classe à tester 1 rôle ! 
Collaborateur 
Collaborateur 
Collaborateur 
Collaborateur
Les mocks : sujet de démo 
Jeu de tennis : GUI & Controller !
Les Mocks 
Controler 
Game 
GUI 
ScoreBuilder 
buttonPlayer1Pressed() 
player1Scored() 
computeScore(game)  "15-0" 
displ...
Le 1er test avec les mocks 
•Etant donné (Given) : 
–Un "Controler" et ses collaborateurs 
•Lorsque (When) : 
–J'appelle l...
Les mocks : démo !
Conclusion ? 
•Tests unitaires (et ingénierie agile) : indispensables à l'agilité 
•TDD : "le meilleur moyen d'écrire du c...
Merci ! Questions ? 
xnopre@gmail.com
Prochain SlideShare
Chargement dans…5
×

Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable

2 542 vues

Publié le

Les tests unitaires automatisés sont indispensables à l'agilité. Le TDD est le meilleur moyen d'écrire
ces tests et d'avoir du code testable, mais sa pratique va au-delà, notamment dans l'aide à la
conception du code. Un peu de théorie et beaucoup de démo live pour vous montrer cette pratique.

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
2 542
Sur SlideShare
0
Issues des intégrations
0
Intégrations
1 594
Actions
Partages
0
Téléchargements
15
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable

  1. 1. TDD, le meilleur moyen d'écrire du code testable Xavier Nopre
  2. 2. Puis-je avoir ce diaporama ? Un mail à xnopre@gmail.com : –Votre avis sur cette session –Vos questions
  3. 3. Qui suis-je ? Artisan-programmeur Agiliste Indépendant Xavier Nopre •Développement d'applications "sur-mesure" pour des clients finaux •Interventions en entreprises : formation, accompagnement, développement freelance @xnopre xnopre.blogspot.com
  4. 4. Tests unitaires
  5. 5. De quoi parlons-nous ? Tests unitaires = Du code qui teste du code
  6. 6. Tests unitaires et agilité ? Agilité : • Développement itératif et incrémental • En permanence, adapter le code existant pour ajouter de nouvelles fonctionnalités = refactoring •Sans régression  Nécessité de filets de sécurité • Tests unitaires et autres
  7. 7. Tests unitaires = la base des tests Test unitaires Tests intégration / acceptance Tests GUI Tests manuels Pyramide des tests – Mike Cohn •Les tests unitaires sont la "base" de tous les tests •L'investissement et le volume sont plus importants pour les TU •Tous les types de tests sont complémentaires
  8. 8. Tests unitaires = limiter les coûts des anomalies € €€€
  9. 9. Rappels sur les tests unitaires •Simples ("unitaires") •Lisibles •Rapides à écrire •Rapides à exécuter •Indépendants (des autres) •Répétables •Automatisables •Pas forcément partout … (pensez ROI) •Structurés –Préparations –Test (1 action) –Vérifications •Bon outillage •…
  10. 10. TDD = "Test Driven Development"
  11. 11. TDD pourquoi ? •Vérifier la compréhension du besoin fonctionnel et être sûr d'y répondre  Traduction des specs en tests •Détecter au plus tôt des problèmes dans les specs : oublis, impressions, contradictions, … •Générer du code testable •Systématiser la présence de tests unitaires, améliorer la couverture du code par les tests •Les tests sont plus "faciles" à écrire avant le code de production que après
  12. 12. Oui, mais … •Les débuts sont difficiles •L'apprentissage est long •C'est un investissement, qui doit être collectif (équipe) •Plus facile avec formation & accompagnement •Mais ROI important !
  13. 13. Le cycle du TDD Ecriture du test Ecriture du code de production Refactoring Ecriture d'un test et un seul et s’assurer qu’il ne passe pas pour de bonnes raisons Ecriture du code minimum pour faire passer ce test Remaniement et mise au propre du code, de l'architecture, de la présentation, factorisation, commentaires, …
  14. 14. Démo time !
  15. 15. Régles du coding-dojo "kata" •Démonstration : –D' 1 solution –À 1 défi –Par 1 personne •Objectif : montrer •Tout le monde doit suivre et comprendre  on peut interrompre
  16. 16. Sujet •Issu de l'atelier "Elephant Carpaccio exercise" •Calcul de prix avec remises : (PU ; Quantité)  prix •Remises : Valeur commande Réduction 1 000 € 3 % 5 000 € 5 % 7 000 € 7 % 10 000 € 10 %
  17. 17. Je réfléchis à mes tests … // doit_appliquer_un_prix_sans_remise // 3 (1.25) --> 3,75 // doit_appliquer_une_remise_de_3_pourcents_si_plus_de_1000 // 100 (12.10) --> 1173.70 // doit_appliquer_une_remise_de_5_pourcents_si_plus_de_5000 // 500 (12.10) --> 5747.50 // doit_appliquer_une_remise_de_7_pourcents_si_plus_de_7000 // 700 (12.10) --> 7877.10
  18. 18. C'est parti !
  19. 19. TDD : pas seulement du "test first" •Plus qu'une pratique  une discipline –Pas d'ajout de code sans test rouge •Plus qu'une méthode de tests  une activité de conception •Etat d'esprit •Une approche addictive Partie intégrante de la pratique de développement logiciel !
  20. 20. Mocks
  21. 21. Les Mocks Classe à tester 1 rôle ! Collaborateur Collaborateur Collaborateur Collaborateur
  22. 22. Les mocks : sujet de démo Jeu de tennis : GUI & Controller !
  23. 23. Les Mocks Controler Game GUI ScoreBuilder buttonPlayer1Pressed() player1Scored() computeScore(game)  "15-0" displayScore("15-0")
  24. 24. Le 1er test avec les mocks •Etant donné (Given) : –Un "Controler" et ses collaborateurs •Lorsque (When) : –J'appelle la méthode "button1HasBeenClicked" •Alors (Then) : –La méthode "displayScore("?")" est appelée
  25. 25. Les mocks : démo !
  26. 26. Conclusion ? •Tests unitaires (et ingénierie agile) : indispensables à l'agilité •TDD : "le meilleur moyen d'écrire du code testable" (et testé), et générer une bonne architecture •Apprentissage long et difficile :  Formation et accompagnement  S'entrainer, s'entraider  ROI garanti !
  27. 27. Merci ! Questions ? xnopre@gmail.com

×