SlideShare ist ein Scribd-Unternehmen logo
1 von 15
Downloaden Sie, um offline zu lesen
nantes.delia.tech
Mutation Testing
Avez-vous validé
la qualité de vos tests ?
Par Julien Braure
julien.braure@gmail.com
nantes.delia.tech
Julien Braure
julien.braure@gmail.com
https://www.linkedin.com/in/julienbraure
nantes.delia.tech/nous-rejoindre
@deliacademynantes.delia.tech
Sondage
01. Je compile et fais tourner mon code
avant livraison ?
Et je les améliore régulièrement
02. J'écris des tests automatisés ?
nombre de tests ?
nombre d'assertions ?
code coverage ?
03. Je regarde les métriques ?
nantes.delia.tech
Si les tests vérifient
la qualité du code …
… qui vérifie
la qualité des tests ?
“ “
Question entendue dans la tête de…
Frank – Développeur
Anne – Lead Développeuse
Pierre – Product Owner
Alice – MOA chez Client SARL
nantes.delia.tech
Oui et c’est facile à utiliser
Renseigne sur le nombre de
comparaisons effectuées par vos tests
C’est bien ?
Facile de se tromper
Encore faut-il comparer les bonnes
choses de la bonne manière
Plutôt (trop?) facile à contourner
Compare la réalité avec la théorie d’une manière spécifique
Assertion
Définitions
Mais attention …
nantes.delia.tech
Oui, et c’est facile à comprendre
Renseigne sur l'entrée de votre système
utilisée par vos test
Révèle les lignes de code non executées
C’est bien ?
Evitez le culte du 100% coverage
Ne renseigne pas sur la sortie de votre système…
… ni sur la qualité de vos tests
Du code executé n’est pas du code testé
Pourcentage de lignes de code qui ont été executées pendant les tests
Code coverage
Définitions
Mais attention …
nantes.delia.tech
Oui, il faut savoir rester humble
L’erreur est humaine, et on apprend de
nos erreurs
C’est bien ?
Aux autres #vivreensemble
Sentiment qui peut être blesser par la pratique du Mutation Testing
Confiance en soi
Définitions
Mais attention …
nantes.delia.tech
Ne faites jamais confiance à
un test que vous n'avez pas vu
échouer…
Mais ça teste rien ce truc … (╯°□°)╯︵ ┻━┻
Un.e développeur.se, quelque part, dans quelques secondes
“ “
@deliacademynantes.delia.tech
MutationTesting
Ingrédients
• Du code
• Des tests
Préchauffer vos tests à 180°C pour vérifier qu’ils passent
1. Modifier le code original à 1 endroit (et 1 seul)
Félicitations, vous avez crée un Mutant
2. Executer les tests jusqu’au 1er échec
• Echec: Bonne nouvelle votre Mutant a été tué 
• Succes: Fuyez, votre Mutant s’est échappé 
Répéter avec une nouvelle modification
Recette
originally proposed by Richard Lipton
as a student in 1971
nantes.delia.tech
Mutation Testing : Mutators
Name Original Mutated
Visibility public function ... protected function ..
Plus + -
Minus - +
IntegerNegation return (Any Integer); return -(Any Integer);
Conditional < <=
CloneRemoval clone (new stdClass()) new stdClass()
ArrayItem [‘a’ => $b->bar] [‘a’ > $b->bar]
TrueValue true false
Break_ break; continue;
https://infection.github.io/guide/mutators.html
nantes.delia.tech
PHP
• Infection https://infection.github.io
JAVA
• PIT https://pitest.org
• Javalanche http://www.javalanche.org
Python
• Mutmut https://pypi.org/project/mutmut
Ruby
• Mutant https://github.com/mbj/mutant
C#
• NinjaTurtles http://www.mutation-testing.net
Mutation Testing : Outils
nantes.delia.tech
<?= "Démo" ?>
nantes.delia.tech
En résumé
Testing Mutation Testing
Valide la qualité Du code Des tests
Exécution Unique Répétée
Cible Tous les tests passent Au moins 1 test échoue
Métriques Coverage, Assertions Mutation Score Indicator (MSI)
nantes.delia.tech
Conclusion
Le Mutation Testing est un outil
• Complémentaire
• Qui fourni une métrique convainquante sur la qualité des tests
• Très facile à mettre en place
• Intéressant pour plusieurs profils
• technique: usage régulier ou lors de la reprise d'un projet
• fonctionnel: évaluer la pertinence de tests produits par vos équipes, votre fournisseur, …
Le principal coût de cet outil est le temps qu’il requiert pour s’exécuter.
nantes.delia.tech
Des questions ?

Weitere ähnliche Inhalte

Ähnlich wie AFUP Day 2020 Nantes - Mutation Testing

Présentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisésPrésentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisésDjamel Zouaoui
 
Le test n'est pas (qu')une histoire - agile france 2016
Le test n'est pas (qu')une histoire - agile france 2016Le test n'est pas (qu')une histoire - agile france 2016
Le test n'est pas (qu')une histoire - agile france 2016Clément Rochas
 
2019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.1
2019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.12019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.1
2019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.1TelecomValley
 
Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?CGI Québec Formation
 
Les Code Reviews : le guide de survie
Les Code Reviews : le guide de survieLes Code Reviews : le guide de survie
Les Code Reviews : le guide de survieNicolas VERINAUD
 
Test driven development v0.2 20121221
Test driven development v0.2 20121221Test driven development v0.2 20121221
Test driven development v0.2 20121221Frédéric Delorme
 
Radical Quality From Toyota to Tech - Devoxx France.pptx
Radical Quality From Toyota to Tech - Devoxx France.pptxRadical Quality From Toyota to Tech - Devoxx France.pptx
Radical Quality From Toyota to Tech - Devoxx France.pptxFlavian Hautbois
 
Softshake 2015 comment tester et optimiser la performance d'un si
Softshake 2015   comment tester et optimiser la performance d'un siSoftshake 2015   comment tester et optimiser la performance d'un si
Softshake 2015 comment tester et optimiser la performance d'un siMarc Bojoly
 
On a testé pour vous…
On a testé pour vous…On a testé pour vous…
On a testé pour vous…Nicolas Ledez
 
Lightning talk meetup SWC : Pyramide des tests - épisode 2
Lightning talk meetup SWC : Pyramide des tests - épisode 2Lightning talk meetup SWC : Pyramide des tests - épisode 2
Lightning talk meetup SWC : Pyramide des tests - épisode 2Damien Beaufils
 
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
 
Une architecture agile et testable
Une architecture agile et testableUne architecture agile et testable
Une architecture agile et testablemartinsson
 
2010 agile conférence - Comment vendre les tests automatisés
2010 agile conférence - Comment vendre les tests automatisés2010 agile conférence - Comment vendre les tests automatisés
2010 agile conférence - Comment vendre les tests automatisésNathaniel Richand
 
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...DC CONSULTANTS
 
Strategie de test à agile tour bordeaux
Strategie de test à agile tour bordeauxStrategie de test à agile tour bordeaux
Strategie de test à agile tour bordeauxNicolas Fédou
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logicielsSylvain Leroy
 
Meetup aws user group lille 2018 chaos engineering
Meetup aws user group lille 2018   chaos engineeringMeetup aws user group lille 2018   chaos engineering
Meetup aws user group lille 2018 chaos engineeringBenjamin Gakic
 

Ähnlich wie AFUP Day 2020 Nantes - Mutation Testing (20)

Présentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisésPrésentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisés
 
Le test n'est pas (qu')une histoire - agile france 2016
Le test n'est pas (qu')une histoire - agile france 2016Le test n'est pas (qu')une histoire - agile france 2016
Le test n'est pas (qu')une histoire - agile france 2016
 
Et si on jouait au tdd 20131017
Et si on jouait au tdd 20131017Et si on jouait au tdd 20131017
Et si on jouait au tdd 20131017
 
2019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.1
2019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.12019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.1
2019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.1
 
Le pilotage par les tests
Le pilotage par les testsLe pilotage par les tests
Le pilotage par les tests
 
Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?
 
Les Code Reviews : le guide de survie
Les Code Reviews : le guide de survieLes Code Reviews : le guide de survie
Les Code Reviews : le guide de survie
 
Test driven development v0.2 20121221
Test driven development v0.2 20121221Test driven development v0.2 20121221
Test driven development v0.2 20121221
 
Radical Quality From Toyota to Tech - Devoxx France.pptx
Radical Quality From Toyota to Tech - Devoxx France.pptxRadical Quality From Toyota to Tech - Devoxx France.pptx
Radical Quality From Toyota to Tech - Devoxx France.pptx
 
Softshake 2015 comment tester et optimiser la performance d'un si
Softshake 2015   comment tester et optimiser la performance d'un siSoftshake 2015   comment tester et optimiser la performance d'un si
Softshake 2015 comment tester et optimiser la performance d'un si
 
On a testé pour vous…
On a testé pour vous…On a testé pour vous…
On a testé pour vous…
 
Lightning talk meetup SWC : Pyramide des tests - épisode 2
Lightning talk meetup SWC : Pyramide des tests - épisode 2Lightning talk meetup SWC : Pyramide des tests - épisode 2
Lightning talk meetup SWC : Pyramide des tests - épisode 2
 
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
 
Une architecture agile et testable
Une architecture agile et testableUne architecture agile et testable
Une architecture agile et testable
 
2010 agile conférence - Comment vendre les tests automatisés
2010 agile conférence - Comment vendre les tests automatisés2010 agile conférence - Comment vendre les tests automatisés
2010 agile conférence - Comment vendre les tests automatisés
 
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
Webinar TDD / BDD : Comment mieux délivrer et s'entendre pour le Product Owne...
 
