Mutation Testing
Testing 🔴 SeniorDefinition
Technique qui modifie volontairement le code source (mutations) pour verifier que les tests detectent bien ces changements. Si un mutant survit, les tests sont insuffisants.
Analogie
Comme verifier qu'un detecteur de fumee fonctionne en allumant une petite flamme : s'il ne sonne pas, il est defaillant.
Exemple de code
// Stryker mutation testing
// Original: return a + b;
// Mutant 1: return a - b; // test doit echouer
// Mutant 2: return a * b; // test doit echouer
// Si un mutant SURVIT => test manquant
// npx stryker run
Cas d'usage
Pour evaluer la qualite reelle des tests au-dela du simple code coverage qui peut donner un faux sentiment de securite.
Anti-pattern
Viser 100% de mutants tues, ce qui est extremement couteux en temps pour un gain marginal.