Mccabejeva ciklomatična kompleksnost: izračunajte z grafom pretoka (primer)

Kazalo:

Anonim

Da bi razumeli ciklomatično kompleksnost, najprej razumemo -

Kaj je programska metrika?

Merjenje ni nič drugega kot kvantitativna navedba velikosti / dimenzije / zmogljivosti lastnosti izdelka / procesa. Metrika programske opreme je opredeljena kot kvantitativno merilo lastnosti, ki ga ima programski sistem glede na stroške, kakovost, velikost in razpored.

Primer-

Ukrep - število napakMeritve - število najdenih napak na osebo

V tej vadnici boste izvedeli-

  • Kaj je programska metrika?
  • Kaj je ciklomatična kompleksnost?
  • Zapis grafa pretoka za program:
  • Kako izračunati ciklomatsko zapletenost
  • Lastnosti ciklomatske kompleksnosti:
  • Kako je ta meritev uporabna za testiranje programske opreme?
  • Več o V (G):
  • Orodja za izračun ciklomatske kompleksnosti:
  • Uporabe ciklomatične kompleksnosti:

Ciklomatična kompleksnost pri preskušanju programske opreme

Ciklomatična kompleksnost pri preizkušanju programske opreme je testna metrika, ki se uporablja za merjenje zahtevnosti programske opreme. Je kvantitativno merilo neodvisnih poti v izvorni kodi programske opreme. Ciklomatično zapletenost lahko izračunamo z uporabo grafov krmilnih tokov ali glede na funkcije, module, metode ali razrede znotraj programske opreme.

Neodvisna pot je definirana kot pot z vsaj enim robom, ki še ni bil prehoden na nobeni drugi poti.

To metriko je razvil Thomas J. McCabe leta 1976 in temelji na predstavitvi krmilnega toka programa. Nadzorni tok prikazuje program kot graf, ki je sestavljen iz vozlišč in robov.

V grafu vozlišča predstavljajo naloge obdelave, robovi pa nadzorni tok med vozlišči.

Zapis grafa pretoka za program:

Zapis grafa pretoka za program definira več vozlišč, povezanih skozi robove. Spodaj so diagrami pretoka za stavke, kot so if-else, While, dokler in normalno zaporedje pretoka.

Kako izračunati ciklomatsko zapletenost

Matematični prikaz:

Matematično je nastavljena na neodvisne poti skozi grafični diagram. Zapletenost kode programa lahko določimo s formulo -

V (G) = E - N + 2

Kje,

E - Število robov

N - število vozlišč

V (G) = P + 1

Kjer je P = število vozlišč predikatov (vozlišče, ki vsebuje pogoj)

Primer -

i = 0;n = 4; // N-število vozlišč, prisotnih v grafumedtem ko (i 

Graf poteka za ta program bo

Računalništvo matematično,

  • V (G) = 9 - 7 + 2 = 4
  • V (G) = 3 + 1 = 4 (vozlišča pogojev so 1,2 in 3 vozlišča)
  • Basis Set - niz možnih izvedbenih poti programa
  • 1, 7
  • 1, 2, 6, 1, 7
  • 1, 2, 3, 4, 5, 2, 6, 1, 7
  • 1, 2, 3, 5, 2, 6, 1, 7

Lastnosti ciklomatske kompleksnosti:

Sledijo lastnosti ciklomatske kompleksnosti:

  1. V (G) je največje število neodvisnih poti v grafu
  2. V (G)> = 1
  3. G bo imel eno pot, če je V (G) = 1
  4. Zmanjšajte zahtevnost na 10

Kako je ta meritev uporabna za testiranje programske opreme?

Preskušanje osnovne poti je ena izmed tehnik bele škatle in zagotavlja, da se med testiranjem izvede vsaj en stavek. Preveri, da je vsaka linearno neodvisna pot skozi program, kar pomeni, da je število testnih primerov enakovredno ciklomatični zapletenosti programa.

Ta metrika je uporabna zaradi lastnosti ciklomatične kompleksnosti (M) -

  1. M je lahko število testnih primerov za doseganje pokritosti podružnic (zgornja meja)
  2. M je lahko število poti skozi grafe. (Spodnja meja)

Razmislite o tem primeru -

Če (pogoj 1)Izjava 1DrugačeIzjava 2Če (pogoj 2)Izjava 3DrugačeIzjava 4

Ciklomatična kompleksnost tega programa bo 8-7 + 2 = 3.

Ker je zapletenost izračunana kot 3, so za popolno pokritost poti za zgornji primer potrebni trije primeri.

Koraki:

Za računanje ciklomatske zapletenosti in načrtovanje testnih primerov je treba upoštevati naslednje korake.

1. korak - konstrukcija grafa z vozlišči in robovi iz kode

2. korak - Identifikacija neodvisnih poti

3. korak - Izračun ciklomatske kompleksnosti

4. korak - Oblikovanje testnih primerov

Ko je osnovni nabor oblikovan, je treba za preizkus primerov zapisati vse poti.

Več o V (G):

Ciklomatsko zapletenost lahko izračunamo ročno, če je program majhen. Če je program zelo zapleten, je treba uporabiti avtomatizirana orodja, saj gre za več grafov pretoka. Na podlagi številke zahtevnosti lahko skupina sklene o ukrepih, ki jih je treba izvesti za ukrepanje.

Naslednja tabela daje pregled številke kompleksnosti in ustreznega pomena v (G):

Številka zahtevnosti Pomen
1-10 Strukturirana in dobro napisana koda Stroški in napor visokih preizkusov so manjši
10–20 Kompleksna koda Srednja preizkusnost Stroški in napor so srednji
20-40 Zelo zapleteni stroški in napor pri nizki preizkusnosti so visoki
> 40 Sploh ni mogoče preizkusiti Zelo visoki stroški in napor

Orodja za izračun ciklomatske kompleksnosti:

Na voljo je veliko orodij za določanje zahtevnosti aplikacije. Za določene tehnologije se uporabljajo nekatera orodja za izračun zapletenosti. Kompleksnost je mogoče najti po številu odločitvenih točk v programu. Odločitvene točke so, če za, za vsakega, medtem ko, do, ujeti, stavek v izvorni kodi.

Primeri orodij so

  • OCLint - Statični analizator kode za C in sorodne jezike
  • Metoda dodajanja reflektorja - koda za sklope .NET
  • GMetrics - Poiščite meritve v aplikacijah, povezanih z Javo

Uporabe ciklomatične kompleksnosti:

Ciklomatična zapletenost se lahko izkaže kot zelo koristna pri

  • Razvijalcem in preizkuševalcem pomaga pri določanju neodvisnih izvedb poti
  • Razvijalci lahko zagotovijo, da so bile vse poti preizkušene vsaj enkrat
  • Pomaga nam, da se bolj osredotočimo na odkrite poti
  • Izboljšajte pokritost kode v programskem inženirstvu
  • Ocenite tveganje, povezano z aplikacijo ali programom
  • Uporaba teh meritev na začetku cikla zmanjša večje tveganje za program

Zaključek:

Ciklomatična kompleksnost je programska metrika, uporabna za strukturirano preskušanje ali testiranje po beli škatli. Uporablja se predvsem za ocenjevanje zahtevnosti programa. Če je odločitvenih točk več, je zapletenost programa večja. Če ima program visoko kompleksnost, je verjetnost napake velika s podaljšanim časom za vzdrževanje in odpravljanje težav.