Strategie de test à agile tour bordeaux
Strategie de test à agile tour bordeauxStrategie de test à agile tour bordeaux
Strategie de test à agile tour bordeaux
 
Du Code & Des Humains
Du Code & Des HumainsDu Code & Des Humains
Du Code & Des Humains
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
Meetup aws user group lille 2018 chaos engineering
Meetup aws user group lille 2018   chaos engineeringMeetup aws user group lille 2018   chaos engineering
Meetup aws user group lille 2018 chaos engineering
 

AFUP Day 2020 Nantes - Mutation Testing

  • 1. nantes.delia.tech Mutation Testing Avez-vous validé la qualité de vos tests ? Par Julien Braure julien.braure@gmail.com
  • 3. @deliacademynantes.delia.tech Sondage 01. Je compile et fais tourner mon code avant livraison ? Et je les améliore régulièrement 02. J'écris des tests automatisés ? nombre de tests ? nombre d'assertions ? code coverage ? 03. Je regarde les métriques ?
  • 4. nantes.delia.tech Si les tests vérifient la qualité du code … … qui vérifie la qualité des tests ? “ “ Question entendue dans la tête de… Frank – Développeur Anne – Lead Développeuse Pierre – Product Owner Alice – MOA chez Client SARL
  • 5. nantes.delia.tech Oui et c’est facile à utiliser Renseigne sur le nombre de comparaisons effectuées par vos tests C’est bien ? Facile de se tromper Encore faut-il comparer les bonnes choses de la bonne manière Plutôt (trop?) facile à contourner Compare la réalité avec la théorie d’une manière spécifique Assertion Définitions Mais attention …
  • 6. nantes.delia.tech Oui, et c’est facile à comprendre Renseigne sur l'entrée de votre système utilisée par vos test Révèle les lignes de code non executées C’est bien ? Evitez le culte du 100% coverage Ne renseigne pas sur la sortie de votre système… … ni sur la qualité de vos tests Du code executé n’est pas du code testé Pourcentage de lignes de code qui ont été executées pendant les tests Code coverage Définitions Mais attention …
  • 7. nantes.delia.tech Oui, il faut savoir rester humble L’erreur est humaine, et on apprend de nos erreurs C’est bien ? Aux autres #vivreensemble Sentiment qui peut être blesser par la pratique du Mutation Testing Confiance en soi Définitions Mais attention …
  • 8. nantes.delia.tech Ne faites jamais confiance à un test que vous n'avez pas vu échouer… Mais ça teste rien ce truc … (╯°□°)╯︵ ┻━┻ Un.e développeur.se, quelque part, dans quelques secondes “ “
  • 9. @deliacademynantes.delia.tech MutationTesting Ingrédients • Du code • Des tests Préchauffer vos tests à 180°C pour vérifier qu’ils passent 1. Modifier le code original à 1 endroit (et 1 seul) Félicitations, vous avez crée un Mutant 2. Executer les tests jusqu’au 1er échec • Echec: Bonne nouvelle votre Mutant a été tué  • Succes: Fuyez, votre Mutant s’est échappé  Répéter avec une nouvelle modification Recette originally proposed by Richard Lipton as a student in 1971
  • 10. nantes.delia.tech Mutation Testing : Mutators Name Original Mutated Visibility public function ... protected function .. Plus + - Minus - + IntegerNegation return (Any Integer); return -(Any Integer); Conditional < <= CloneRemoval clone (new stdClass()) new stdClass() ArrayItem [‘a’ => $b->bar] [‘a’ > $b->bar] TrueValue true false Break_ break; continue; https://infection.github.io/guide/mutators.html
  • 11. nantes.delia.tech PHP • Infection https://infection.github.io JAVA • PIT https://pitest.org • Javalanche http://www.javalanche.org Python • Mutmut https://pypi.org/project/mutmut Ruby • Mutant https://github.com/mbj/mutant C# • NinjaTurtles http://www.mutation-testing.net Mutation Testing : Outils
  • 13. nantes.delia.tech En résumé Testing Mutation Testing Valide la qualité Du code Des tests Exécution Unique Répétée Cible Tous les tests passent Au moins 1 test échoue Métriques Coverage, Assertions Mutation Score Indicator (MSI)
  • 14. nantes.delia.tech Conclusion Le Mutation Testing est un outil • Complémentaire • Qui fourni une métrique convainquante sur la qualité des tests • Très facile à mettre en place • Intéressant pour plusieurs profils • technique: usage régulier ou lors de la reprise d'un projet • fonctionnel: évaluer la pertinence de tests produits par vos équipes, votre fournisseur, … Le principal coût de cet outil est le temps qu’il requiert pour s’exécuter.