Stitesting og basisstitesting i programvare med eksempler
โก Smart oppsummering
Basis Path Testing er en hvitboksteknikk som utleder testtilfeller fra de logiske stiene gjennom et program, ved hjelp av en kontrollflytgraf og syklomatisk kompleksitet for รฅ finne det minste uavhengige stisettet.

Hva er banetesting i programvaretesting?
Path testing er en strukturell testmetode som innebรฆrer รฅ bruke kildekoden til et program for รฅ finne alle mulige kjรธrbare stier. Det hjelper รฅ finne alle feil som ligger innenfor et stykke kode. Denne metoden er utformet for รฅ kjรธre hele eller valgt bane gjennom et dataprogram.
Ethvert ikke-trivielt program inneholder mange mulige utfรธrelsesbaner. Det er bรฅde vanskelig og tidkrevende รฅ teste hver og en av dem, og de fleste av dem overlapper hverandre. Basisbanetesting reduserer denne redundansen ved รฅ identifisere det minste settet med baner som fortsatt utรธver hver setning og hver gren minst รฉn gang.
Basis Path Testing i Software Engineering
Grunnleggende banetesting i programvareteknikk er en Hvit Box Testing metode der testtilfeller defineres basert pรฅ flyter eller logiske veier som kan tas gjennom programmet. Mรฅlet med basisbanetesting er รฅ definere antall uavhengige stier, slik at antall testtilfeller som trengs kan defineres eksplisitt for รฅ maksimere testdekningen.
In software engineering, Basisbanetesting innebรฆrer utfรธrelse av alle mulige blokker i et program og oppnรฅr maksimal banedekning med minst antall testtilfeller. Det er en hybrid metode for grentesting og banetestingsmetoder.
Et enkelt eksempel gjรธr ideen konkret.
Flytgrafen ovenfor inneholder betingelsessetninger, slik at kontrollen kan nรฅ utgangen via mer enn รฉn rute. Tre uavhengige stier er nรธdvendig for รฅ dekke den:
- Sti 1: 1,2,3,5,6, 7
- Sti 2: 1,2,4,5,6, 7
- Sti 3: 1, 6, 7
Hvordan tegne en kontrollflytgraf
Hvert trinn i testing av basisbanen avhenger av kontrollflytgrafen, sรฅ det er verdt รฅ vรฆre presis om hvordan en er bygd opp.
- node: en sekvens av utsagn som alltid utfรธres sammen, tegnet som en sirkel. En rekke utsagn uten gren kollapser til en enkelt node.
- Kant: en overfรธring av kontroll fra รฉn node til den neste, tegnet som en pil. Kanter er den eneste mรฅten kontroll beveger seg pรฅ.
- Predikatnode: en node som inneholder en betingelse, med to eller flere kanter som forlater den. Disse styrer kompleksitetstellingen.
- Region: et omrรฅde avgrenset av kanter og noder. Antall regioner pluss รฉn er ogsรฅ lik den syklomatiske kompleksiteten.
Tenk deg en kort modul med to avgjรธrelser:
if (a > b) { // node 1, predicate max = a; // node 2 } else { max = b; // node 3 } if (max > limit) { // node 4, predicate alert(); // node 5 } return max; // node 6
Grafen har 6 noder og 6 kanter, noe som gir V(G) = 6 โ 6 + 2 = 2 ifรธlge kantformelen. Predikattellingen gir samme svar raskere: 2 avgjรธrelser pluss 1 er lik 3 uavhengige baner gjennom de to grenene tatt sammen. Bruk den formen du kan beregne pรฅlitelig, og kryssjekk med den andre.
To regler som forhindrer de fleste feil. Fรธrst en sammensatt tilstand som hvis (x > 0 og y > 0) teller som to predikatnoder, ikke รฉn, fordi kortslutningen skaper en andre beslutning. For det andre bidrar en lรธkke med รฉn predikatnode uavhengig av hvor mange ganger den itererer.
Fremgangsmรฅte for testing av basisbane
De grunnleggende trinnene involvert i basisbanetesting inkluderer
- Tegn en kontrollgraf (for รฅ bestemme forskjellige programbaner)
- Beregn Syklomatisk kompleksitet (beregninger for รฅ bestemme antall uavhengige stier)
- Finn et basissett med stier
- Generere test tilfeller รฅ utรธve hver sti
Fordeler og begrensninger ved basisbanetesting
Fordeler med basisbanetesting
- Det bidrar til รฅ redusere de overflรธdige testene
- Den fokuserer oppmerksomheten pรฅ programlogikk
- Den erstatter vilkรฅrlig utvalg av testtilfeller med et analytisk grunnlag
- Testtilfeller som utรธver basissett vil utfรธre hver setning i et program minst รฉn gang
Begrensninger ved testing av basisstier
- Den kan ikke finne manglende kode. Et krav som aldri ble implementert har ingen bane, sรฅ ingen test vil bli generert for det. Basisbanetesting mรฅ kobles til kravbasert testing.
- Antall stier vokser raskt. Nestede lรธkker og sammensatte betingelser รธker kompleksiteten raskt, og en modul med V(G) over 20 blir upraktisk รฅ dekke pรฅ denne mรฅten.
- Dekning er ikke korrekthet. ร kjรธre en sti beviser at koden kjรธrer, ikke at den produserer riktig svar. Hver test trenger fortsatt en meningsfull pรฅstand.
- Dataavhengige stier. Noen stier er bare tilgjengelige med spesifikke inndatakombinasjoner som kan vรฆre vanskelige eller umulige รฅ konstruere.

