Hva er mutasjonstesting? (Eksempel)
Hva er mutasjonstesting?
Mutasjonstesting er en type programvaretesting der visse utsagn av kildekoden endres/muteres for รฅ sjekke om testtilfellene er i stand til รฅ finne feil i kildekoden. Mรฅlet med mutasjonstesting er รฅ sikre kvaliteten pรฅ testtilfeller i form av robusthet at den skal mislykkes med den muterte kildekoden.
Endringene som gjรธres i mutantprogrammet bรธr holdes ekstremt smรฅ at det ikke pรฅvirker programmets overordnede mรฅl. Mutasjonstesting kalles ogsรฅ feilbasert teststrategi da det innebรฆrer รฅ lage en feil i programmet og det er en type Hvit Box Testing som hovedsakelig brukes til Enhetstesting.
Mutasjon ble opprinnelig foreslรฅtt i 1971, men mistet glรธden pรฅ grunn av de hรธye kostnadene. Nรฅ har den igjen plukket damp og er mye brukt for sprรฅk som f.eks Java og XML.
Hvordan utfรธre mutasjonstesting?
Fรธlgende er trinnene for รฅ utfรธre mutasjonstesting (mutasjonsanalyse):
Trinn 1: Feil blir introdusert i kildekoden til programmet ved รฅ lage mange versjoner kalt mutanter. Hver mutant skal inneholde en enkelt feil, og mรฅlet er รฅ fรฅ mutantversjonen til รฅ mislykkes, noe som demonstrerer effektiviteten til testtilfellene.
Trinn 2: Testtilfeller brukes pรฅ det originale programmet og ogsรฅ pรฅ mutantprogrammet. EN Testsak skal vรฆre tilstrekkelig, og den er tilpasset for รฅ oppdage feil i et program.
Trinn 3: Sammenlign resultatene av et originalt og mutant program.
Trinn 4: Hvis det originale programmet og mutantprogrammene genererer de forskjellige utdataene, blir mutanten drept av testsaken. Derfor er testsaken god nok til รฅ oppdage endringen mellom original- og mutantprogrammet.
Trinn 5: Hvis det originale programmet og mutantprogrammet genererer samme utgang, holdes Mutant i live. I slike tilfeller mรฅ det opprettes mer effektive testtilfeller som dreper alle mutanter.
Hvordan lage mutantprogrammer?
En mutasjon er ikke annet enn en enkelt syntaktisk endring som gjรธres i programsetningen. Hvert mutantprogram skal avvike fra det opprinnelige programmet med รฉn mutasjon.
| Originalt program | Mutant program |
|---|---|
| Hvis (x>y)
Skriv ut "Hei" Else Skriv ut "Hei" |
Hvis(x<y)
Skriv ut "Hei" Else Skriv ut "Hei" |
Hva skal endres i et mutantprogram?
Det er flere teknikker som kan brukes til รฅ generere mutante programmer. La oss se pรฅ dem
| Operand erstatningsoperatรธrer | Modifikasjon av uttrykk Operatorer | Erklรฆringsendring Operatorer |
|---|---|---|
| Erstatt operanden med en annen operand (x med y eller y med x) eller med konstantverdien. | Bytt ut en operatรธr eller innsetting av nye operatรธrer i en programerklรฆring. | Programmatiske utsagn er modifisert for รฅ lage mutante programmer. |
| Eksempel-
If(x>y) erstatte x- og y-verdier If(5>y) erstatt x med konstant 5 |
Eksempel-
Hvis(x==y) Vi kan erstatte == inn i >= og ha mutantprogram som If(x>=y) og sette inn ++ i setningen If(x==++y) |
Eksempel-
Slett den andre delen i en if-else-setning Slett hele if-else-setningen for รฅ sjekke hvordan et program oppfรธrer seg Noen av prรธvemutasjonsoperatรธrer:
|
Automatisering av mutasjonstesting
Mutasjonstesting er ekstremt tidkrevende og komplisert รฅ utfรธre manuelt. For รฅ fremskynde prosessen, er det tilrรฅdelig รฅ gรฅ for automatiseringsverktรธy. Automatiseringsverktรธy reduserer ogsรฅ kostnadene ved testing.
Liste over tilgjengelige verktรธy-
Typer mutasjonstesting
In Engineering programvare, Mutasjonstesting kan fundamentalt kategoriseres i 3 typer - setningsmutasjon, beslutningsmutasjon og verdimutasjon.
- Uttalelsesmutasjon โ Utvikler klipper ut og limer inn en del av en kode hvor resultatet kan vรฆre en fjerning av noen linjer
- Verdimutasjonโ Verdiene til primรฆre parametere endres
- Beslutningsmutasjonโ kontrolluttalelser skal endres
Mutasjonspoeng
Mutasjonspoengsummen er definert som prosentandelen drepte mutanter med det totale antallet mutanter.
- Mutasjonspoeng = (drepte mutanter / totalt antall mutanter) * 100
Testtilfeller er mutasjonsadekvate hvis poengsummen er 100 %. Eksperimentelle resultater har vist at mutasjonstesting er en effektiv tilnรฆrming for รฅ mรฅle tilstrekkeligheten av testtilfellene. Men den stรธrste ulempen er at de hรธye kostnadene ved รฅ generere mutantene og utfรธre hver testsak mot det mutantprogrammet.
Fordeler med mutasjonstesting
Fรธlgende er fordelene med mutasjonstesting:
- Det er en kraftig tilnรฆrming for รฅ oppnรฅ hรธy dekning av kildeprogrammet.
- Denne testingen er i stand til รฅ teste mutantprogrammet pรฅ en omfattende mรฅte.
- Mutasjonstesting gir programvareutvikleren et godt nivรฅ av feildeteksjon.
- Denne metoden avdekker uklarheter i kildekoden og har kapasitet til รฅ oppdage alle feilene i programmet.
- Kundene drar nytte av denne testen ved รฅ fรฅ et mest pรฅlitelig og stabilt system.
Ulemper med mutasjonstesting
Pรฅ den andre siden er fรธlgende ulemper med mutanttesting:
- Mutasjonstesting er ekstremt kostbart og tidkrevende siden det er mange mutantprogrammer som mรฅ genereres.
- Siden det er tidkrevende, er det rimelig รฅ si at denne testingen ikke kan gjรธres uten et automatiseringsverktรธy.
- Hver mutasjon vil ha samme antall testtilfeller enn det opprinnelige programmet. Sรฅ et stort antall mutantprogrammer mรฅ kanskje testes mot den originale testpakken.
- Siden denne metoden innebรฆrer endringer i kildekoden, er den ikke i det hele tatt aktuelt for Svart Box Testing.
Konklusjon
รnsker du uttรธmmende testing av sรธknaden din? Svaret er mutasjonstesting. Det er den mest omfattende teknikken for รฅ teste et program. Dette er metoden som sjekker effektiviteten og nรธyaktigheten til et testprogram for รฅ oppdage feil eller feil i systemet.



