what is cyclomatic complexity learn with an example
Ciklomatična kompleksnost je zelo pogosta beseda v razvojni skupnosti. Ta tehnika se uporablja predvsem za ugotavljanje zapletenosti kode ali funkcionalnosti.
Tehniko je razvil MaCabe in pomaga prepoznati spodnja 3 vprašanja za programe / funkcije
- Ali je funkcijo / program mogoče preizkusiti?
- Ali funkcijo / program razumejo vsi?
- Je funkcija / program dovolj zanesljiv?
Kot QA lahko s to tehniko določimo 'raven' našega testiranja. Praksa je, da če je rezultat ciklomatske zapletenosti večje ali večje število, menimo, da je ta del funkcionalnosti kompleksne narave, zato sklepamo kot preizkuševalec; da del kode / funkcionalnosti zahteva poglobljeno testiranje.
Po drugi strani pa, če je rezultat ciklomatske kompleksnosti manjše število, kot QA ugotavljamo, da je funkcionalnost manj zapletena, in ustrezno določimo obseg.
Naj grem korak za korakom: najprej razumemo, kako se izračuna, nato pa bomo nadaljevali, da bomo razumeli, kako se določa stopnja testiranja.
Kaj se boste naučili:
- Kako izračunati ciklomatično kompleksnost?
- Formula ciklomatične kompleksnosti
- Primer ciklomatske kompleksnosti
- Kako ga lahko preizkuševalci uporabljajo?
- Zdaj pride bližnjica-
- Priporočeno branje
Kako izračunati ciklomatično kompleksnost?
Izračun CC se vrti okoli 2 konceptov
- Vozlišča
- Robovi
Izjave v programu so predstavljene kot vozlišča, krmilne poti iz enega stavka v drugega pa z robovi.
Formula ciklomatične kompleksnosti
Formula za izračun CC je taka:
CC = E ~ N + 2
Kje:
E = število robov
N = število vozlišč.
kaj je testni primer pri testiranju programske opreme s primerom
(Obstaja bližnjica za izračun, zdaj pa ne ... kasneje ...)
Primer ciklomatske kompleksnosti
Vzemimo spodnji primer, da ga razumemo.
Upoštevajte spodnji graf krmilnega toka:
Postavil sem MREŽA pike za prepoznavanje vozlišč in MODRA črte za prepoznavanje robov:
Torej, v tem primeru:
Število vozlišč (rdeče pike) = 14
Število robov (modre črte) = 15
Torej je ciklomatična kompleksnost = N ~ E + 2 = (14-15) +2 = 3
Kako ga lahko preizkuševalci uporabljajo?
V resničnem svetu lahko preizkuševalci sedijo z razvijalci, da izpeljejo graf krmilnega toka za določen del kode. In ko imamo graf, lahko s pomočjo te formule ugotovimo zapletenost. Toda zgodba za preizkuševalce se tu še ne konča: - glavna točka je - kakšna je uporaba te številke za preskusno skupino?
No, preizkuševalci lahko to številko uporabijo za določitev stopnje preskušanja.
V praksi obstajata 2 stopnji testiranja:
- Preizkušanje dolžine
- Preizkus širine
Za različne značilnosti katerega koli modula upoštevajte spodnjo matriko: -
Preizkušanje dolžine je način, na katerega poskušamo pokriti celoten obseg z izbiro pomembnih testnih primerov za vsako funkcijo. Na primer , v tem primeru domnevam, da se odločim za preskus dolžine, potem lahko izberem -
- Podznačilka 1.1 in podfunkcija 1.3 za funkcijo 1
- Podfunkcija 2.2 iz funkcije 2
- Sub Feature 3.3 iz Feature 3
- Sub Feature 4.2 in Sub Feature 4.3 from Feature 4
- Sub Feature 5.3 iz Feature 5
Tukaj se torej dotaknem celotne funkcije, ne da bi se spuščala v izčrpne podrobnosti podfunkcij.
Če je rezultat CC večje, potem se odločim za testiranje širine, dejansko bom preizkusil vsako funkcijo skupaj z vsako podfunkcijo.
Na podlagi vaše trenutne projektne zahteve, zanesljivosti okolja lahko preizkuševalci sodelujejo skupaj z razvojno skupino in ustvarijo standard za identifikacijo ravni in obsega testiranja. Na primer -
- Če CC<=15 – Basic sanity test
- Če je CC med 16 in 30 - preskušanje dolžine
- Če je CC med 31 in 50 - preizkus širine
- Če je CC> 50 - gre za kaotično funkcionalnost in jo je treba dodatno razgraditi
Zdaj pride bližnjica-
Samo preštejte število zaprtih regij in mu dodajte 1.
V našem zgornjem primeru - število zaprtih regij = 2 (izpolnjeno z rumeno), torej je CC = 2 + 1 = 3
V resničnem delu je zelo težko zaključiti rezultat, ko dajemo izjave, kot so -
- '... .. to funkcionalnost je zelo težko izvesti'
Kaj mislite s težavo? Je zapleteno, zapleteno ali kaotično?
Kako ste ugotovili, da je to težko?
- '... to bi moralo biti na voljo do konca dneva'
Kaj je konec dneva? Vaš konec dneva je 19.00, verjetno je moj 18.00?
- '... za to bi moral opraviti podrobna testiranja'
Kaj je podrobno testiranje? Tehnike testiranja, imenovane 'Podrobno testiranje', ni
- '… Koda mora biti kakovostna, preden jo namestimo v QA'
Kako merite dobro kakovost?
Namesto tega, če preoblikujem izjave kot -
Ciklomatična kompleksnost za del kode se izračuna kot 75 in v skladu z našimi standardi; ta funkcionalnost je narave kaosa. Zato priporočamo nadaljnjo razgradnjo.
Končano
- '... .. to funkcionalnost je zelo težko izvesti'
Funkcionalnost bo uporabljena v okolju QA do 17.00 CST.
Končano
- '.... to bi moralo biti na voljo do konca dneva'
Ker je ciklomatska kompleksnost izračunana kot 48, bi v skladu z našim standardom testiranje sistemov izvajali skupaj s testiranjem integracije in regresije za funkcijo.
Končano
- '.... Za to bi moral opraviti podrobna testiranja'
Glede na Sonar je CC zdaj 102. Standardizirali smo tako, da ima CC na 10. Kodo bomo uvedli, ko bomo izboljšali kodo, da bo CC manjši od 10.
Končano
- '.... koda mora biti kakovostna, preden jo uvedemo v QA'
Kakšna je razlika med obema trditvama?
No, tu je razlika v merjenju. Vsako svojo izjavo sem podprl z ustreznimi meritvami, ki bi mojim zainteresiranim stranem pomagale natančno vedeti, kaj želim povedati.
Podobno uporabite Cyclomatic zapletenost pri preskušanju programske opreme, da določite natančno merilo svojih prizadevanj za testiranje, in z njim lahko določite ne samo obseg testiranja, temveč tudi vrste preskusov, ki bi jih morali opraviti.
Priporočeno branje
- Kaj je testiranje komponent ali testiranje modulov (naučite se s primeri)
- Kaj je primerjalno testiranje (naučite se s primeri)
- E-knjiga za preizkušanje programske opreme
- Kaj je preizkušanje sistemske integracije (SIT): Naučite se s primeri
- Najboljša orodja za testiranje programske opreme 2021 (QA Test Automation Tools)
- Preizkus eBook Prenos knjige
- 5 pomembnih diagramov, ki se jih morajo preizkuševalci naučiti uporabljati
- Vadnica za pregled TestRail: Naučite se vodenja testnih primerov od konca do konca