TDD & Legacy By Agile4Techos
Qui sommes nous? Bernard Huguet Luc Jeanniard Johan Martinsson Cyrille Roy
YES, WE TDD Vous verrez Pourquoi le TDD sur du legacy code Un binôme travaille sur du code réaliste écrit sans test Comment il s'appuie sur le TDD pour Corriger un bug (Mock) Implémenter une nouvelle fonctionnalité tout en dormant bien la nuit ;o) Vous repartirez avec le sentiment que c'est possible YES, WE TDD
NO, WE WON’T Vous ne verrez PAS Beaucoup de slides ;-p Une Nème justification du TDD Encore le l'exemple de base (string calculator) Toutes les recettes NO, WE WON’T
Il faut comprendre le code C’est plus long Il faut payer un ticket d’entrée : infrastructure Il faut convaincre les équipes et le Mgt Pas toujours applicable? Pas toujours possible? Pas les bon outils . . . Quelles sont les difficultés ques l’on rencontre à tester das du legacy code? 5 Min Time Box Noter les réponses sur un post-it géant Compréhension du code Peur / hésitation …
UNE VRAIE APPLICATION Traduction Questions Réponses Client lourd Configuration Utilisateurs Resources Client Q/R Client mi-lourd ServiceQ/R Client U ServiceU - Qui n’a jamais eu de problème à programmer un wizard - Démo rapide en live Stockage Statistiques Client S
CORRECTION D’UN BUG
TDD TOUJOURS LE MEME CYCLE RED GREEN REFACTOR Write a test that fails Make the code work Eliminate Redundancy
On retient Reproduction du bug avec un test RED, GREEN, REFACTOR Pas besoin des dépendances externes pour tester Utilisation de doublures (mock, stub) pour s’en affranchir Peu de lancements de l’application Capitalisation C’est pas si difficile !
AJOUT DE VALEUR
TDD TOUJOURS LE MEME CYCLE RED GREEN REFACTOR Write a test that fails Make the code work Eliminate Redundancy
On retient Approche itérative, aide à la réflexion RED, GREEN, REFACTOR Refactoring couvert par les tests Utilisation de matcher Clarté des messages Pas de lancement de l’application ↘ Coût
Pourquoi du TDD sur du Legacy code? Besoin de modifier une application existante Besoin de modifier sans casser le code existant Besoin de tester efficacement les modifications Exemple : Je veux corriger un bug J’exécute 30 fois le scénario de reproduction pour vérifier si ma correction est valide : long + fastidieux + fatiguant ! Bonnes raisons d'essayer le TDD Pourquoi du TDD sur du Legacy code Besoin de modifier une application existante Besoin de modifier sans casser le code existant Besoin de tester efficacement les modifications Exemple : Je veux corriger un bug J’exécute 30 fois le scénario de reproduction pour vérifier si ma correction est valide : long + fastidieux + fatiguant ! --> Bonnes raisons d'essayer le TDD sur du legacy code
Pourquoi cette session? TDD sur nouveau code On sait que ça marche On sait faire On se casse tous les dents au début ... et même plus tard ! ;o) Des techniques existent : cf Référence Il faut se jeter à l'eau pour apprendre à nager Après les premiers obstacles ça va vite Pourquoi cette session? TDD sur nouveau code On sait que ça marche On sait faire TDD sur du code existant non testé = Legacy code On se casse tous les dents au début ... et même plus tard ! Des techniques existent Il faut se jeter à l'eau pour apprendre à nager Après les premiers obstacles ça va vite
LA REFERENCE
Questions By Agile4techos
ROTI (Return On Time Invested) 5 doigts : Excellente Super c'est exactement ce qu'il me fallait ! 4 doigts : Bonne Très intéressant, j’ai gagné plus que le temps que j’y ai passé. 3 doigts : Juste Moyenne Intéressant, sans plus. Je n’ai pas perdu mon temps. 2 doigts : Utile Bof ! J'ai perdu du temps. 1 doigt : Inutile Je n'ai rien appris. J’ai vraiment perdu mon temps