Vad är mutationstestning? (Exempel)

Vad är mutationstestning?

Mutationstestning är en typ av mjukvarutestning där vissa satser i källkoden ändras/muteras för att kontrollera om testfallen kan hitta fel i källkoden. Målet med mutationstestning är att säkerställa kvaliteten på testfallen i form av robusthet att den ska misslyckas med den muterade källkoden.

De ändringar som görs i mutantprogrammet bör hållas extremt små så att det inte påverkar programmets övergripande mål. Mutationstestning kallas även för felbaserad teststrategi då det går ut på att skapa ett fel i programmet och det är en typ av White Box Testning som främst används till Enhetstestning.

Mutation föreslogs ursprungligen 1971 men tappade glöd på grund av de höga kostnaderna. Nu har den återigen tagit fart och används flitigt för språk som t.ex Java och XML.

Hur utför man mutationstestning?

Utför mutationstestning

Följande är stegen för att utföra mutationstestning (mutationsanalys):

steg 1: Fel introduceras i programmets källkod genom att skapa många versioner som kallas mutanter. Varje mutant bör innehålla ett enda fel, och målet är att få mutantversionen att misslyckas, vilket visar testfallens effektivitet.

steg 2: Testfall tillämpas på originalprogrammet och även på mutantprogrammet. A Testfall bör vara adekvat, och det är justerat för att upptäcka fel i ett program.

steg 3: Jämför resultaten av ett original- och mutantprogram.

steg 4: Om det ursprungliga programmet och mutantprogrammen genererar olika utdata, dödas mutanten av testfallet. Därför är testfallet tillräckligt bra för att upptäcka förändringen mellan originalet och mutantprogrammet.

steg 5: Om originalprogrammet och mutantprogrammet genererar samma utdata hålls Mutant vid liv. I sådana fall måste mer effektiva testfall skapas som dödar alla mutanter.

Hur skapar man mutantprogram?

Skapa mutantprogram

En mutation är inget annat än en enda syntaktisk förändring som görs i programförklaringen. Varje mutantprogram bör skilja sig från det ursprungliga programmet med en mutation.

Originalprogram Mutant program
Om (x>y)

Skriv ut "Hej"

annars

Skriv ut "Hej"

Om(x <y)

Skriv ut "Hej"

annars

Skriv ut "Hej"

Vad ska man ändra i ett mutantprogram?

Det finns flera tekniker som kan användas för att generera mutantprogram. Låt oss titta på dem

Operand ersättningsoperatörer Modifiering av uttryck Operatorer Redovisningsändring Operatorer
Ersätt operanden med en annan operand (x med y eller y med x) eller med det konstanta värdet. Byt ut en operatör eller infoga nya operatörer i en programbeskrivning. Programmatiska uttalanden modifieras för att skapa mutantprogram.
Exempel-

If(x>y) ersätt x- och y-värden

If(5>y) ersätt x med konstant 5

Exempel-

Om(x==y)

Vi kan ersätta == till >= och ha mutantprogram som

If(x>=y) och infoga ++ i satsen

Om(x==++y)

Exempel-

Ta bort den andra delen i en if-else-sats

Ta bort hela if-else-satsen för att kontrollera hur ett program beter sig

Några av provmutationsoperatorerna:

  • GOTO etikettbyte
  • Returnera uttalande ersättning
  • Utlåtande radering
  • Unär operatorinsättning (som – och ++)
  • Logisk kontaktbyte
  • Jämförbart ersättning av arraynamn
  • Ta bort annan del i if-else-satsen
  • Lägga till eller byta ut operatörer
  • Uttalandet ersätts genom att ändra data
  • Datamodifiering för variablerna
  • Ändring av datatyper i programmet

Automatisering av mutationstestning

Mutationstestning är extremt tidskrävande och komplicerat att utföra manuellt. För att påskynda processen är det lämpligt att välja automationsverktyg. Automationsverktyg minskar också kostnaden för testning.

Lista över tillgängliga verktyg-

Typer av mutationstestning

In Mjukvaruutveckling, Mutationstestning kan i grunden delas in i 3 typer - uttalandemutation, beslutsmutation och värdemutation.

  1. Uttalande mutation – utvecklaren klipper ut och klistrar in en del av en kod vars resultat kan bli en borttagning av vissa rader
  2. Värdemutation– Värden på primära parametrar ändras
  3. Beslutsmutation– kontrollutlåtanden ska ändras

Mutationspoäng

Mutationspoängen definieras som procentandelen dödade mutanter med det totala antalet mutanter.

  • Mutationspoäng = (dödade mutanter / totalt antal mutanter) * 100

Mutationspoäng

Testfall är mutationsadekvata om poängen är 100 %. Experimentella resultat har visat att mutationstestning är ett effektivt tillvägagångssätt för att mäta testfallens lämplighet. Men den största nackdelen är att den höga kostnaden för att generera mutanterna och utföra varje testfall mot det mutantprogrammet.

Fördelar med mutationstestning

Följande är fördelarna med mutationstestning:

  • Det är ett kraftfullt tillvägagångssätt för att uppnå hög täckning av källprogrammet.
  • Denna testning är kapabel att heltäckande testa mutantprogrammet.
  • Mutationstestning ger mjukvaruutvecklaren en bra nivå av feldetektering.
  • Denna metod avslöjar oklarheter i källkoden och har kapacitet att upptäcka alla fel i programmet.
  • Kunderna drar nytta av denna testning genom att få ett mycket pålitligt och stabilt system.

Nackdelar med mutationstestning

Å andra sidan är följande nackdelar med mutanttestning:

  • Mutationstestning är extremt kostsamt och tidskrävande eftersom det finns många mutantprogram som måste genereras.
  • Eftersom det är tidskrävande är det rimligt att säga att denna testning inte kan göras utan ett automationsverktyg.
  • Varje mutation kommer att ha samma antal testfall än det ursprungliga programmet. Så ett stort antal mutantprogram kan behöva testas mot den ursprungliga testsviten.
  • Eftersom den här metoden innefattar källkodsändringar är den inte alls tillämplig för Svart Box Testning.

Slutsats

Vill du ha en uttömmande testning av din applikation? Svaret är mutationstestning. Det är den mest omfattande tekniken för att testa ett program. Detta är metoden som kontrollerar effektiviteten och noggrannheten hos ett testprogram för att upptäcka fel eller fel i systemet.