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.
11. Test de mutations
Tests de mutations
Le principe d’un test
@Test“data1”
“data2”
Assert(“Hello data1”)
@Test Assert(“Hello data2”)
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. Pitest
Tests de mutations
Un simple plugin maven
<plugin>
<groupId>org.pitest</groupId>
<artifactId>pitest-maven</artifactId>
<version>LATEST</version>
</plugin>
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
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. 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. 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. 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