Hva er modultesting? Definisjon, eksempler
โก Smart oppsummering
Modultesting sjekker individuelle delprogrammer, subrutiner, klasser og prosedyrer i stedet for det samlede programmet, slik at feil dukker opp i en liten, godt forstรฅtt kodeblokk hvor de fortsatt er billige รฅ finne og reparere.
Hva er modultesting?
Modultesting er en type programvaretesting som sjekker individuelle delprogrammer, subrutiner, klasser eller prosedyrer i et program. I stedet for รฅ teste hele programvaren samtidig, anbefaler modultesting รฅ teste programmets mindre byggesteiner.
Modultesting er i stor grad hvitboksorientert. Mรฅlet med modultesting er ikke รฅ demonstrere at modulen fungerer som den skal, men รฅ demonstrere tilstedevรฆrelsen av en feil i den. Denne inversjonen er viktig: en kjรธring som ikke finner noe har bekreftet svรฆrt lite, mens en kjรธring som avslรธrer en feil har gjort jobben sin.
Modulnivรฅtesting tillater ogsรฅ at parallellisme introduseres i testprosessen, fordi det skaper muligheten til รฅ teste flere moduler samtidig i stedet for รฅ vente pรฅ en komplett bygging.
Hvorfor gjรธre modultesting
Modultesting anbefales fordi det endrer รธkonomien ved feildeteksjon.
- Sannsynligheten for รฅ identifisere feil eller bugs i mindre deler av et program blir hรธyere.
- Flere moduler kan testes samtidig, og tilnรฆrmingen stรธtter derfor parallell testing.
- Kompleksiteten i testingen kan hรฅndteres enkelt, siden hver modul resonneres for seg selv.
- En feil funnet inne i รฉn modul er tractilgjengelig for en liten mengde kode, slik at feilsรธkingstiden reduseres kraftig.
Hvordan utfรธre modultesting?
Designe en testforsรธk er det viktige segmentet av modultesting. Nรฅr en tester utformer testtilfeller for en modultest, mรฅ vedkommende ta hensyn til to ting.
- Spesifikasjon for modulen
- Modulens kildekode
Analyser modulens logikk ved รฅ bruke ett eller flere av hvit boks metoder, og deretter supplere disse testtilfellene ved รฅ bruke svart boks metoder til modulspesifikasjonen. Realistiske verdier er like viktige som de valgte stiene, sรฅ forbered testdata ved siden av sakene heller enn etterpรฅ.
Nรฅr testtilfellene er utformet, er neste trinn รฅ kombinere modulene for testing. Metoden som brukes er enten en inkrementell eller ikke-inkrementell metoden.
- Ikke-inkrementell metode โ alle moduler testes uavhengig. Fรธrst kombineres alle modulene og deretter tester hele programmet.
- Inkrementell metode โ hver modul testes fรธrst og legges deretter gradvis til den testede samlingen. Den utfรธrer en trinnvis ny testing.
- Innenfor trinnvis testing finnes det to tilnรฆrminger, topp ned og nede opp testing.
- For รฅ kjรธre modulen med de valgte dataene, kreves det en driver for รฅ levere testdataene, overvรฅke utfรธrelsen og registrere resultatene.
Valget mellom de to metodene er en avveining mellom oppsettinnsats og diagnostiserbarhet.
| Aspekt | Inkrementell metode | Ikke-inkrementell metode |
| Kombinasjon | รn modul om gangen, lagt til i en testet samling | Alle moduler kombinert, deretter testet sammen |
| Stillas nรธdvendig | Flere drivere og stubber, skrevet progressivt | Fรฆrre testdobler, siden ekte moduler er til stede |
| Feilsรธking | Sterk โ en feil peker pรฅ modulen som nettopp ble lagt til | Svak โ en feil kan oppstรฅ hvor som helst |
| Passer best til | Store bygg med mange samvirkende moduler | Smรฅ programmer med fรฅ moduler og lav kobling |
Drivere og stubber i modultesting
Driveren nevnt ovenfor er den ene halvdelen av et par. Fordi en modul under test sjelden sitter รธverst eller nederst i anropskjeden, erstatter testere det som mangler pรฅ hver side av den med dummykode.
- Driver โ erstatter den kallende modulen over den som testes. Den leverer testdataene, kaller modulen, overvรฅker utfรธrelsen og registrerer resultatene. Bottom-up-testing er avhengig av drivere, fordi de lavere modulene er klare fรธr de hรธyere.
- stub โ erstatter en kalt modul under den som testes. Den aksepterer kallet og returnerer et fast, kjent svar slik at modulen som testes kan fullfรธre banen sin. Top-down-testing er avhengig av stubber, fordi de hรธyere modulene er klare fรธrst.
Et bearbeidet tilfelle gjรธr sammenkoblingen konkret. Hvis en betalingsberegningsmodul er ferdig mens kasseskjermen som kaller den ikke er det, mater en sjรฅfรธr modulen et sett med ordretotaler og registrerer hva som kommer tilbake. Hvis skatteoppslagstjenesten som modulen kaller ogsรฅ er uferdig, returnerer en stub en fast skattesats, slik at beregningen fortsatt kjรธrer. Ingen av stillasdelene leveres; begge forkastes nรฅr de virkelige modulene ankommer, og det er derfor misforstรฅelser av testdobler blir oppfรธrt senere som en tilbakevendende utfordring.
Eksempeltips for modultesting
Her er noen tips du bรธr vurdere fรธr du utfรธrer modulesting.
- RevSe testtilfeller fรธr du bruker dem.
- Unngรฅ forvirring rundt kilden til avvikene.
- Bruk automatiserte testverktรธy.
- Undersรธk variabler som skal vรฆre uendret.
- Bytt moduler mellom testere for รฅ unngรฅ selvtester.
- Bruk testtilfellene pรฅ nytt.
Det femte tipset har mer vekt enn lengden antyder. En utvikler som bare tester modulen som nettopp er skrevet, gjentar de samme antagelsene som forรฅrsaket feilen, sรฅ det รฅ rotere moduler mellom folk er en av de billigste kvalitetsgevinstene som er tilgjengelige.
Enhetstesting vs modultesting
De to begrepene brukes om hverandre i mange team, men forfatterskapet og omfanget er forskjellige.
| Modultesting | Enhetstesting |
| Modultester er en samling tester skrevet av en tester etter at noe kode er skrevet av en utvikler | Enhetstester er en samling tester skrevet av en utvikler under programvareutviklingsprosessen |
| Modultesting kan innebรฆre รฅ kombinere enhetstestene | Enhetstesting kan teste enheter isolert |
Modultesting vs. komponenttesting vs. integrasjonstesting
Modultesting ligger ogsรฅ ved siden av to tilstรธtende nivรฅer som er lette รฅ forveksle med. Tabellen skiller dem etter hva som testes og hvem som vanligvis utfรธrer det.
| Aspekt | Modultesting | Komponenttesting | Integrasjonstesting |
| Under testing | Ett delprogram, en klasse eller en prosedyre | En selvstendig komponent med sine umiddelbare avhengigheter | Grensesnittene mellom kombinerte moduler |
| Vanlig eier | Tester, etter at koden er skrevet | tester | Integrasjonstester |
| stillas | Drivere og stubber | Stubber for eksterne avhengigheter | Gradvis fรฆrre testdobler |
| Feil eksponert | Logikkfeil inne i modulen | Oppfรธrselsfeil i komponenten | Grensesnitt- og dataoverfรธringsfeil |
I daglig bruk komponenttesting og modultesting blir ofte behandlet som den samme aktiviteten, mens integrasjonstesting starter fรธrst nรฅr de enkelte modulene er bestรฅtt hver for seg.
Utfordringer i modultesting
Dette er utfordringene team mรธter oftest nรฅr modultesting introduseres.
- Ikke-inkrementell testing krever mer arbeid โ รฅ kombinere alt fรธrst betyr at รฉn enkelt feil kan sende testere tilbake gjennom hele programmet.
- Misforstรฅelse test dobles โ en stubb som returnerer en urealistisk verdi produserer en grรธnn lรธp som ikke beviser noe.
- Feilsรธking av tester ofte โ stillaskode har sine egne feil, og tid brukt pรฅ รฅ fikse en driver er tid som ikke brukes pรฅ รฅ teste modulen.
- Trenger รฅ forstรฅ koden โ den hvite boksorienteringen betyr at en tester som ikke kan lese modulen, ikke kan designe meningsfulle tilfeller for den.
