refactoring avec 1,22% de code couvert par les tests ... golden master testing à la rescousse !

15
Refactoring avec 1,22% de code couvert par les tests … Golden Master Testing à la rescousse ! Human Talks Nantes - 9 décembre 2014 @sebprunier

Upload: sebastien-prunier

Post on 14-Jul-2015

393 views

Category:

Technology


0 download

TRANSCRIPT

Refactoring avec 1,22% de code couvert par les tests …

Golden Master Testing à la rescousse !

Human Talks Nantes - 9 décembre 2014@sebprunier

/me

Sébastien Prunier

Développeur chez SERLI

@sebprunier

http://blog.sebprunier.com

WTF ?

+ de 10000 lignes de code à refactorer

Très peu de tests unitaires

Seulement 1,22% de code couvert

Programme

Comment faire ? (1/2)

“Tester c’est douter”

Go go go ! Pas le temps d’écrire des tests !

Comment faire ? (2/2)

Tests Unitaires + Mocks

Base embarquée HSQLDB

Une solution

Golden Master Testing

Déterminer le comportement du programme

Exécuter avec un large jeu de données

Stocker les résultats

→ Gloden Master

Refactorer, exécuter et comparer au master

Jeu de données

Cool, il y a des recettes en cours !

Le test

Assertions (1/3)

Guava

TreeTraverser<File>

Assertions (2/3)

AssertJ

assertThat(refactoredFile).hasContentEqualTo(masterFile)

Assertions (3/3)

for (File masterFile : Files.fileTreeTraverser().preOrderTraversal(masterOutput)) {

File refactoredFile = new File( masterFile.getPath().replace( masterOutputPath, refactoredOutputPath ) ); assertThat(refactoredFile).exists();

if (masterFile.isFile()) { assertThat(refactoredFile).hasContentEqualTo(masterFile); }

}

Conclusion

Approche simple et efficace

Golden Master Test → couverture > 85%

The end

Merci !

Questions ?