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: