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.

  • ๐Ÿ—บ๏ธ Kjerneide: Testtilfeller kommer fra kodestrukturen i stedet for fra kravdokumentet.
  • ๐Ÿ”ข Fire trinn: Tegn kontrollflytgrafen, beregn syklomatisk kompleksitet, utled basissettet, skriv รฉn test per bane.
  • ๐Ÿ“ Antall testtilfeller: Antallet uavhengige baner er lik den syklomatiske kompleksiteten, noe som gir et objektivt mรฅl.
  • ๐Ÿ”„ Hybridmetode: Den kombinerer forgreningstesting og stitesting for รฅ oppnรฅ maksimal dekning med minimale tester.
  • โœ… Dekningsgaranti: Utfรธring av basissettet kjรธrer hver setning i modulen minst รฉn gang.
  • โš ๏ธ Kjent grense: Den kan ikke finne manglende krav, fordi den bare tester kode som allerede finnes.

Stitesting Basisstitesting

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.

Basis Path Testing i Software Engineering

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.

Spรธrsmรฅl og svar

Stitesting har som mรฅl รฅ kjรธre alle mulige stier, noe som er upraktisk i moduler som inneholder lรธkker. Basisstitesting kjรธrer bare de uavhengige stiene, et mye mindre sett som fortsatt dekker alle setninger og grener.

Nรธyaktig den syklomatiske kompleksiteten til modulen. Hvis V(G) er 4, finnes det 4 uavhengige baner og 4 testtilfeller er nรธdvendige for full grendekning.

Nei. Den bruker bare kode som allerede finnes, sรฅ et krav som aldri ble implementert gir ingen bane og ingen feilende test. De to teknikkene er komplementรฆre.

AI-verktรธy genererer inndataverdier som nรฅr bestemte grener, som er den tregeste manuelle delen av arbeidet. De flagger ogsรฅ utilgjengelige stier som indikerer dรธd kode.

Ja. Statiske analyseverktรธy har generert kontrollflytgrafer og kompleksitetstall i รฅrevis, og AI-assisterte verktรธy legger nรฅ til foreslรฅtte testinndata for hver uavhengige bane.

Oppsummer dette innlegget med: