Mutatietesten - Voor- en nadelen van mutatietesten

Inhoudsopgave:

Anonim

Wat is mutatietesten?

Zoals het woord 'muteren' in het algemeen de 'verandering' betekent, betekent dit ook het mutatietesten. Mutatietesten is het type softwaretesten dat wordt uitgevoerd door het stuk code te wijzigen of te muteren om te controleren / verifiëren dat de testgevallen voldoende bekwaam zijn om de fouten / defecten te vinden. Mutatietesten vallen onder de White Box-testen en worden in principe gedaan tijdens het uitvoeren van de Unit-testen van een bepaalde module van een applicatie. De wijzigingen die zijn aangebracht in de bron- / hoofdcode die zijn aangebracht, worden in een kleine hoeveelheid aangebracht, zodat dit de algemene doelstelling ervan niet beïnvloedt. Dit wordt ook wel de foutdetectietechniek genoemd omdat het wordt gebruikt om de zwakte van testgevallen te lokaliseren door een fout in de oorspronkelijke code te maken.

Voordat u een test uitvoert, is het erg belangrijk om het achterliggende doel te begrijpen. Het hoofddoel van mutatietests is het vinden van de effectiviteit van de ontwikkelde testcases, die in staat moeten zijn om zelfs de kleine wijziging in de code te detecteren. Het is gedaan om de problemen in het testpakket en de testgegevens te vinden die worden gebruikt tijdens het testen van een softwareapplicatie. Er worden meerdere mutanten of versies van de oorspronkelijke code gemaakt en elk daarvan wordt getest tegen de oorspronkelijke testgevallen. Als de resultaten van de testcase hetzelfde blijven als in de oorspronkelijke code, worden zowel de code als de testcases opnieuw gecontroleerd omdat de code niet is uitgevoerd of de testsuite niet in staat is om de mutantcode te vinden.

Soorten mutatietesten

Er zijn in principe 3 soorten mutatietests die worden uitgevoerd om mutanten van de oorspronkelijke code te maken:

1. Waardemutatie

Zoals de naam bij waardemutatie aangeeft, de waarde van constanten, parameters die in de methoden zijn doorgegeven, worden waarden die in lussen worden gebruikt, gewijzigd om een ​​mutantprogramma te maken. De grote waarde wordt gewijzigd in een kleinere waarde of omgekeerd. In principe worden de waarden die al in het programma zijn gedefinieerd, gewijzigd om waardemutatie uit te voeren.

Oorspronkelijke code:

int a = 75636737;
int b = 3454;
int mult = a * b;
print(mult);

Mutant Code:

int a = 75;
int b = 345466465;
int mult = a * b;
print(mult);

2. Beslissingsmutatie

In Decision Mutation worden de logische en rekenkundige operatoren die in het programma worden gebruikt gewijzigd, waardoor de algehele besluitvorming in het programma en de respectieve resultaten worden gewijzigd. Bepaalde 'if'-instructies worden bijvoorbeeld alleen uitgevoerd wanneer (a> b). In mutantcode wordt deze operator gewijzigd in (a <b), waarmee de algehele besluitvorming in code wordt gewijzigd.

Oorspronkelijke code:

if (a>b || b>c)
(
print(“yes”);
)
else
(
print (“No”);
)

Mutant Code:

if (a (
print(“yes”);
)
else
(
print (“No”);
)

3. Verklaring mutatie

In Statement Mutation worden wijzigingen aangebracht in de volledige statements van de code om een ​​mutantprogramma te maken. Wijzigingen in de instructie kunnen de hele instructie verwijderen, de volgorde van de instructie in code wijzigen, de instructies op een andere locatie in code kopiëren en plakken, de enkele instructies in de oorspronkelijke code herhalen of dupliceren.

Oorspronkelijke code:

if (a > b)
(
print(“a is greater”);
)
else
(
print(“b is greater”);
)

Mutant Code:

if(a > b)
(
// removing the statement
)
else
(
print(“b is greater”);
)

Voor- en nadelen van mutatietesten

Voordelen en nadelen van mutatietesten worden hieronder gegeven:

voordelen

Enkele voordelen van mutatietesten worden hieronder gegeven:

  1. Een van de grootste voordelen van mutatietests is dat het helpt bij het vinden van de verborgen defecten en maximale codedekking om het deel van de code te identificeren dat niet grondig is getest door de oorspronkelijke testgevallen.
  2. Mutatietests helpen bij het vinden van de kwaliteit van testgevallen die worden gebruikt voor het testen van de software en het geven van echte feedback aan testers over het testproces en de testkwaliteit.
  3. Het helpt bij het vinden van hoogwaardige bugs die niet eenvoudig te vinden zijn door normaal testen.
  4. Mutatietests onthullen soms de verborgen defecten zoals code-ambiguïteit, onjuiste waarden van variabelen, enz. In de code in de vroege stadia van softwaretesten, wat zeer voordelig is.
  5. Soms zijn zowel de code als de testcase correct, maar het probleem wordt veroorzaakt door testgegevens. Mutatietests helpen om de problemen in testgegevens te achterhalen.

nadelen

Hieronder staan ​​enkele van de nadelen van mutatietesten:

  1. Bij mutatietests worden verschillende mutanten van de code gemaakt en getest tegen de oorspronkelijke testsuite en daarom kost het veel tijd terwijl alleen de eenheidstests van een enkele functie / module van een toepassing worden uitgevoerd.
  2. Zoals hierboven vermeld, worden alle mutanten getest tegen de oorspronkelijke suite, dus er zou een groot aantal testgevallen moeten worden uitgevoerd en daarom kan dit niet worden uitgevoerd zonder een automatiseringstool die kostbaar is en het projectbudget kan belemmeren.
  3. Complexe mutanten gemaakt van de oorspronkelijke code kunnen leiden tot verwarring en fouten in de oorspronkelijke code.

Conclusie

De bovenstaande uitleg definieert duidelijk wat mutatietests zijn en wat het belang ervan is op het gebied van het testen van een toepassing. Als we een applicatie door en uit willen testen met de testscenario's van maximale codedekking, speelt mutatietesten een cruciale rol.

Aanbevolen artikelen

Dit is een handleiding voor mutatietesten. Hier bespreken we wat mutatietesten is? en de soorten mutatietesten samen met voor- en nadelen. U kunt ook onze andere voorgestelde artikelen doornemen voor meer informatie

  1. Wat is reageren?
  2. Negatieve testen
  3. Testen van mobiele applicatie
  4. Geavanceerde coderingsstandaard
  5. Codedekking versus testdekking | Top 4 verschillen om te leren
  6. Hulpmiddelen voor codedekking | Top 6 Code Coverage Tools