Test Driven Development sur du code legacy

Du code legacy au code propre

Description

Le code legacy est une métaphore pour parler de ce code existant dans nos applications, difficile à maintenir, souvent de mauvaise qualité et non testé automatiquement. Ce module forme les développeurs aux pratiques permettant de maintenir et de faire évoluer du code legacy sans risque, et ainsi trouver les trajectoires de retour à une haute qualité.

Objectifs pédagogiques

  • Savoir appréhender des problèmes de qualité du code et appliquer les techniques de refactoring de code
  • Identifier les points d’entrée pour faire évoluer du code legacy en minimisant les risques
  • Appliquer les techniques pour mettre en place des tests automatisés autour de code legacy
  • Evaluer les risques pour choisir une stratégie adaptée de réduction de la dette technique

Public cible

  • Chef de projet en développement
  • Développeur
  • Testeur ayant une fibre développement
  • Architecte
  • Technical Leader

Pré-requis

  • Compétences en programmation et génie logiciel.
  • Une expérience dans le développement piloté par les tests (TDD) et la programmation orientée objet est un plus.
  • Avoir suivi la formation "Qualité des développements avec Test Driven Development" (TDD01) serait un plus.

Méthode pédagogique

Formation principalement composée d’exercices pratiques qui fourniront aux participants des outils qu’ils pourront mettre en pratique immédiatement dans leurs projets actuels.
Echanges sur les contextes des participants et retours d’expérience du formateur, complétés d’apports théoriques.

PROFILS DES INTERVENANTS

Toutes nos formations sont animées par des consultants-formateurs expérimentés et reconnus par leurs pairs.

MODALITÉS D'ÉVALUATION ET FORMALISATION À L'ISSUE DE LA FORMATION

L'évaluation des acquis se fait tout au long de la session au travers des ateliers et des mises en pratique. Une évaluation à chaud sur la satisfaction des stagiaires est réalisée systématiquement en fin de session et une attestation de formation est délivrée aux participants mentionnant les objectifs de la formation, la nature, le programme et la durée de l'action de formation ainsi que la formalisation des acquis.

Programme :

Jour 1

  • Connexion
    • En binômes, racontez une situation où intervention sur le code a produit un retour de bâton
    • Tour de table
      • Présentation des participants
      • Exposé des situations
  • Anti pattern : legacy code
    • Du code que nous avons reçu en héritage, qui a une valeur pour l’entreprise, et qu’il faut modifier
    • Les quatre raisons de modifier un code legacy
    • Couvrir les tests avec un harnais de tests unitaires
    • Améliorer le délai de feedback du code sur le développeur
    • Difficultés du TDD sur du code legacy
    • Le dilemme du code legacy
    • Exercice pratique : "Racontez une session de travail durant laquelle vous avez renoncé à écrire un test sur du code existant."
  • Stratégie de modification d’un code legacy
    • Identifier un point de changement
    • Trouver les points de test
    • Casser les dépendances
    • Ecrire des tests
    • Effectuer le changement et refactorer
    • Types de raccords : préprocesseur, faux collaborateurs
  • Clôture du jour 1

Jour 2

  • Pattern : test de caractérisation
    • Problème : le code est non testé, la documentation est absente ou obsolète
    • Solution: écrire des tests qui caractérisent le système tel qu’il est
    • Démarche :
      • Appeler un morceau de code depuis un harnais de test
      • Ecrire une assertion dont vous savez qu’elle échouera
      • En échouant le test indique quel est le comportement du code
      • Modifier le test de façon à ce qu’il attende le comportement que produit le code
      • Répéter
    • Heuristique générale
    • Test de caractérisation sur un bug
      • Exercice pratique : "Installer la base de code TriviaGame – examiner les classes – écrire des tests de caractérisation."
      • Débrief toutes les 25 minutes
  • Pattern : diagramme d’effet
    • Problème : on souhaite étudier l’impact que pourrait avoir un changement sur le code
    • Solution : tracer les effets de chaque variable sur les méthodes impactées
    • Exercice pratique : "Sur le code de Trivia Game, rechercher les effets d’un changement en traçant un diagramme d’effet."
  • Clôture du jour 2

Jour 3

  • Pattern : Extract Interface
    • Problème : une classe collabore avec une classe posant une dépendance extérieure
    • Solution : extraire une interface de la classe posant la dépendance
    • Autres patterns de rupture de dépendances extérieures
    • Exercice pratique : "Sur un code sélectionné dans vos projets, effectuer des tests de caractérisations, puis du refactoring, en utilisant la stratégie vue précédemment."
      • Débrief toutes les 25 minutes
  • Bilan et clôture de la session

Pour aller plus loin :

Type : Stage pratique en présentiel
Code formation : TDD02
Durée : 3 jours (21 heures)

Sessions inter-entreprises :

Tarif & dates intra-entreprise :
Devis sur demande
Nous Contacter