Test de mutation dans les tests de logiciels: score mutant & Exemple d'analyse

Table des matières:

Anonim

Test de mutation

Le test de mutation est un type de test logiciel dans lequel certaines instructions du code source sont modifiées / mutées pour vérifier si les cas de test sont capables de trouver des erreurs dans le code source. Le but du test de mutation est d'assurer la qualité des cas de test en termes de robustesse qu'il devrait échouer le code source muté.

Les changements apportés au programme mutant doivent être extrêmement limités afin qu'ils n'affectent pas l'objectif global du programme. Le test de mutation est également appelé stratégie de test basée sur les pannes car il implique la création d'une erreur dans le programme et il s'agit d'un type de test de boîte blanche qui est principalement utilisé pour les tests unitaires.

La mutation a été proposée à l'origine en 1971 mais a perdu de la ferveur en raison des coûts élevés impliqués. Maintenant, encore une fois, il a choisi Steam et est largement utilisé pour des langages tels que Java et XML.

Dans ce didacticiel, vous apprendrez-

  • Qu'est-ce que le test de mutation?
  • Comment exécuter des tests de mutation?
  • Comment créer des programmes mutants?
  • Que changer dans un programme Mutant?
  • Types de tests de mutation
  • Score de mutation:
  • Avantages des tests de mutation:
  • Inconvénients du test de mutation:

Comment exécuter des tests de mutation?

Voici les étapes pour exécuter le test de mutation (analyse de mutation):

Étape 1 : Les défauts sont introduits dans le code source du programme en créant de nombreuses versions appelées mutants. Chaque mutant doit contenir un seul défaut, et le but est de provoquer l'échec de la version du mutant, ce qui démontre l'efficacité des cas de test.

Étape 2 : Les cas de test sont appliqués au programme d'origine et également au programme mutant. Un scénario de test doit être adéquat et il est modifié pour détecter les défauts dans un programme.

Étape 3 : Comparez les résultats d'un programme original et mutant.

Étape 4 : Si le programme d'origine et les programmes mutants génèrent la sortie différente, alors le mutant est tué par le cas de test. Par conséquent, le cas de test est suffisamment bon pour détecter le changement entre le programme d'origine et le programme mutant.

Étape 5 : Si le programme d'origine et le programme mutant génèrent la même sortie, Mutant est maintenu en vie. Dans de tels cas, des cas de test plus efficaces doivent être créés pour tuer tous les mutants.

Comment créer des programmes mutants?

Une mutation n'est rien d'autre qu'une seule modification syntaxique apportée à l'instruction du programme. Chaque programme mutant doit différer du programme d'origine par une mutation.

Programme original Programme Mutant
Si (x> y)
Imprimer "Bonjour"
Sinon
Imprimer "Salut"
Si ( x )Imprimer "Bonjour"
Sinon
Imprimer "Salut"

Que changer dans un programme Mutant?

Il existe plusieurs techniques qui pourraient être utilisées pour générer des programmes mutants. Regardons-les

Opérateurs de remplacement d'opérande Opérateurs de modification d'expression Opérateurs de modification de déclaration
Remplacez l'opérande par un autre opérande (x par y ou y par x) ou par la valeur constante. Remplacer un opérateur ou insérer de nouveaux opérateurs dans une instruction de programme. Les instructions programmatiques sont modifiées pour créer des programmes mutants.
Exemple -
Si (x> y) remplacez les valeurs x et y
Si (5> y) remplacez x par la constante 5
Exemple-
If (x == y)
Nous pouvons remplacer == en> = et avoir un programme mutant comme
If (x> = y) et insérer ++ dans l'instruction
If (x == ++ y)
Exemple -
Supprimez la partie else dans une instruction if-else
Supprimez l'intégralité de l' instruction if-else pour vérifier le comportement d'un programme
Quelques exemples d'opérateurs de mutation:
  • Remplacement de l'étiquette GOTO
  • Remplacement de la déclaration de retour
  • Suppression de déclaration
  • Insertion d'opérateur unaire (comme - et ++)
  • Remplacement du connecteur logique
  • Remplacement de nom de baie comparable
  • Suppression de la partie else dans l'instruction if-else
  • Ajout ou remplacement d'opérateurs
  • Remplacement de la déclaration en modifiant les données
  • Modification des données pour les variables
  • Modification des types de données dans le programme

Automatisation des tests de mutation:

Les tests de mutation sont extrêmement longs et compliqués à exécuter manuellement. Pour accélérer le processus, il est conseillé d'opter pour des outils d'automatisation. Les outils d'automatisation réduisent également le coût des tests.

Liste des outils disponibles -

  • Stryker
  • Test PIT

Types de tests de mutation

En génie logiciel, les tests de mutation peuvent être fondamentalement classés en 3 types: mutation de déclaration, mutation de décision et mutation de valeur.

  1. Mutation de déclaration - le développeur coupe et colle une partie d'un code dont le résultat peut être la suppression de certaines lignes
  2. Mutation de valeur - les valeurs des paramètres primaires sont modifiées
  3. Décision Mutation - les instructions de contrôle doivent être modifiées

Score de mutation:

Le score de mutation est défini comme le pourcentage de mutants tués avec le nombre total de mutants.

  • Score de mutation = (Mutants tués / Nombre total de mutants) * 100

Les cas de test sont adéquats pour la mutation si le score est de 100%. Les résultats expérimentaux ont montré que le test de mutation est une approche efficace pour mesurer la pertinence des cas de test. Mais, le principal inconvénient est le coût élevé de la génération des mutants et de l'exécution de chaque cas de test contre ce programme mutant.

Avantages des tests de mutation:

Voici les avantages du test de mutation:

  • C'est une approche puissante pour atteindre une couverture élevée du programme source.
  • Ce test est capable de tester de manière exhaustive le programme mutant.
  • Les tests de mutation apportent un bon niveau de détection des erreurs au développeur de logiciels.
  • Cette méthode découvre les ambiguïtés dans le code source et a la capacité de détecter tous les défauts du programme.
  • Les clients bénéficient de ces tests en obtenant un système des plus fiables et des plus stables.

Inconvénients du test de mutation:

De l'autre côté, voici les inconvénients du test Mutant:

  • Les tests de mutation sont extrêmement coûteux et prennent beaucoup de temps car de nombreux programmes mutants doivent être générés.
  • Comme cela prend du temps, il est juste de dire que ces tests ne peuvent pas être effectués sans un outil d'automatisation.
  • Chaque mutation aura le même nombre de cas de test que celui du programme d'origine. Ainsi, un grand nombre de programmes mutants peuvent devoir être testés par rapport à la suite de tests d'origine.
  • Comme cette méthode implique des changements de code source, elle n'est pas du tout applicable pour les tests Black Box.

Conclusion:

Vous souhaitez un test exhaustif de votre application? La réponse est le test de mutation. C'est la technique la plus complète pour tester un programme. C'est la méthode qui vérifie l'efficacité et l'exactitude d'un programme de test pour détecter les défauts ou les erreurs dans le système.