3) Let's kill some mutants
Prendre quelques instants pour découvrir la page Mutation Testing.
Durant cette étape:
Lancer
strykerAnalyser les mutants survivants
Tuerautant de mutants que possible (atteindre un score de mutation d'au moins 90%)

Différents mutants
Stryker parvient à muter des string dans le code de production et ce changement n'est détecté par aucun test.
C'est le cas pour 2 classes : ChasseurInconnu et PartieDeChasseService.


Celà fait-il du sens de vérifier ce genre de strings depuis nos tests?
Stryker parvient à supprimer certains blocs de code, tels que :
Ajout d'événements dans l'aggrégat PartieDeChasse
PartieDeChasse
Sauvegarde via repository

Stryker parvient à changer certaines expressions LinQ.

Tuer les mutants
Tuer les mutantsChasseurInconnu
On ajoute l'assertion du message métier dans les tests en repartant des tests listés dans le rapport de stryker:
On peut alors relancer stryker, notre score de mutation passe de 79.03% à 79.84%... on a encore du boulot mais on avance.
PartieDeChasseService
On doit ajouter la vérification d'événements et de sauvegarde de la partie de chasse dans nos tests.
🔴 Nous avons un problème avec la gestion du temps ici...
🟢 Nous changeons la manière dont on gère le temps dans ce test. Le score de mutation monte alors à 82.26%.
On continue à tuer les autres mutants "similaires".
🔵 On a de la duplication dans les assertions, on en profite alors pour les mutualiser.
Après être repassé sur tous les tests et amélioré les assertions nous avons un score de mutation de 96.72%.
LinQ mutation
Ces mutations sont un peu particulières dans notre cas :
De plus, en intégrant le mutant dans le code de production celui-ci ne compile plus...
On va changer le code de production afin de faire en sorte que ce mutant ne puisse plus être généré :
On répète la même stratégie pour les autres mutations jusqu'à atteindre 100% en score de mutation 👍.
Nouveau rapport SonarCloud disponible ici.
Reflect
Pour créer de bons tests, il est important de toujours se concentrer sur l'écriture de bonnes assertions et encore mieux développer en utilisant T.D.D.
Lorsqu'on écrit des tests (a priori ou posteriori), il est important d'avoir en tête certains principes tels que les Test Desiderata.

Last updated
Was this helpful?