Mutationstest i softwaretest: Mutant Score & Analyseeksempel

Indholdsfortegnelse:

Anonim

Mutationstest

Mutation Testing er en type softwaretest, hvor visse udsagn om kildekoden ændres / muteres for at kontrollere, om testsagerne er i stand til at finde fejl i kildekoden. Målet med Mutation Testing er at sikre kvaliteten af ​​testsager med hensyn til robusthed, at den skal svigte den muterede kildekode.

Ændringerne i det mutante program skal holdes ekstremt små, så det ikke påvirker programmets overordnede mål. Mutation Testing kaldes også Fejlbaseret teststrategi, da det indebærer at skabe en fejl i programmet, og det er en type White Box Testing, der hovedsagelig bruges til Unit Testing.

Mutation blev oprindeligt foreslået i 1971, men mistede glød på grund af de store omkostninger, der var involveret. Nu har det igen valgt damp og bruges i vid udstrækning til sprog som Java og XML.

I denne vejledning lærer du-

  • Hvad er mutationstest?
  • Hvordan udføres mutationstest?
  • Hvordan oprettes mutantprogrammer?
  • Hvad skal jeg ændre i et mutantprogram?
  • Typer af mutationstest
  • Mutationsscore:
  • Fordele ved mutationstest:
  • Ulemper ved mutationstest:

Hvordan udføres mutationstest?

Følgende er trinene til at udføre mutationstest (mutationsanalyse):

Trin 1 : Fejl introduceres i kildekoden til programmet ved at oprette mange versioner kaldet mutanter. Hver mutant skal indeholde en enkelt fejl, og målet er at få den mutante version til at mislykkes, hvilket demonstrerer effektiviteten af ​​testsagerne.

Trin 2 : Testcases anvendes på det originale program og også på mutantprogrammet. En testsag skal være tilstrækkelig, og den finjusteres for at opdage fejl i et program.

Trin 3 : Sammenlign resultaterne af et originalt og mutant program.

Trin 4 : Hvis det oprindelige program og mutantprogrammer genererer forskellige output, skal mutanten dræbes af testsagen. Derfor er testkassen god nok til at opdage ændringen mellem originalen og mutantprogrammet.

Trin 5 : Hvis det oprindelige program og mutantprogrammet genererer den samme output, holdes Mutant i live. I sådanne tilfælde skal der oprettes mere effektive testtilfælde, der dræber alle mutanter.

Hvordan oprettes mutantprogrammer?

En mutation er intet andet end en enkelt syntaktisk ændring, der foretages i programerklæringen. Hvert mutantprogram skal adskille sig fra det oprindelige program med en mutation.

Oprindeligt program Mutantprogram
Hvis (x> y)
Udskriv "Hej"
Ellers
udskriver "Hej"
Hvis ( x )Udskriv "Hej"
Ellers
udskriv "Hej"

Hvad skal jeg ændre i et mutantprogram?

Der er flere teknikker, der kan bruges til at generere mutantprogrammer. Lad os se på dem

Operand udskiftningsoperatører Ekspressionsmodifikationsoperatører Erklæring modifikation Operatører
Udskift operanden med en anden operand (x med y eller y med x) eller med den konstante værdi. Udskift en operatør eller indsættelse af nye operatører i en programerklæring. Programmatiske udsagn ændres for at oprette mutante programmer.
Eksempel -
Hvis (x> y) erstatter x og y-værdier
Hvis (5> y) erstatter x med konstant 5
Eksempel -
Hvis (x == y)
Vi kan erstatte == til> = og have mutantprogram som
Hvis (x> = y) og indsætte ++ i udsagnet
If (x == ++ y)
Eksempel -
Slet den anden del i en if-else-sætning
Slet hele if-else-udsagnet for at kontrollere, hvordan et program opfører sig
Nogle af eksempelmutationsoperatører:
  • Udskiftning af GOTO-etiket
  • Udskiftning af returerklæring
  • Sletning af erklæring
  • Unary operatørindsættelse (Like - og ++)
  • Udskiftning af logisk stik
  • Sammenlignelig udskiftning af matrixnavn
  • Fjernelse af anden del i if-else-erklæringen
  • Tilføjelse eller udskiftning af operatører
  • Erstatning af erklæring ved at ændre data
  • Datamodifikation for variablerne
  • Ændring af datatyper i programmet

Automatisering af mutationstest:

Mutationstestning er ekstremt tidskrævende og kompliceret at udføre manuelt. For at fremskynde processen anbefales det at gå til automatiseringsværktøjer. Automatiseringsværktøjer reducerer også testomkostningerne.

Liste over tilgængelige værktøjer -

  • Stryker
  • PIT-test

Typer af mutationstest

I softwareudvikling kunne mutationstest grundlæggende kategoriseres i 3 typer - udsagnsmutation, beslutningsmutation og værdimutation.

  1. Statement Mutation - udvikler klipper og indsætter en del af en kode, hvor resultatet kan være fjernelse af nogle linjer
  2. Værdimutation - værdier af primære parametre ændres
  3. Beslutningsmutation - kontrolerklæringer skal ændres

Mutationsscore:

Mutationsscoren er defineret som procentdelen af ​​dræbte mutanter med det samlede antal mutanter.

  • Mutationsscore = (Dræbte mutanter / Samlet antal mutanter) * 100

Testtilfælde er mutationstilstrækkelige, hvis scoren er 100%. Eksperimentelle resultater har vist, at mutationstest er en effektiv tilgang til måling af testtilfældenes tilstrækkelighed. Men den største ulempe er, at de høje omkostninger ved at generere mutanterne og udføre hver testsag mod dette mutantprogram.

Fordele ved mutationstest:

Følgende er fordelene ved mutationstest:

  • Det er en stærk tilgang til at opnå høj dækning af kildeprogrammet.
  • Denne test er i stand til omfattende at teste mutantprogrammet.
  • Mutationstest giver softwareudvikleren et godt niveau af detektering af fejl.
  • Denne metode afdækker uklarheder i kildekoden og har kapacitet til at opdage alle fejl i programmet.
  • Kunderne drages fordel af denne test ved at få et mest pålideligt og stabilt system.

Ulemper ved mutationstest:

På den anden side er følgende ulemperne ved mutant test:

  • Mutationstestning er ekstremt dyrt og tidskrævende, da der er mange mutantprogrammer, der skal genereres.
  • Da det er tidskrævende, er det rimeligt at sige, at denne test ikke kan udføres uden et automatiseringsværktøj.
  • Hver mutation vil have det samme antal testtilfælde end det oprindelige program. Så et stort antal mutantprogrammer skal muligvis testes mod den originale testpakke.
  • Da denne metode involverer ændringer i kildekoden, er den slet ikke anvendelig til Black Box Testing.

Konklusion:

Ønsker du udtømmende test af din ansøgning? Svaret er mutationstest. Det er den mest omfattende teknik til at teste et program. Dette er metoden, der kontrollerer effektiviteten og nøjagtigheden af ​​et testprogram til at opdage fejl eller fejl i systemet.