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.
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. 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
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. 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. 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, …
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. 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 %
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 !
21. Les Mocks
Classe à tester 1 rôle !
Collaborateur
Collaborateur
Collaborateur
Collaborateur
22. Les mocks : sujet de démo
Jeu de tennis : GUI & Controller !
23. Les Mocks
Controler
Game
GUI
ScoreBuilder
buttonPlayer1Pressed()
player1Scored()
computeScore(game) "15-0"
displayScore("15-0")
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
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 !