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.

  • ๐ŸŽฏ Formรฅl: Valider reell kjรธretidsatferd, ikke dokumentene som beskriver den.
  • ๐Ÿ”€ To grener: Den hvite boksen undersรธker koden, mens den svarte boksen undersรธker oppfรธrselen.
  • ๐Ÿงฑ Fire nivรฅer: Enhets-, integrasjons-, system- og akseptansetesting utfรธrer alle kode.
  • โš™๏ธ Ikke-funksjonell: Ytelses-, gjenopprettings-, kompatibilitets-, sikkerhets- og brukervennlighetskontroller kjรธres her.
  • ๐Ÿ”„ Prosess: Strategi, testdesign, oppsett av testmiljรธ, utfรธrelse og feilrapportering.
  • ???? Avveining: Dypere feildeteksjon i bytte mot tid, miljรธ og kostnader.

Dynamisk testing, typer, teknikker og eksempler

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.

Dynamisk testing delt inn i hvit boks og svart boks med funksjonelle og ikke-funksjonelle nivรฅer

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รฅ.

Dynamisk testprosessflyt fra testdesign via utfรธrelse til feilrapportering

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.

Spรธrsmรฅl og svar

Utviklere eier den hvite boksen, og kjรธrer enhets- og komponentkontroller. Kvalitetssikringstestere eier den svarte boksen, fra systemtesting og utover. Sluttbrukere avslutter syklusen med aksepttesting.

Modeller leser krav og eksisterende tilfeller, og foreslรฅr deretter grenseverdier, ugyldige input og tilstandssekvenser som en menneskelig backlog vanligvis hopper over. En tester bekrefter fortsatt hvert forventede resultat fรธr utfรธrelse.

Ja. Stillas for pรฅstander, sideobjekter og oppsett av inventar er repeterende kode som en assistent hรฅndterer godt. ร… avgjรธre hva som utgjรธr riktig oppfรธrsel forblir en menneskelig vurdering forankret i kravene.

Enhetsrammeverk som JUnit, TestNG og pytest, pluss UI- og API-kjรธrere som Selenium, Cypress og PostmanLast inn verktรธy som JMeter dekke den ikke-funksjonelle siden av automatisering.

Hvitboks-arbeidsrapporter, uttalelse, forgrenings- og stidekning fra instrumenterte kjรธringer. Svartboks-arbeidsrapporter krav og testtilstandsdekning. Ingen av tallene alene beviser at bygget er tilstrekkelig testet.

Nei. Dynamisk testing beskriver utfรธring av koden, uansett hvem eller hva som driver den. Et skript hรฅndbok run og en automatisert regresjonssuite er begge dynamisk testing.

Ja. Dynamisk sikkerhetstesting av applikasjoner undersรธker et kjรธrende program utenfra, akkurat som en svart boks. sikkerhetstesting gjรธr, og rapporterer sรฅrbarheter som bare oppstรฅr under kjรธretid.

Det er ryggraden i รฉn. Enhets- og API-suiter porterer hver commit, mens de lenger regresjon og ytelseskjรธringer kjรธres hver natt mot en distribuert build.

Oppsummer dette innlegget med: