SlideShare ist ein Scribd-Unternehmen logo
1 von 15
Downloaden Sie, um offline zu lesen
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 ?
Liens 
● http://blog.sebprunier.com/code/testing/golden-master-testing-refactoring/ 
● https://github.com/google/guava 
● http://joel-costigliola.github.io/assertj/ 
● https://plus.google.com/+TheSimpsons

Weitere ähnliche Inhalte

Andere mochten auch

Dia del amor y la amistad
Dia del amor y la amistadDia del amor y la amistad
Dia del amor y la amistadDani Alvarez
 
Presentació Comunicació Empresarial
Presentació Comunicació EmpresarialPresentació Comunicació Empresarial
Presentació Comunicació EmpresarialAnna Roca
 
Présentation d'Elvis
Présentation d'ElvisPrésentation d'Elvis
Présentation d'ElvisTeresaSousa
 
Présentation staff 2013
Présentation staff 2013Présentation staff 2013
Présentation staff 2013kparticu
 
Microsoft power point csc ios xr feb2014-ppt
Microsoft power point   csc ios xr feb2014-pptMicrosoft power point   csc ios xr feb2014-ppt
Microsoft power point csc ios xr feb2014-pptJoseph Sager
 
nature duale dignité / dual nature of dignity
nature duale dignité / dual nature of dignitynature duale dignité / dual nature of dignity
nature duale dignité / dual nature of dignityJan-Cedric Hansen
 
Presentación overlight
Presentación overlightPresentación overlight
Presentación overlightSilenceteam
 
Offre Dooblecare Salariés
Offre Dooblecare SalariésOffre Dooblecare Salariés
Offre Dooblecare SalariésMartin Guichard
 
Material didactico virtual
Material didactico virtualMaterial didactico virtual
Material didactico virtualsylviaoyarce
 
Material didactico virtual
Material didactico virtualMaterial didactico virtual
Material didactico virtualsylviaoyarce
 

Andere mochten auch (20)

Dia del amor y la amistad
Dia del amor y la amistadDia del amor y la amistad
Dia del amor y la amistad
 
Parashá 26 “shimini” octavo
Parashá 26 “shimini” octavoParashá 26 “shimini” octavo
Parashá 26 “shimini” octavo
 
Presentació Comunicació Empresarial
Presentació Comunicació EmpresarialPresentació Comunicació Empresarial
Presentació Comunicació Empresarial
 
Présentation d'Elvis
Présentation d'ElvisPrésentation d'Elvis
Présentation d'Elvis
 
Présentation staff 2013
Présentation staff 2013Présentation staff 2013
Présentation staff 2013
 
Porque te quejas ver.03
Porque te quejas ver.03Porque te quejas ver.03
Porque te quejas ver.03
 
Presentation1
Presentation1Presentation1
Presentation1
 
Microsoft power point csc ios xr feb2014-ppt
Microsoft power point   csc ios xr feb2014-pptMicrosoft power point   csc ios xr feb2014-ppt
Microsoft power point csc ios xr feb2014-ppt
 
nature duale dignité / dual nature of dignity
nature duale dignité / dual nature of dignitynature duale dignité / dual nature of dignity
nature duale dignité / dual nature of dignity
 
como crear una cuenta en youtube
como crear una cuenta en youtubecomo crear una cuenta en youtube
como crear una cuenta en youtube
 
Presentación overlight
Presentación overlightPresentación overlight
Presentación overlight
 
Ccaa
CcaaCcaa
Ccaa
 
Led
LedLed
Led
 
Offre Dooblecare Salariés
Offre Dooblecare SalariésOffre Dooblecare Salariés
Offre Dooblecare Salariés
 
Material didactico virtual
Material didactico virtualMaterial didactico virtual
Material didactico virtual
 
Residuos
ResiduosResiduos
Residuos
 
Lengua
LenguaLengua
Lengua
 
Material didactico virtual
Material didactico virtualMaterial didactico virtual
Material didactico virtual
 
Neumonias iiaps bronquiolitis[Dr Folco]
Neumonias iiaps bronquiolitis[Dr Folco]Neumonias iiaps bronquiolitis[Dr Folco]
Neumonias iiaps bronquiolitis[Dr Folco]
 
Tema 5
Tema 5Tema 5
Tema 5
 

Ähnlich wie Refactoring avec 1,22% de code couvert par les tests ... Golden Master testing à la rescousse !

Test unitaires - refactoring - clean code
Test unitaires - refactoring - clean codeTest unitaires - refactoring - clean code
Test unitaires - refactoring - clean codeHadrien Blanc
 
Darwin appliqué à LabVIEW : l’évolution de la gestion des données
Darwin appliqué à LabVIEW : l’évolution de la gestion des donnéesDarwin appliqué à LabVIEW : l’évolution de la gestion des données
Darwin appliqué à LabVIEW : l’évolution de la gestion des donnéesLuc Desruelle
 
Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Elapse Technologies
 
AT2010 Principes Integration Continue
AT2010 Principes Integration ContinueAT2010 Principes Integration Continue
AT2010 Principes Integration ContinueNormandy JUG
 
Formation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifFormation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifkemenaran
 
BBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetBBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetOlivier BAZOUD
 
Techniques de programmation avancée LabVIEW : gestion des données de la local...
Techniques de programmation avancée LabVIEW : gestion des données de la local...Techniques de programmation avancée LabVIEW : gestion des données de la local...
Techniques de programmation avancée LabVIEW : gestion des données de la local...Luc Desruelle
 
Integration continue - Introduction
Integration continue - IntroductionIntegration continue - Introduction
Integration continue - IntroductionOlivier ETIENNE
 
Deployer en continu, Benoît Lafontaine, USIEVENT 2013
Deployer en continu, Benoît Lafontaine, USIEVENT 2013Deployer en continu, Benoît Lafontaine, USIEVENT 2013
Deployer en continu, Benoît Lafontaine, USIEVENT 2013Benoît Lafontaine
 
Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...
Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...
Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...fdussert
 
ça marchait pourtant en dev
ça marchait pourtant en devça marchait pourtant en dev
ça marchait pourtant en devOlivier Doucet
 
Développement en méthode agile
Développement en méthode agileDéveloppement en méthode agile
Développement en méthode agilelaurent bristiel
 
Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2Christophe Rochefolle
 
ALT.Net Juin 2012 - Specflow
ALT.Net Juin 2012 - SpecflowALT.Net Juin 2012 - Specflow
ALT.Net Juin 2012 - SpecflowMathias Kluba
 
Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)Jérôme Tamborini
 
Sonar 2.0 au GenevaJUG par Freddy Mallet
Sonar 2.0 au GenevaJUG par Freddy MalletSonar 2.0 au GenevaJUG par Freddy Mallet
Sonar 2.0 au GenevaJUG par Freddy MalletGenevaJUG
 

Ähnlich wie Refactoring avec 1,22% de code couvert par les tests ... Golden Master testing à la rescousse ! (20)

Test unitaires - refactoring - clean code
Test unitaires - refactoring - clean codeTest unitaires - refactoring - clean code
Test unitaires - refactoring - clean code
 
Tour d'horizon des tests
Tour d'horizon des testsTour d'horizon des tests
Tour d'horizon des tests
 
Darwin appliqué à LabVIEW : l’évolution de la gestion des données
Darwin appliqué à LabVIEW : l’évolution de la gestion des donnéesDarwin appliqué à LabVIEW : l’évolution de la gestion des données
Darwin appliqué à LabVIEW : l’évolution de la gestion des données
 
Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29Retour d'expérience TAA - 2011/03/29
Retour d'expérience TAA - 2011/03/29
 
AT2010 Principes Integration Continue
AT2010 Principes Integration ContinueAT2010 Principes Integration Continue
AT2010 Principes Integration Continue
 
Formation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifFormation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratif
 
BBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - PuppetBBL - TDD pour les DevOps - Puppet
BBL - TDD pour les DevOps - Puppet
 
Techniques de programmation avancée LabVIEW : gestion des données de la local...
Techniques de programmation avancée LabVIEW : gestion des données de la local...Techniques de programmation avancée LabVIEW : gestion des données de la local...
Techniques de programmation avancée LabVIEW : gestion des données de la local...
 
Anatomie du test
Anatomie du testAnatomie du test
Anatomie du test
 
Integration continue - Introduction
Integration continue - IntroductionIntegration continue - Introduction
Integration continue - Introduction
 
Deployer en continu, Benoît Lafontaine, USIEVENT 2013
Deployer en continu, Benoît Lafontaine, USIEVENT 2013Deployer en continu, Benoît Lafontaine, USIEVENT 2013
Deployer en continu, Benoît Lafontaine, USIEVENT 2013
 
Drools et les moteurs de règles
Drools et les moteurs de règlesDrools et les moteurs de règles
Drools et les moteurs de règles
 
Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...
Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...
Atoum, le framework de tests unitaires pour PHP 5.3 simple, moderne et intuit...
 
ça marchait pourtant en dev
ça marchait pourtant en devça marchait pourtant en dev
ça marchait pourtant en dev
 
Développement en méthode agile
Développement en méthode agileDéveloppement en méthode agile
Développement en méthode agile
 
Audits php
Audits phpAudits php
Audits php
 
Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2
 
