Stitestning og basisstitestning i software med eksempler
⚡ Smart opsummering
Basis Path Testing er en white box-teknik, der udleder testcases fra de logiske stier gennem et program ved hjælp af en kontrolflowgraf og cyklomatisk kompleksitet til at finde det minimale uafhængige stisæt.

Hvad er stitest i softwaretest?
Stitest er en strukturel testmetode, der involverer brug af kildekoden til et program for at finde alle mulige eksekverbare stier. Det hjælper med at bestemme alle fejl, der ligger inden for et stykke kode. Denne metode er designet til at udføre hele eller udvalgte stier gennem et computerprogram.
Ethvert ikke-trivielt program indeholder mange mulige udførelsesstier. Det er både vanskeligt og tidskrævende at teste hver enkelt af dem, og de fleste af dem overlapper hinanden. Basissti-testning reducerer denne redundans ved at identificere det mindste sæt af stier, der stadig udfører hver sætning og hver branch mindst én gang.
Basis Path Testing i Software Engineering
Basisstitestning i software engineering er en Hvid Box Test metode, hvor testcases defineres ud fra flows eller logiske stier, der kan tages gennem programmet. Formålet med basisstitest er at definere antallet af uafhængige stier, så antallet af nødvendige testcases kan defineres eksplicit for at maksimere testdækningen.
In software Engineering, Basisstitest involverer udførelse af alle mulige blokke i et program og opnår maksimal stidækning med det mindste antal testcases. Det er en hybrid metode til grentestning og stitestmetoder.
Et simpelt eksempel gør ideen konkret.
Ovenstående flowgraf indeholder betingede udsagn, så kontrollen kan nå udgangen ad mere end én rute. Tre uafhængige stier er nødvendige for at dække den:
- Sti 1: 1,2,3,5,6, 7
- Sti 2: 1,2,4,5,6, 7
- Sti 3: 1, 6, 7
Sådan tegner du en kontrolflowgraf
Hvert trin i basisstitestningen afhænger af kontrolflowgrafen, så det er værd at være præcis omkring, hvordan en er opbygget.
- Knude: en rækkefølge af udsagn, der altid udføres sammen, tegnet som en cirkel. En række udsagn uden forgrening kollapser til en enkelt node.
- kant: en overførsel af kontrol fra en node til den næste, tegnet som en pil. Kanter er den eneste måde, hvorpå kontrol bevæger sig.
- Prædikatnode: en node, der indeholder en betingelse, med to eller flere kanter, der forlader den. Disse styrer kompleksitetstællingen.
- Region: et område afgrænset af kanter og knuder. Antallet af regioner plus én er også lig med den cyklomatiske kompleksitet.
Overvej et kort modul med to beslutninger:
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 knuder og 6 kanter, hvilket giver V(G) = 6 – 6 + 2 = 2 ifølge kantformlen. Prædikatantallet giver det samme svar hurtigere: 2 beslutninger plus 1 er lig med 3 uafhængige stier gennem de to grene taget tilsammen. Brug den form, du kan beregne pålideligt, og krydstjek med den anden.
To regler, der forhindrer de fleste fejl. For det første en sammensat tilstand som f.eks. hvis (x > 0 && y > 0) tæller som to prædikatnoder, ikke én, fordi kortslutningen skaber en anden beslutning. For det andet bidrager en løkke med én prædikatnode uanset hvor mange gange den itererer.
Trin til test af basissti
De grundlæggende trin involveret i basisstitest inkluderer
- Tegn en kontrolgraf (for at bestemme forskellige programstier)
- Beregn Cyklomatisk kompleksitet (metrics til at bestemme antallet af uafhængige stier)
- Find et basissæt af stier
- Generer test tilfælde at udøve hver sti
Fordele og begrænsninger ved basissti-testning
Fordele ved basissti-testning
- Det er med til at reducere de overflødige tests
- Det fokuserer opmærksomheden på programlogik
- Den erstatter vilkårlig udvælgelse af testcases med et analytisk grundlag
- Testcases, som udøver basissæt, vil udføre hver sætning i et program mindst én gang
Begrænsninger ved basissti-testning
- Den kan ikke finde manglende kode. Et krav, der aldrig er blevet implementeret, har ingen sti, så der vil ikke blive genereret nogen test for det. Basissti-testning skal parres med kravbaseret testning.
- Antallet af stier vokser hurtigt. Indlejrede løkker og sammensatte betingelser øger kompleksiteten hurtigt, og et modul med V(G) over 20 bliver upraktisk at dække på denne måde.
- Dækning er ikke korrekthed. Udførelse af en sti beviser, at koden kører, ikke at den producerer det rigtige svar. Hver test kræver stadig en meningsfuld påstand.
- Dataafhængige stier. Nogle stier kan kun nås med specifikke inputkombinationer, der kan være svære eller umulige at konstruere.

