Retour au glossaire
Testing

Tests de Mutation

Une technique pour évaluer la qualité des tests en introduisant de petits changements (mutations) dans le code et en vérifiant si les tests les détectent. Les mutations non détectées indiquent des tests faibles.

Definition

Les tests de mutation créent des "mutants" — des copies du code avec de petits changements comme inverser des opérateurs (> en <), supprimer des déclarations ou changer des valeurs de retour. Les bons tests devraient échouer lors de l'exécution contre des mutants (les "tuer"). Les mutants survivants révèlent des lacunes dans la couverture de tests ou les assertions. Les outils incluent Stryker (JavaScript/TypeScript), PIT (Java) et mutmut (Python). Mutation score = mutants tués / total des mutants.

Pourquoi c'est important

La couverture de code peut être élevée tandis que les tests restent faibles (ex. tests qui exercent le code sans vérifier les résultats). Les tests de mutation mesurent l'efficacité réelle des tests. La recherche montre que les tests de mutation trouvent 2-4 fois plus de défauts que les tests basés sur la couverture.

Exemple

Code: if (age >= 18) return true. Un mutant change >= en >. Si les tests ne le détectent pas (tous les utilisateurs de test sont >18, aucun exactement 18), le mutant survit, révélant un test de cas limite manquant.

Termes lies

mutation testingStrykerPITmutant testingtest qualitymutation score

Automatisez le Code Review avec diffray

Systeme d'IA multi-agent pour code review. Trouve automatiquement bugs, vulnerabilites de securite et problemes d'architecture.