Qu’est-ce que le test de mutation ? (Exemple)
Qu’est-ce que le test de mutation ?
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 scénarios de test sont capables de trouver des erreurs dans le code source. L'objectif des tests de mutation est de garantir la qualité des cas de test en termes de robustesse afin qu'ils échouent au code source muté.
Les modifications apportées au programme mutant doivent rester extrêmement minimes afin de ne pas affecter l'objectif global du programme. Les tests de mutation sont également appelés stratégie de test basée sur les erreurs car ils impliquent la création d'une erreur dans le programme et constituent un type de Blanc Box USP,EP, BP qui est principalement utilisé pour Tests unitaires.
La mutation a été initialement proposée en 1971, mais a perdu de sa vigueur en raison des coûts élevés impliqués. Aujourd'hui encore, il a pris de l'ampleur et est largement utilisé pour des langues telles que Java et XML.
Comment exécuter des tests de mutation ?
Voici les étapes pour exécuter des tests de mutation (analyse de mutation) :
Étape 1: Des fautes sont introduites dans le code source du programme en créant de nombreuses versions appelées mutants. Chaque mutant doit contenir une seule faute, et le but est de provoquer l'échec de la version mutante, ce qui démontre l'efficacité des cas de test.
Étape 2: Les cas de tests sont appliqués au programme original ainsi qu'au programme mutant. UN Cas de test devrait ê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 une sortie différente, alors le mutant est tué par le scénario de test. Par conséquent, le scénario de test est suffisamment bon pour détecter le changement entre le programme original et le programme mutant.
Étape 5: Si le programme d'origine et le programme mutant génèrent le même résultat, Mutant reste 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’un simple changement syntaxique apporté à l’instruction du programme. Chaque programme mutant doit différer du programme original par une mutation.
Programme original | Programme mutant |
---|---|
Si (x>y)
Imprimer « Bonjour » autre Imprimer « Bonjour » |
Si(x<y)
Imprimer « Bonjour » autre Imprimer « Bonjour » |
Que changer dans un programme Mutant ?
Il existe plusieurs techniques qui pourraient être utilisées pour générer des programmes mutants. Regardons-les
Operaet opérateurs de remplacement | Modification d'expression Operajeudi | Modification de la déclaration Operajeudi |
---|---|---|
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 insertion 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) remplace les valeurs x et y Si(5>y) remplacer x par la constante 5 |
Exemple-
Si(x==y) Nous pouvons remplacer == par >= et avoir un programme mutant comme If(x>=y) et insertion de ++ dans l'instruction Si(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 :
|
Automatisation des tests de mutation
Les tests de mutation prennent beaucoup de temps et sont 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-
Types de tests de mutation
In Génie logiciel, Les tests de mutation peuvent être fondamentalement classés en 3 types : mutation d'énoncé, mutation de décision et mutation de valeur.
- Mutation de déclaration – le développeur coupe et colle une partie d'un code dont le résultat peut être une suppression de certaines lignes
- Mutation de valeur– les valeurs des paramètres primaires sont modifiées
- Mutation de décision– les déclarations de contrôle doivent être modifiées
Score de mutation
Le score de mutation est défini comme le pourcentage de mutants tués par rapport au nombre total de mutants.
- Score de mutation = (Mutants tués / Nombre total de mutants) * 100
Les cas de test sont adéquats en matière de mutation si le score est de 100 %. Les résultats expérimentaux ont montré que les tests de mutation constituent une approche efficace pour mesurer l’adéquation des cas de test. Mais le principal inconvénient est le coût élevé de génération des mutants et d’exécution de chaque cas de test contre ce programme mutant.
Avantages des tests de mutation
Voici les avantages des tests de mutation :
- Il s'agit d'une approche puissante pour atteindre une couverture élevée du programme source.
- Ces tests sont capables 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 révèle les ambiguïtés dans le code source et a la capacité de détecter toutes les erreurs du programme.
- Les clients bénéficient de ces tests en obtenant un système le plus fiable et le plus stable.
Inconvénients des tests de mutation
D’un autre côté, voici les inconvénients des tests 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.
- Étant donné que cela prend du temps, il est juste de dire que ces tests ne peuvent être effectués sans un outil d'automatisation.
- Chaque mutation aura le même nombre de cas de tests que celui du programme original. Ainsi, un grand nombre de programmes mutants devront peut-être être testés par rapport à la suite de tests originale.
- Comme cette méthode implique des modifications du code source, elle n'est pas du tout applicable pour Noir Box USP,EP, BP.
Conclusion
Vous souhaitez tester de manière exhaustive votre application ? La réponse est le test de mutation. C'est la technique la plus complète pour tester un programme. Il s'agit de 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 du système.