Da bismo razumjeli ciklomatičnu složenost, najprije shvatimo -
Što je softverska metrika?
Mjerenje nije ništa drugo do kvantitativna naznaka veličine / dimenzije / kapaciteta svojstva proizvoda / procesa. Softverska metrika definira se kao kvantitativna mjera atributa koji softverski sustav posjeduje s obzirom na cijenu, kvalitetu, veličinu i raspored.
Primjer-
Mjera - broj pogrešakaMjerni podaci - broj pronađenih pogrešaka po osobi
U ovom vodiču naučit ćete-
- Što je softverska metrika?
- Što je ciklomatična složenost?
- Oznaka grafa toka za program:
- Kako izračunati ciklomatičnu složenost
- Svojstva ciklomatične složenosti:
- Kako je ova metrika korisna za testiranje softvera?
- Više o V (G):
- Alati za izračunavanje složenosti cikloma:
- Upotrebe ciklomatične složenosti:
Ciklomatična složenost u ispitivanju softvera
Ciklomatična složenost u testiranju softvera mjerna je vrijednost koja se koristi za mjerenje složenosti softverskog programa. To je kvantitativna mjera neovisnih putova u izvornom kodu softverskog programa. Ciklomatična složenost može se izračunati pomoću grafikona protoka upravljanja ili s obzirom na funkcije, module, metode ili klase unutar softverskog programa.
Nezavisna staza definira se kao staza koja ima barem jedan rub koji nije prijeđen ni na jednom drugom putu.
Ovu je metriku razvio Thomas J. McCabe 1976. godine i temelji se na predstavljanju programa upravljanja protokom. Kontrolni tok prikazuje program kao graf koji se sastoji od čvorova i rubova.
Na grafikonu čvorovi predstavljaju zadatke obrade, dok rubovi predstavljaju kontrolni tok između čvorova.
Oznaka grafa toka za program:
Oznaka grafa toka za program definira nekoliko čvorova povezanih kroz rubove. Ispod su dijagrami protoka za izjave poput if-else, While, until i normalni slijed protoka.
Kako izračunati ciklomatičnu složenost
Matematički prikaz:
Matematički je postavljen neovisnim putovima kroz grafički dijagram. Složenost koda programa može se definirati pomoću formule -
V (G) = E - N + 2
Gdje,
E - Broj rubova
N - Broj čvorova
V (G) = P + 1
Gdje je P = broj čvorova predikata (čvor koji sadrži uvjet)
Primjer -
i = 0;n = 4; // N-broj čvorova prisutnih na grafikonudok (iGrafikon toka za ovaj program bit će
Računajući matematički,
- V (G) = 9 - 7 + 2 = 4
- V (G) = 3 + 1 = 4 (čvorovi stanja su 1,2 i 3 čvora)
- Basis Set - Skup mogućih puta izvršavanja 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
Svojstva ciklomatične složenosti:
Slijede svojstva ciklomatične složenosti:
- V (G) je maksimalni broj neovisnih putova na grafikonu
- V (G)> = 1
- G će imati jedan put ako je V (G) = 1
- Smanjite složenost na 10
Kako je ova metrika korisna za testiranje softvera?
Ispitivanje osnovnog puta jedna je od tehnika bijele kutije i jamči izvršavanje najmanje jedne izjave tijekom testiranja. Provjerava svaki linearno neovisni put kroz program, što znači da će broj testnih slučajeva biti jednak ciklomatičnoj složenosti programa.
Ova je metrika korisna zbog svojstava ciklomatične složenosti (M) -
- M može biti broj testnih slučajeva za postizanje pokrivenosti poslovnica (gornja granica)
- M može biti broj putova kroz grafikone. (Donja granica)
Razmotrite ovaj primjer -
Ako (uvjet 1)Izjava 1DrugoIzjava 2Ako (uvjet 2)Izjava 3DrugoIzjava 4Ciklomatična složenost ovog programa bit će 8-7 + 2 = 3.
Kako je složenost izračunata kao 3, potrebna su tri testna slučaja kako bi se obuhvatio cijeli put za gornji primjer.
Koraci koje treba slijediti:
Sljedeće korake treba slijediti za izračunavanje složenosti cikloma i dizajn test slučajeva.
Korak 1 - Konstrukcija grafa s čvorovima i rubovima iz koda
Korak 2 - Identifikacija neovisnih putova
Korak 3 - Proračun ciklomatične složenosti
Korak 4 - Dizajn test slučajeva
Jednom kad se formira osnovni skup, TEST CASES bi trebali biti napisani za izvršavanje svih staza.
Više o V (G):
Ciklomatična složenost može se izračunati ručno ako je program malen. Ako je program vrlo složen, treba koristiti automatizirane alate, jer to uključuje više grafova protoka. Na temelju broja složenosti, tim može zaključiti o radnjama koje treba poduzeti radi mjere.
Sljedeća tablica daje pregled broja složenosti i odgovarajućeg značenja v (G):
Broj složenosti Značenje 1-10 Strukturirani i dobro napisani kod Visoka provjerljivost Troškovi i napori su manji 10-20 Složeni kod Srednja provjerljivost Trošak i trud srednji su 20-40 Vrlo složeni kod Niska provjerljivost Troškovi i napori su visoki > 40 Nimalo provjerljivo Vrlo visoki troškovi i napor Alati za izračunavanje složenosti cikloma:
Dostupni su mnogi alati za određivanje složenosti aplikacije. Neki alati za izračunavanje složenosti koriste se za određene tehnologije. Složenost se može utvrditi brojem bodova odlučivanja u programu. Točke odluke su ako, za, za svaki, dok, ne, uhvati, izjave slučaja u izvornom kodu.
Primjeri alata su
- OCLint - Statički analizator koda za C i srodne jezike
- Dodavanje reflektora - mjerni podaci koda za .NET sklopove
- GMetrics - Pronađite mjerne podatke u aplikacijama povezanim s Javom
Upotrebe ciklomatične složenosti:
Ciklomatična složenost može se pokazati vrlo korisnom u
- Pomaže programerima i testerima u određivanju neovisnih izvršavanja puta
- Programeri mogu osigurati da su svi putovi barem jednom testirani
- Pomaže nam da se više usredotočimo na nepokrivene putove
- Poboljšati pokrivenost kodom u softverskom inženjerstvu
- Procijenite rizik povezan s aplikacijom ili programom
- Korištenje ovih mjernih podataka na početku ciklusa smanjuje veći rizik od programa
Zaključak:
Ciklomatična složenost softverska je metrika korisna za strukturirano ili White Box testiranje. Uglavnom se koristi za procjenu složenosti programa. Ako je više bodova pri odlučivanju, složenost programa je veća. Ako program ima veliki broj složenosti, tada je vjerojatnost pogreške velika s povećanjem vremena za održavanje i rješavanje problema.