Hva er dynamisk testing? Typer, teknikker og eksempler
โก Smart oppsummering
Dynamisk testing kjรธrer applikasjonen og observerer hvordan den kjรธrende koden oppfรธrer seg med reelle input, slik at testere kan validere funksjonalitet, ytelse og stabilitet som ingen mengde dokumentgjennomgang er i stand til รฅ avslรธre.
Hva er dynamisk testing?
Dynamisk testing er en metode for programvaretesting som brukes til รฅ teste den dynamiske oppfรธrselen til programvarekode. Hovedformรฅlet med dynamisk testing er รฅ undersรธke programvareoppfรธrsel med dynamiske variabler โ variabler som ikke er konstante โ og รฅ finne svake omrรฅder i programvarens kjรธretidsmiljรธ. Koden mรฅ kjรธres for รฅ teste den dynamiske oppfรธrselen.
Testing er verifisering og validering, og det kreves begge V-ene for รฅ fullfรธre testingen. Verifisering utfรธres ved statisk testing, som gjennomgรฅr krav, designdokumenter og kode uten รฅ kjรธre dem. Validering utfรธres ved dynamisk testing, som kjรธrer byggingen og sammenligner hva applikasjonen faktisk gjรธr med hva den skal gjรธre.
Tabellen nedenfor skiller de to fra hverandre pรฅ et raskt blikk.
| Aspekt | Statisk testing (verifisering) | Dynamisk testing (validering) |
| Code henrettet | Nei | Ja |
| Typiske aktiviteter | Revvisninger, gjennomganger, inspeksjoner, statisk analyse | Utfรธrelse av testtilfeller pรฅ tvers av alle testnivรฅer |
| Spรธrsmรฅl besvart | Bygger vi produktet riktig? | Bygger vi det riktige produktet? |
| Defekter funnet | Tvetydige krav, brudd pรฅ kodestandarder, dรธd kode | Feil utdata, minnelekkasjer, tidsfeil, integrasjonsfeil |
| Starter | Sรฅ snart en gjenstand eksisterer | Nรฅr en kjรธrbar versjon finnes |
| Relativ kostnad for en reparasjon | Lavere, fordi feil oppdages tidligere | Hรธyere, fordi feil dukker opp senere |
Eksempel pรฅ dynamisk testing
Et kortfattet eksempel viser hvordan dynamisk testing oppfรธrer seg i praksis.
Anta at en innloggingsside testes. Den har to felt, brukernavn og passord, og brukernavnet er begrenset til alfanumeriske tegn.
Nรฅr brukeren skriver inn brukernavnet som ยซGuru99ยป, godtar systemet det. Nรฅr brukeren skriver inn ยซGuru99@123ยป, kaster applikasjonen en feilmelding. Dette resultatet viser at koden fungerer dynamisk basert pรฅ brukerinndata.
Dynamisk testing betyr derfor รฅ jobbe med det faktiske systemet, gi input og sammenligne applikasjonens faktiske oppfรธrsel med forventet oppfรธrsel โ med andre ord รฅ jobbe med systemet med den hensikt รฅ finne feil.
Dynamisk testing er derfor prosessen med รฅ validere en programvareapplikasjon slik en sluttbruker ville gjort, under forskjellige miljรธer, for รฅ bygge riktig programvare.
Hva gjรธr dynamisk testing?
Hovedmรฅlet med dynamiske tester er รฅ sikre at programvaren fungerer som den skal under og etter installasjon, og leverer en stabil applikasjon uten stรธrre feil. Ingen programvare er helt feilfri, og testing kan vise tilstedevรฆrelsen av feil, men aldri fravรฆret av dem.
Dynamiske tester sikrer ogsรฅ konsistens pรฅ tvers av programvaren, som dette eksemplet viser.
I en bankapplikasjon finnes det flere skjermbilder, som Mine kontoer, Pengeoverfรธring og Bill Betal. Alle inneholder et belรธpsfelt.
Anta at feltet Mine kontoer viser belรธpet som 25 000, pengeoverfรธring viser 25 000 dollar og Bill Betalingsskjermen viser 25 000 dollar. Belรธpet er det samme, men mรฅten det vises pรฅ er ikke det, noe som gjรธr programvaren inkonsekvent.
Konsistens er ikke begrenset til funksjonalitet. Det dekker ogsรฅ standarder som ytelse, brukervennlighet og kompatibilitet, og det er derfor dynamisk testing er sรฅ viktig.
Typer dynamisk testing
Dynamisk testing er klassifisert i to kategorier.
- Hvit Box Testing
- Svart Box Testing
Diagrammet nedenfor kartlegger de to kategoriene mot testnivรฅene som ligger under dem.
Hver type og dens tiltenkte formรฅl er beskrevet nedenfor.
Hvit Box Testing โ en metode for programvaretesting der den interne strukturen og designet er kjent for testeren. Hovedmรฅlet er รฅ sjekke hvordan systemet yter basert pรฅ koden. Den utfรธres hovedsakelig av utviklere eller white-box-testere som har programmeringskunnskap.
Svart Box Testing โ en testmetode der den interne strukturen, koden og designet IKKE er kjent for testeren. Hovedmรฅlet er รฅ verifisere funksjonaliteten til systemet som testes. Denne typen testing krever at hele testpakken kjรธres, utfรธres hovedsakelig av testere og krever ingen programmeringskunnskaper.
Black box-testing er igjen klassifisert i to typer.
- Funksjonell testing
- Ikke-funksjonell testing
Funksjonell testing
Funksjonell testing utfรธres for รฅ bekrefte at alle funksjonene som er utviklet samsvarer med de funksjonelle spesifikasjonene. Det utfรธres ved รฅ utfรธre den funksjonelle test tilfeller skrevet av QA-teamet. I denne fasen testes systemet ved รฅ gi innspill, verifisere utdataene og sammenligne de faktiske resultatene med de forventede resultatene.
Det finnes ulike nivรฅer av funksjonstesting, hvorav de viktigste er de fire nedenfor.
- Enhetstesting โ en enhet er et lite, testbart stykke kode. Enhetstesting utfรธres pรฅ en enkelt programvareenhet og utfรธres av utviklere.
- Integrasjonstesting โ utfรธres etter enhetstesting, ved รฅ kombinere de individuelle testbare enhetene. Dette utfรธres enten av utviklere eller testere.
- Systemtesting โ utfรธres for รฅ sikre at systemet oppfรธrer seg i henhold til kravene. Dette utfรธres vanligvis av testere nรฅr hele systemet er klart, etter at bygget er utgitt til QA-teamet.
- Akseptprรธving โ utfรธres for รฅ bekrefte om systemet oppfyller forretningskravene og er klart for bruk eller utrulling. Dette utfรธres vanligvis av sluttbrukerne.
Ikke-funksjonell testing
Ikke-funksjonell testing er en testteknikk som ikke fokuserer pรฅ funksjonelle aspekter, men i stedet konsentrerer seg om ikke-funksjonelle egenskaper ved systemet, som minnelekkasjer, ytelse eller robusthet. Ikke-funksjonell testing utfรธres pรฅ alle testnivรฅer.
Det finnes mange ikke-funksjonelle testteknikker, hvorav de viktigste er de fem nedenfor.
- Ytelsestesting โ sjekker om systemets responstid er normal, i henhold til kravene, under รธnsket nettverksbelastning.
- Gjenopprettingstesting โ verifiserer hvor godt et system gjenoppretter seg etter krasj og maskinvarefeil.
- Test av kompatibilitet โ verifiserer hvordan systemet oppfรธrer seg i ulike miljรธer.
- Sikkerhetstesting โ verifiserer applikasjonens robusthet, og sikrer at bare autoriserte brukere og roller har tilgang til systemet.
- Brukervennlighetstesting โ verifiserer systemets brukervennlighet for sluttbrukerne, og hvor komfortable disse brukerne er med det.
Dynamiske testteknikker
Nรฅr typene er avgjort, er det neste spรธrsmรฅlet hvordan en dynamisk testsyklus faktisk kjรธres.
Dynamiske testteknikker i STLC bestรฅ av oppgaver som kravanalyse for testene, testplanlegging, design og implementering av testcase, oppsett av testmiljรธ, utfรธrelse av testcase, feilrapportering og til slutt testavslutning. Hver oppgave i dynamisk testing avhenger av fullfรธringen av den forrige oppgaven i testprosessen.
Innenfor STLC starter den faktiske dynamiske testprosessen med testcasedesign. Diagrammet nedenfor viser rekkefรธlgen av aktiviteter, som hver er beskrevet etterpรฅ.
Fรธr man gรฅr inn i prosessen, mรฅ man avtale strategien som skal fรธlges for dynamisk testing.
En teststrategi bรธr hovedsakelig fokusere pรฅ tilgjengelige ressurser og tidsramme. Basert pรฅ disse to faktorene mรฅ testingens mรฅl, testingens omfang, testfasene eller -syklusene, typen miljรธ, antagelsene eller utfordringene som kan oppstรฅ, og risikoene dokumenteres.
Nรฅr strategien er definert og akseptert av ledelsen, starter den faktiske testcase-designprosessen.
Testdesign og implementering
I denne fasen identifiserer teamet fรธlgende.
- Funksjoner som skal testes
- Testbetingelser avledet fra disse funksjonene
- Dekningselementer utledet fra testforholdene
- Testtilfeller utledet fra dekningselementene
Svart boks teknikker for testdesign som ekvivalenspartisjonering, grenseverdianalyse, testing av beslutningstabell og testing av tilstandsovergang er det som gjรธr en testbetingelse om til et konkret sett med kjรธrbare tilfeller.
Test miljรธoppsett
Ocuco test miljรธ bรธr alltid vรฆre lik produksjonsmiljรธet. I denne fasen installeres byggingen og testmaskinene administreres og konfigureres.
Test utfรธrelse
I denne fasen blir testtilfellene faktisk utfรธrt, enten manuelt eller via automatisering, og de faktiske resultatene registreres mot de forventede resultatene.
Feilrapport fanget
Basert pรฅ utfรธrelsen, hvis forventede og faktiske resultater ikke er de samme, mรฅ testtilfellet markeres som Fail og en feil logges i feilhรฅndtering prosess.
Fordeler med dynamisk testing
- Dynamisk testing avdekker feil som anses som for vanskelige eller kompliserte รฅ fange opp, og som statisk analyse ikke kan dekke i det hele tatt.
- Programvaren kjรธres fra ende til annen, noe som hever kvaliteten pรฅ bรฅde produktet og prosjektet.
- Dynamisk testing er en viktig metode for รฅ oppdage sikkerhetstrusler i et kjรธrende system.
- Kjรธretidsfeil som minnelekkasjer, timingproblemer og integrasjonsfeil dukker opp her og ingen andre steder.
Ulemper med dynamisk testing
- Dynamisk testing er tidkrevende fordi det krever store mengder ressurser รฅ kjรธre applikasjonen eller koden.
- Det รธker kostnadene for prosjektet, fordi det ikke starter tidlig i programvarens livssyklus, og problemer som fikses i senere stadier koster mer รฅ reparere.
- Et produksjonslignende miljรธ og realistiske testdata er forutsetninger, og begge deler krever innsats รฅ bygge og vedlikeholde.


