Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
Mutation testing
Ou évaluer l’efficacité de vos tests !
Tests de mutations
Qu’est-ce qu’un bon test?
@Test
@Test
@Test
@Test @Test
@TestKO
OK @Test
Tests de mutations
Qu’est-ce qu’un bon test
Un test qui passe toujours ?
?
OK @Test
OK @Test
OK @Test
Tests de mutations
Qu’est-ce qu’un bon test
… Si le test passe ?
?OK @Test
@Test
?
@Test
Tests de mutations
Qu’est-ce qu’un bon test ?
… Si le test échoue ?
@TestKO
@Test
@Test
1)
2)
3)
4) REFACTOR
5) REPEAT
TDD
Tests de mutations
Une méthode ou une métrique?
@TestKO
OK @Test
Couverture de code
Tests de mutations
Une métrique fiable & accessible ?
OK @Test
Assert?
Assert(alwaysTrue)
Assert(someth...
Tests de mutations
Mutation testing
Une métrique efficace de mesure de la qualité d’un jeu de test
@Test( )
Tests de mutations
Mutation : un bug ou presque
Une anomalie… dont vous contrôlez la présence
Tests de mutations
Mutation : un bug ou presque
Une anomalie… dont vous contrôlez la présence
Test de mutations
Tests de mutations
Le principe d’un test
@Test“data1”
“data2”
Assert(“Hello data1”)
@Test Assert(“Hello ...
Test de mutations
Tests de mutations
Le principe d’un test de test : Testons nos tests !
MUTATION KILLED
@TestKO
OK @Test@...
Pitest
Tests de mutations
Un simple plugin maven
<plugin>
<groupId>org.pitest</groupId>
<artifactId>pitest-maven</artifact...
MUTATION KILLED
Tests de mutations
Tests de mutations
Une couverture du code “assertée”, et non plus juste “exécutée”
Surv...
Pitest
Tests de mutations
Vérifier que les tests sont capables d’échouer en cas de bug
DEMO !
Pitest
Tests de mutations
Vérifier que les tests sont capables d’échouer en cas de bug
REX !
Pitest
Tests de mutations
Takeaways
▼ Tests de mutations, pour une couverture fiable du code asserté par les tests
▼ pites...
Pitest
Tests de mutations
De solides avantages
Une couverture du code “assertée”, pas juste vérifiée
Difficile à tromper
C...
Pitest
Tests de mutations
Quelques inconvénients:
Calcul également les mutations pour le code généré
Long
Beaucoup de donn...
Calcul également les mutations pour le code généré
Long
Beaucoup de données à lire
Uniquement pour les tests unitaires “no...
Mutation testing
extensions disponible ici: https://github.com/sarahBuisson/pitest-extensions
Prochain SlideShare
Chargement dans…5
×

XebiCon'17 : Mutation testing, ou évaluer l’efficacité de vos tests ! - Sarah Buisson

136 vues

Publié le

Rares sont les projets sans tests unitaires. Mais votre couverture de tests est-elle vraiment pertinente?
Avec Pitest, les tests de mutations vont vous permettre de valider l’efficacité de vos tests.

Publié dans : Technologie
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

XebiCon'17 : Mutation testing, ou évaluer l’efficacité de vos tests ! - Sarah Buisson

  1. 1. Mutation testing Ou évaluer l’efficacité de vos tests !
  2. 2. Tests de mutations Qu’est-ce qu’un bon test? @Test @Test @Test @Test @Test @TestKO OK @Test
  3. 3. Tests de mutations Qu’est-ce qu’un bon test Un test qui passe toujours ? ? OK @Test OK @Test OK @Test
  4. 4. Tests de mutations Qu’est-ce qu’un bon test … Si le test passe ? ?OK @Test @Test ? @Test
  5. 5. Tests de mutations Qu’est-ce qu’un bon test ? … Si le test échoue ? @TestKO @Test @Test
  6. 6. 1) 2) 3) 4) REFACTOR 5) REPEAT TDD Tests de mutations Une méthode ou une métrique? @TestKO OK @Test
  7. 7. Couverture de code Tests de mutations Une métrique fiable & accessible ? OK @Test Assert? Assert(alwaysTrue) Assert(somethingElse)
  8. 8. Tests de mutations Mutation testing Une métrique efficace de mesure de la qualité d’un jeu de test @Test( )
  9. 9. Tests de mutations Mutation : un bug ou presque Une anomalie… dont vous contrôlez la présence
  10. 10. Tests de mutations Mutation : un bug ou presque Une anomalie… dont vous contrôlez la présence
  11. 11. Test de mutations Tests de mutations Le principe d’un test @Test“data1” “data2” Assert(“Hello data1”) @Test Assert(“Hello data2”)
  12. 12. Test de mutations Tests de mutations Le principe d’un test de test : Testons nos tests ! MUTATION KILLED @TestKO OK @Test@Test @Test
  13. 13. Pitest Tests de mutations Un simple plugin maven <plugin> <groupId>org.pitest</groupId> <artifactId>pitest-maven</artifactId> <version>LATEST</version> </plugin>
  14. 14. MUTATION KILLED Tests de mutations Tests de mutations Une couverture du code “assertée”, et non plus juste “exécutée” Survived ! cover uncover @TestKO OK @Test @Test @Test
  15. 15. Pitest Tests de mutations Vérifier que les tests sont capables d’échouer en cas de bug DEMO !
  16. 16. Pitest Tests de mutations Vérifier que les tests sont capables d’échouer en cas de bug REX !
  17. 17. Pitest Tests de mutations Takeaways ▼ Tests de mutations, pour une couverture fiable du code asserté par les tests ▼ pitest-maven-plugin ▼ Diverses extensions disponibles pour une meilleure prise en main (sonar, cucumber, pull-request, annotations...) ▼ Exemples de code et extensions ici : https://github.com/sarahBuisson
  18. 18. Pitest Tests de mutations De solides avantages Une couverture du code “assertée”, pas juste vérifiée Difficile à tromper Customisable Mutations majoritairement centrées sur les parties “logique & metier” du code Un rapport clair et efficace
  19. 19. Pitest Tests de mutations Quelques inconvénients: Calcul également les mutations pour le code généré Long Beaucoup de données à lire Uniquement pour les tests unitaires “normaux” Pas une baguette magique
  20. 20. Calcul également les mutations pour le code généré Long Beaucoup de données à lire Uniquement pour les tests unitaires “normaux” pas une baguette magique Pitest Tests de mutations Quelques inconvénients … mais des possibilités d’extension <plugin> <groupId>org.pitest</groupId> <artifactId>pitest-maven</artifactId> ... <dependencies> <dependency> <groupId>com.github.sarahbuisson</groupId> <artifactId>pitest-scm-extension</artifactId> <version>LATEST</version> </dependency> <dependency> <groupId>org.sbuisson</groupId> <artifactId>pitest-generated-extension</artifactId> <version>LATEST</version> </dependency> </plugin> extensions disponible ici: https://github.com/sarahBuisson/pitest-extensions
  21. 21. Mutation testing extensions disponible ici: https://github.com/sarahBuisson/pitest-extensions

×