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.

  • 🗺️ Kerneidé: Testcases kommer fra kodestrukturen snarere end fra kravdokumentet.
  • 🔢 Fire trin: Tegn kontrolflowgrafen, beregn den cyklomatiske kompleksitet, udled basissættet, og skriv én test pr. sti.
  • 📐 Antal testtilfælde: Antallet af uafhængige stier er lig med den cyklomatiske kompleksitet, hvilket giver et objektivt mål.
  • 🔄 Hybridmetode: Den kombinerer forgreningstest og stitest for at opnå maksimal dækning med minimale test.
  • Dækningsgaranti: Udførelse af basissættet kører hver sætning i modulet mindst én gang.
  • ⚠️ Kendt grænse: Den kan ikke finde manglende krav, fordi den kun tester kode, der allerede findes.

Stitestning Basis stitestning

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.

Basis Path Testing i Software Engineering

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.

Ofte Stillede Spørgsmål

Stitestning sigter mod at udføre alle mulige stier, hvilket er upraktisk i ethvert modul, der indeholder løkker. Basisstitestning udfører kun de uafhængige stier, et langt mindre sæt, der stadig dækker alle sætninger og brancher.

Præcis den cyklomatiske kompleksitet af modulet. Hvis V(G) er 4, så findes der 4 uafhængige stier, og 4 testtilfælde er nødvendige for fuld dækning af forgreninger.

Nej. Den udfører kun kode, der allerede findes, så et krav, der aldrig blev implementeret, producerer ingen sti og ingen fejlende test. De to teknikker er komplementære.

AI-værktøjer genererer inputværdier, der når specifikke grene, hvilket er den langsomste manuelle del af arbejdet. De markerer også utilgængelige stier, der indikerer død kode.

Ja. Statiske analyseværktøjer har genereret kontrolflowgrafer og kompleksitetstal i årevis, og AI-assisterede værktøjer tilføjer nu foreslåede testinput for hver uafhængig sti.

Opsummer dette indlæg med: