13 Avr 2015

Dojo #17

Énoncé : Comment maîtriser en toute sécurité votre refacto ?

Pour ce dojo, nous avons invités les participants à mettre en place des tests de caractérisations dans le but de comprendre le fonctionnement du code et d’effectuer une refacto en toute sécurité et sans régressions.

Le sujet :

Yatzy (https://github.com/emilybache/Yatzy-Refactoring-Kata).
Le but est d’enchaîner les combinaisons à l’aide de cinq dés pour remporter un maximum de points.

Déroulement du dojo :

Dojo.MaitriserRefacto

Les équipes avait a leur disposition le sujet, sans les tests, le but était de mettre en place des tests de caractérisations avant la moindre modification du code.

Qu’est ce qu’un test de caractérisation ?

Un test de caractérisation est le moyen de décrire le comportement actuel d’un bout de code et donc de protéger celui ci de toute modification volontaires ou involontaires.
Le développeur peut donc s’assurer que les modifications qu’il a apporté au code, n’ont pas altérées le comportement de l’application.
Mettre en place des tests de caractérisations permet de fournir à l’application un harnais de tests dans le but de sécuriser toute refacto.

Je vous invite à lire un article très intéressant sur le sujet :  http://www.drdobbs.com/tools/change-code-without-fear/206105233

Technologies utilisées par les équipes :

  • C#
  • Javascript
  • Ruby
  • Python
  • Gherkin (BDD)

Débrief du dojo :

  • 10′ de présentation (avec présentation d’un test de caractérisation)
  • 80′ de code
  • 30′ de débrief

A retenir :

  • Faire une refacto sans avoir posé des tests de caractérisations n’est pas une solution correcte.
  • Les tests de caractérisations fournissent un harnais de tests qui sécurise l’application.
  • On comprend mieux le code.
  • On  peut refactoriser sans peur car on a des tests.
  • Le langage utilisé n’est pas un frein à la mise en place de tests.
Share
  • Kogratte

    Il est a noté qu’un test de caractérisation apporte un intérêt dés lors que l’application en question ne dispose pas déjà de tests.
    Il aide à comprendre et cerner le comportement du code, mais ne dispense néanmoins pas d’une lecture attentive, qui a mon sens apporte au moins autant.