Hvad er mutationstest? (Eksempel)
Hvad er mutationstestning?
Mutationstest er en type softwaretest, hvor visse udsagn af kildekoden ændres/muteres for at kontrollere, om testcaserne er i stand til at finde fejl i kildekoden. Målet med Mutation Testing er at sikre kvaliteten af testcases med hensyn til robusthed, at den skulle fejle den muterede kildekode.
Ændringerne i mutantprogrammet bør holdes ekstremt små, så det ikke påvirker programmets overordnede mål. Mutationstest kaldes også fejlbaseret teststrategi, da det involverer at skabe en fejl i programmet, og det er en type Hvid Box Test som hovedsageligt bruges til Enhedstest.
Mutation blev oprindeligt foreslået i 1971, men mistede ildhu på grund af de høje omkostninger. Nu har den igen plukket damp og er meget brugt til sprog som f.eks Java og XML.
Hvordan udfører man mutationstest?
Følgende er trinene til at udføre mutationstest (mutationsanalyse):
Trin 1: Fejl introduceres i programmets kildekode ved at skabe mange versioner kaldet mutanter. Hver mutant bør indeholde en enkelt fejl, og målet er at få mutantversionen til at fejle, hvilket viser effektiviteten af testcaserne.
Trin 2: Testcases anvendes på det originale program og også på mutantprogrammet. EN Test sag bør være tilstrækkelig, og den er tilpasset til at opdage fejl i et program.
Trin 3: Sammenlign resultaterne af et originalt og mutant program.
Trin 4: Hvis det originale program og mutantprogrammerne genererer de forskellige output, så bliver mutanten dræbt af testcasen. Derfor er testcasen god nok til at detektere ændringen mellem original- og mutantprogrammet.
Trin 5: Hvis det originale program og mutantprogram genererer det samme output, holdes Mutant i live. I sådanne tilfælde skal der skabes mere effektive testcases, der dræber alle mutanter.
Hvordan opretter man mutantprogrammer?
En mutation er intet andet end en enkelt syntaktisk ændring, der foretages i programsætningen. Hvert mutantprogram bør adskille sig fra det originale program med én mutation.
Originalt program | Mutant program |
---|---|
Hvis (x>y)
Udskriv "Hej" Else Udskriv "Hej" |
Hvis(x<y)
Udskriv "Hej" Else Udskriv "Hej" |
Hvad skal man ændre i et mutantprogram?
Der er flere teknikker, der kan bruges til at generere mutantprogrammer. Lad os se på dem
Operaog erstatningsoperatører | Udtryksændring Operatorer | Redegørelsesændring Operatorer |
---|---|---|
Erstat operanden med en anden operand (x med y eller y med x) eller med den konstante værdi. | Erstat en operatør eller indsættelse af nye operatører i en programerklæring. | Programmatiske udsagn modificeres for at skabe mutantprogrammer. |
Eksempel-
If(x>y) erstatte x- og y-værdier If(5>y) erstatte x med konstant 5 |
Eksempel-
Hvis(x==y) Vi kan erstatte == i >= og have mutant program som If(x>=y) og indsætte ++ i sætningen Hvis(x==++y) |
Eksempel-
Slet den anden del i en if-else-sætning Slet hele if-else-sætningen for at kontrollere, hvordan et program opfører sig Nogle af prøvemutationsoperatører:
|
Automatisering af mutationstestning
Mutationstest er ekstremt tidskrævende og kompliceret at udføre manuelt. For at fremskynde processen, er det tilrådeligt at gå efter automatiseringsværktøjer. Automatiseringsværktøjer reducerer også omkostningerne ved test.
Liste over tilgængelige værktøjer-
Typer af mutationstestning
In Software Engineering, Mutationstestning kunne grundlæggende kategoriseres i 3 typer - erklæringsmutation, beslutningsmutation og værdimutation.
- Statement Mutation – udvikleren klipper og indsætter en del af en kode, hvor resultatet kan være en fjernelse af nogle linjer
- Værdimutation– Værdier af primære parametre ændres
- 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 at måle tilstrækkeligheden af testcaserne. Men den største ulempe er, at de høje omkostninger ved at generere mutanterne og udføre hver testsag mod det mutantprogram.
Fordele ved mutationstestning
Følgende er fordelene ved mutationstest:
- Det er en kraftfuld tilgang til at opnå høj dækning af kildeprogrammet.
- Denne test er i stand til omfattende test af mutantprogrammet.
- Mutationstest giver softwareudvikleren et godt niveau af fejldetektion.
- Denne metode afdækker uklarheder i kildekoden og har kapacitet til at opdage alle fejl i programmet.
- Kunderne får gavn af denne test ved at få et meget pålideligt og stabilt system.
Ulemper ved mutationstestning
På den anden side er følgende ulemper ved mutanttest:
- Mutationstest 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 testsuite.
- Da denne metode involverer kildekodeændringer, er den slet ikke anvendelig til Sort Box Test.
Konklusion
Ønsker du en udtømmende test af din ansøgning? Svaret er mutationstest. Det er den mest omfattende teknik til at teste et program. Dette er metoden, som kontrollerer effektiviteten og nøjagtigheden af et testprogram for at opdage fejl eller fejl i systemet.