À l’assaut de votre code patrimonial “Legacy” grâce aux tests
Beaucoup d’entreprises sont aux prises avec une importante base de code patrimoniale (legacy). Elles le savent, mais ont peur de s’y attaquer, car elles se sont brûlées avec du “refactoring” qui n’en finissait plus. Des tests unitaires pourraient aider, mais comment faire dans un patrimoine? Voyez comment les tests de “caractérisation” peuvent s’attaquer au cercle vicieux de la dette technique!
À propos de Félix-Antoine Bourbonnais
Félix-Antoine est un formateur et un accompagnateur passionné qui aide les organisations en agissant comme mentor et expert. C’est avec générosité qu’il transmet sa passion et ses connaissances autant à titre de coach pour Elapse Technologies que comme chargé de cours à l’Université Laval.
C'est avec dynamisme et enthousiasme qu'il accompagne et anime des formations en génie logiciel sur le TDD, l’ATDD / BDD, les essais automatisés, l’architecture Agile et émergente ainsi que la qualité en Agilité.
Développeur expérimenté, spécialisé en architecture et en tests automatisés, il a accompagné plusieurs entreprises, dont LaPresse+ et SSQ dans leur implantation du TDD, tests automatisés et dans la gestion de la dette technique.
À propos de Pascal Roy
Pascal est formateur et coach Agile pour Elapse Technologies. Il œuvre dans le domaine du génie logiciel depuis 1989. Il a travaillé au sein de différentes organisations, dont la prestigieuse Object Mentor aux USA.
Pascal a eu le privilège d’être aux premières loges lors des premiers balbutiements du mouvement Agile en travaillant avec Bob Martin (Robert C. Martin), Kent Beck, Michael Feathers, Ron Jeffries, Ward Cunningham, Alistair Cockburn, Dave Thomas et autres grands noms du mouvement dont la majorité sont des signataires du manifeste Agile.
Dans sa carrière, il a accompagné diverses entreprises dont HP, Symantec, Motorola, avec leurs pratiques Agiles. Chez nous, il accompagne actuellement LaPresse+ dans leurs implantations du BDD et des tests automatisés.
Il possède une solide base technique et Agile incluant l’architecture logicielle, le BDD, le TDD, Scrum et XP. Pascal détient une grande expérience en gestion de projets en combinant les titres de PSM, CSM et PMP.
2. Nous voulons vous introduire aux tests de
caractérisation, un concept et un outil essentiel
pour les développeurs qui travaillent dans du code
patrimonial
Pourquoi cette présentation ?
3.
4. 4 4
Qui sommes-nous ?
Pascal Roy
Ing., PSM, CSM, PMP
Félix-Antoine Bourbonnais
B.ing., PSM, M.Sc.
8. • Du code écrit par d’autres
• Du code que plus personne ne veut toucher
• Du code qui n’est plus supporté par ceux qui l’ont écrit
• Du code qui pourrait être réécrit en utilisant de meilleures
pratiques de code, d’outils ou de langages
• ...
Quelques définitions possibles…
9. Du code sans tests
Michael Feathers,
Working Effectively with Legacy Code
10. C’est du code difficile à
faire évoluer.
Peu importe
son âge ou la raison.
En gros…
11. 11
La peur : le pire ennemi du
développement logiciel
22. Vous avez 2 choix…
Une dépense
Big Bang
Risque très élevé
Pas de nouvelle valeur
Paiements accélérés
Étape par étape
Risque moindre
Produit de la valeur
Rebâtir de zéro Rénover / revitaliser
25. S’attaquer au coût du changement en
ramenant le système dans un état stable
et en le maintenant dans cet état par la suite !
Le but de la rénovation?
31. Un test de caractérisation est une
description du comportement
actuel d’un bout de code.
- Michael Feathers
Définition : Test de caractérisation
32. Il permet de protéger le comportement existant
contre toute modification non désirée.
C’est notre briseur de peur!
Et par la suite…
33. LA STRATÉGIE DE RÉ-USINAGE UTILISANT LES TESTS DE
CARACTÉRISATION
34. 1. Identifier un point de changement
2. Trouver les points de tests (« seam »)
3. Briser les dépendances pour pouvoir tester
4. Écrire les tests de caractérisation
5. Faire le changement + ré-usiner
Les 5 grandes étapes
35. On peut toujours améliorer le code patrimonial…
Attention de focaliser sur notre but:
entourer de tests et faire le minimum
36. Une prise en charge dans une urgence:
on veut limiter les dommages
et on focalise sur l’objectif le plus pressant
(ex.: briser les dépendances, caractériser …)
Le « Legacy code », c’est comme…
37. Le changement à faire !
Quel est l’objectif ?
Qu’est-ce qui nous guide?
38. Attention de ne pas
arrêter la chaîne de
production de valeur!
Attention au Big Bang !
38
40. 1. Identifier et isoler un bout de code et le rendre accessible
dans un harnais de tests
2. Écrire une assertion qui ne passe pas
3. Exécuter le test et le laisser vous dire quel est le
comportement actuel
4. Changer votre assertion pour tenir compte du comportement
actuel
5. Répéter…
La mécanique d’écriture d’un test de caractérisation
52. En quoi un TC est-il différent?
Objectif
Spécification du
comportement requis
Spécification du
comportement actuel
Régulier Caractérisation
53. En quoi un TC est-il différent?
Contexte d’utilisation
Comportement connu
et nouveau code
Code patrimonial,
comportement flou ou
perdu
Régulier Caractérisation
54. En quoi un TC est-il différent?
Durée de vie
Permanent Temporaire
Régulier Caractérisation
55. Quel niveau ?
Est-ce que d’entourer mon
application avec des tests bout-
en-bout peut m’aider à
caractériser ?
56. Le nouveau code doit être testé et écrit avec les
meilleures pratiques… n’ajoutez pas encore plus de
patrimoine douteux !
Avertissement !
60. Although our first joy of programming
may have been intense, the misery of
dealing with legacy code is often
sufficient to extinguish that flame.
Michael Feathers,
Working Effectively with Legacy Code
Le code patrimonial tue la flamme!
64. 65
Merci
Notre site
elapsetech.com
Notre blogue
developpementagile.com
Nos Twitter
@fbourbonnais | @elapsetech
Nos courriels
fbourbonnais@elapsetech.com
pascalroy@elapsetech.com
Nos LinkedIn
linkedin.com/in/fbourbonnais/fr
ca.linkedin.com/in/roypa
conferences.elapsetech.com
Diapositives
Nos présentations, chez vous!