Test de mutation

Définition - Que signifie le test de mutation?

Le test de mutation est une méthode de test de logiciel dans laquelle le programme ou le code source est délibérément manipulé, suivi d'une série de tests par rapport au code muté. Les mutations introduites dans le code source sont conçues pour imiter les erreurs de programmation courantes. Une bonne suite de tests unitaires détecte généralement les mutations du programme et échoue automatiquement.

Les tests de mutation sont utilisés sur de nombreuses plates-formes différentes, notamment Java, C ++, C # et Ruby.

Definir Tech explique les tests de mutation

Le test de mutation est une méthode simple mais ingénieuse utilisée pour valider l'exactitude du code source et le processus de test. Le concept a été inventé pour la première fois par Richard Lipton en 1971, et il y a eu un regain d'intérêt depuis ce temps.

Le mécanisme de fonctionnement du test de mutation est simple et direct. Un morceau de code source englobant tous les tests unitaires est sélectionné. Après avoir vérifié tous les tests positifs pour un code source donné, une mutation est introduite dans le programme.

Le degré de mutation appliqué à un bloc de code donné peut varier. Une implémentation courante de test de mutation consiste à remplacer un opérateur logique par son inverse. Par exemple, l'opérateur "! =" Est utilisé à la place de "= =." Dans certains cas, la mutation implique de réorganiser les lignes pour changer l'ordre d'exécution ou même de supprimer quelques lignes de code. Des niveaux de test de mutation complexes peuvent entraîner des erreurs de compilation.

Une fois qu'un programme est modifié, une suite de tests unitaires est exécutée sur le code muté. Le code muté réussit ou échoue au test unitaire, selon la qualité du test. Un test unitaire bien écrit doit détecter les erreurs de code muté, entraînant un échec. Un test unitaire qui ne parvient pas à détecter les erreurs de code peut nécessiter une réécriture.

Les tests de mutation offrent les avantages suivants:

  • Identification des défauts du code de programme
  • Développement de cas de test efficace
  • Détection des lacunes dans les données de test
  • Amélioration de la qualité des logiciels
  • Élimination de l'ambiguïté du code

Les inconvénients des tests de mutation comprennent:

  • Mise en œuvre difficile de mutations complexes
  • Cher et chronophage
  • Nécessite des testeurs qualifiés avec des connaissances en programmation