Mutation Testing
Testing 🔴 SeniorDéfinition
Technique qui modifie volontairement le code source (mutations) pour vérifier que les tests détectent bien ces changements. Si un mutant survit, les tests sont insuffisants.
Analogie
Comme vérifier qu'un détecteur de fumée fonctionne en allumant une petite flamme : s'il ne sonne pas, il est défaillant.
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 évaluer la qualité réelle des tests au-delà du simple code coverage qui peut donner un faux sentiment de sécurité.
Anti-pattern
Viser 100% de mutants tues, ce qui est extrêmement coûteux en temps pour un gain marginal.