ALT.Net Juin 2012 - Specflow
ALT.Net Juin 2012 - SpecflowALT.Net Juin 2012 - Specflow
ALT.Net Juin 2012 - Specflow
 
Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)Back to the future of java (from 8 to 11 and beyond)
Back to the future of java (from 8 to 11 and beyond)
 
Sonar 2.0 au GenevaJUG par Freddy Mallet
Sonar 2.0 au GenevaJUG par Freddy MalletSonar 2.0 au GenevaJUG par Freddy Mallet
Sonar 2.0 au GenevaJUG par Freddy Mallet
 

Mehr von Sébastien Prunier

De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...
De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...
De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...Sébastien Prunier
 
De votre idée géniale à votre Minimum Viable Product - Rencontres National...
De votre idée géniale à votre Minimum Viable Product - Rencontres National...De votre idée géniale à votre Minimum Viable Product - Rencontres National...
De votre idée géniale à votre Minimum Viable Product - Rencontres National...Sébastien Prunier
 
MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?Sébastien Prunier
 
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?Sébastien Prunier
 
MongoDB Aggregation Framework in action !
MongoDB Aggregation Framework in action !MongoDB Aggregation Framework in action !
MongoDB Aggregation Framework in action !Sébastien Prunier
 
Nantes JUG - Les News - 2013-10-10
Nantes JUG - Les News - 2013-10-10Nantes JUG - Les News - 2013-10-10
Nantes JUG - Les News - 2013-10-10Sébastien Prunier
 
JugSummerCamp 2013 - Un backend NoSQL pour Geektic avec MongoDB
JugSummerCamp 2013 - Un backend NoSQL pour Geektic avec MongoDBJugSummerCamp 2013 - Un backend NoSQL pour Geektic avec MongoDB
JugSummerCamp 2013 - Un backend NoSQL pour Geektic avec MongoDBSébastien Prunier
 
Nantes JUG - Traçabilité dans une architecture distribuée avec Node.js et Mon...
Nantes JUG - Traçabilité dans une architecture distribuée avec Node.js et Mon...Nantes JUG - Traçabilité dans une architecture distribuée avec Node.js et Mon...
Nantes JUG - Traçabilité dans une architecture distribuée avec Node.js et Mon...Sébastien Prunier
 
Add BPM to your business applications with Bonita Open Solution - JugSummerCa...
Add BPM to your business applications with Bonita Open Solution - JugSummerCa...Add BPM to your business applications with Bonita Open Solution - JugSummerCa...
Add BPM to your business applications with Bonita Open Solution - JugSummerCa...Sébastien Prunier
 

Mehr von Sébastien Prunier (10)

De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...
De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...
De votre idée géniale à votre Minimum Viable Product - Café Techno Niort ...
 
De votre idée géniale à votre Minimum Viable Product - Rencontres National...
De votre idée géniale à votre Minimum Viable Product - Rencontres National...De votre idée géniale à votre Minimum Viable Product - Rencontres National...
De votre idée géniale à votre Minimum Viable Product - Rencontres National...
 
MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?
 
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
 
MongoDB Aggregation Framework in action !
MongoDB Aggregation Framework in action !MongoDB Aggregation Framework in action !
MongoDB Aggregation Framework in action !
 
Nantes JUG - Les News - 2013-10-10
Nantes JUG - Les News - 2013-10-10Nantes JUG - Les News - 2013-10-10
Nantes JUG - Les News - 2013-10-10
 
JugSummerCamp 2013 - Un backend NoSQL pour Geektic avec MongoDB
JugSummerCamp 2013 - Un backend NoSQL pour Geektic avec MongoDBJugSummerCamp 2013 - Un backend NoSQL pour Geektic avec MongoDB
JugSummerCamp 2013 - Un backend NoSQL pour Geektic avec MongoDB
 
Nantes JUG - Traçabilité dans une architecture distribuée avec Node.js et Mon...
Nantes JUG - Traçabilité dans une architecture distribuée avec Node.js et Mon...Nantes JUG - Traçabilité dans une architecture distribuée avec Node.js et Mon...
Nantes JUG - Traçabilité dans une architecture distribuée avec Node.js et Mon...
 
Add BPM to your business applications with Bonita Open Solution - JugSummerCa...
Add BPM to your business applications with Bonita Open Solution - JugSummerCa...Add BPM to your business applications with Bonita Open Solution - JugSummerCa...
Add BPM to your business applications with Bonita Open Solution - JugSummerCa...
 
Nantes Jug - Java 7
Nantes Jug - Java 7Nantes Jug - Java 7
Nantes Jug - Java 7
 

Refactoring avec 1,22% de code couvert par les tests ... Golden Master testing à la rescousse !