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?

Udfรธr 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?

Opret 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:

  • GOTO etiket udskiftning
  • Udskiftning af returerklรฆring
  • Sletning af erklรฆring
  • Unรฆr operatorindsรฆttelse (som โ€“ og ++)
  • Udskiftning af logisk stik
  • Sammenlignelig udskiftning af arraynavn
  • Fjernelse af anden del i if-else-erklรฆringen
  • Tilfรธjelse eller udskiftning af operatรธrer
  • Erstatning af erklรฆring ved at รฆndre dataene
  • Datamodifikation for variablerne
  • ร†ndring af datatyper i programmet

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.

  1. Statement Mutation โ€“ udvikleren klipper og indsรฆtter en del af en kode, hvor resultatet kan vรฆre en 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

Mutationsscore

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.

Opsummer dette indlรฆg med: