Mutation Testing

Testing 🔴 Senior

Dé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.
#testing#qualite#senior

← → au clavier pour passer d'une fiche à l'autre