Qu'est-ce que le test de mutation?
Comme le mot «muter» signifie en général le «changement», le test de mutation signifie également. Le test de mutation est le type de test logiciel qui est effectué en modifiant ou en mutant le morceau de code afin de vérifier / vérifier que les cas de test sont suffisamment capables de trouver les erreurs / défauts. Les tests de mutation relèvent des tests de la boîte blanche et sont essentiellement effectués lors de l'exécution des tests unitaires d'un module particulier d'une application. Les changements effectués dans le code source / principal effectués sont effectués dans une petite quantité afin que cela n'affecte pas l'objectif global de celui-ci. Ceci est également connu sous le nom de technique de détection des défauts car il est utilisé dans le but de localiser la faiblesse des cas de test en créant un défaut dans le code d'origine.
Avant d'effectuer un test, il est très important de comprendre l'objectif derrière celui-ci. Le principal objectif du test de mutation est de trouver l'efficacité des cas de test développés, qui devraient être suffisamment capables pour détecter même les petites modifications apportées au code. Il est fait pour trouver les problèmes dans la suite de tests et les données de test qui sont utilisées lors du test de n'importe quelle application logicielle. Plusieurs mutants ou versions du code d'origine sont créés et chacun d'eux est testé par rapport aux cas de test d'origine. Si les résultats du scénario de test restent les mêmes que dans le code d'origine, le code et les scénarios de test sont à nouveau vérifiés car soit le code n'a pas été exécuté, soit la suite de tests n'est pas suffisamment capable de trouver le code mutant.
Types de tests de mutation
Il existe essentiellement 3 types de tests de mutation qui sont effectués pour créer des mutants du code d'origine:
1. Mutation de valeur
Comme son nom l'indique, dans la mutation de la valeur, la valeur des constantes, les paramètres passés dans les méthodes, les valeurs utilisées dans les boucles sont modifiées pour créer un programme mutant. Soit la grande valeur est remplacée par une plus petite, soit vice versa. Fondamentalement, les valeurs qui sont déjà définies dans le programme sont modifiées pour effectuer la mutation de valeur.
Code d'origine:
int a = 75636737;
int b = 3454;
int mult = a * b;
print(mult);
Code mutant:
int a = 75;
int b = 345466465;
int mult = a * b;
print(mult);
2. Mutation de décision
Dans Decision Mutation, les opérateurs logiques et arithmétiques utilisés dans le programme sont modifiés, ce qui modifie la prise de décision globale dans le programme et ses résultats respectifs. Par exemple, certaines instructions «if» ne s'exécutent que lorsque (a> b). En code mutant, cet opérateur est changé en (a <b), ce qui modifie la prise de décision globale dans le code.
Code d'origine:
if (a>b || b>c)
(
print(“yes”);
)
else
(
print (“No”);
)
Code mutant:
if (a (
print(“yes”);
)
else
(
print (“No”);
)
3. Mutation de déclaration
Dans Statement Mutation, des modifications sont apportées aux instructions de code complètes afin de créer un programme mutant. Les modifications apportées à l'instruction peuvent être la suppression de l'instruction entière, la modification de l'ordre des instructions dans le code, la copie et le collage des instructions à un autre emplacement du code, la répétition ou la duplication des quelques instructions du code d'origine.
Code d'origine:
if (a > b)
(
print(“a is greater”);
)
else
(
print(“b is greater”);
)
Code mutant:
if(a > b)
(
// removing the statement
)
else
(
print(“b is greater”);
)
Avantages et inconvénients des tests de mutation
Les avantages et les inconvénients des tests de mutation sont indiqués ci-dessous:
Les avantages
Certains des avantages des tests de mutation sont indiqués ci-dessous:
- L'un des plus grands avantages du test de mutation est qu'il permet de trouver les défauts cachés et la couverture de code maximale afin d'identifier la partie du code qui n'est pas minutieusement testée par les cas de test d'origine.
- Le test de mutation permet de trouver la qualité des cas de test utilisés pour tester le logiciel et de fournir aux testeurs une véritable rétroaction sur le processus de test et la qualité du test.
- Il aide à trouver les bogues de haute qualité qui ne sont pas faciles à trouver par des tests normaux.
- Les tests de mutation révèlent parfois les défauts cachés comme l'ambiguïté du code, les valeurs incorrectes des variables, etc. dans le code aux premiers stades des tests logiciels, ce qui est très bénéfique.
- Parfois, le code et le scénario de test sont corrects, mais le problème est dû aux données de test. Les tests de mutation permettent de découvrir les problèmes des données de test.
Désavantages
Vous trouverez ci-dessous certains des inconvénients des tests de mutation:
- Dans les tests de mutation, divers mutants du code sont créés et testés par rapport à la suite de tests d'origine et, par conséquent, cela consomme beaucoup de temps tout en effectuant uniquement les tests unitaires d'une seule fonctionnalité / module d'une application.
- Comme mentionné ci-dessus, tous les mutants sont testés par rapport à la suite d'origine, donc il y aurait un grand nombre de cas de test qui doivent être exécutés et donc cela ne peut pas être effectué sans un outil d'automatisation qui est coûteux et peut entraver le budget du projet.
- Des mutants complexes créés à partir du code d'origine peuvent entraîner de la confusion et des erreurs dans le code d'origine.
Conclusion
L'explication ci-dessus définit clairement ce qu'est le test de mutation et son importance dans le domaine du test d'une application. Si nous voulons tester et épuiser une application avec les scénarios de test de couverture de code maximale, les tests de mutation jouent un rôle crucial.
Articles recommandés
Ceci est un guide pour les tests de mutation. Ici, nous discutons de ce qu'est le test de mutation? et les types de tests de mutation ainsi que les avantages et les inconvénients. Vous pouvez également consulter nos autres articles suggérés pour en savoir plus
- Qu'est-ce que React?
- Test négatif
- Test d'application mobile
- Standard d'encryptage avancé
- Couverture de code vs couverture de test | 4 principales différences à apprendre
- Outils de couverture de code | Les 6 meilleurs outils de couverture de code