Ciklomatska složenost u testiranju softvera (primjer)
Što je McCabeova ciklomatska složenost?
Ciklomatska složenost u testiranju softvera je metrika testiranja koja se koristi za mjerenje složenosti softverskog programa. To je kvantitativna mjera neovisnih putanja u izvornom kodu softverskog programa. Ciklomatska složenost može se izračunati korištenjem kontrolnih grafova toka ili s obzirom na funkcije, module, metode ili klase unutar softverskog programa.
Nezavisna staza je definirana kao staza koja ima barem jedan rub koji nije prijeđen niti u jednoj drugoj stazi.
Ovu je metriku razvio Thomas J. McCabe 1976. godine i temelji se na prikazu kontrolnog toka programa. Kontrolni tok prikazuje program kao grafikon koji se sastoji od čvorova i rubova.
Na grafikonu čvorovi predstavljaju zadatke obrade dok rubovi predstavljaju tok kontrole između čvorova.
Notacija grafa toka za program
Grafikon toka notacije za program definira nekoliko čvorova povezanih kroz rubove. Ispod su dijagrami toka za izjave kao što su if-else, While, until i normalni slijed toka.
Kako izračunati ciklomatsku složenost
Matematička reprezentacija:
Matematički, to je skup neovisnih putanja kroz graf 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 predikatnih čvorova (čvor koji sadrži uvjet)
Primjer -
i = 0; n=4; //N-Number of nodes present in the graph while (i<n-1) do j = i + 1; while (j<n) do if A[i]<A[j] then swap(A[i], A[j]); end do; j=j+1; end do;
Grafikon toka za ovaj program bit će
Računajući matematički,
- V(G) = 9 – 7 + 2 = 4
- V(G) = 3 + 1 = 4 (čvorovi uvjeta su 1,2, 3 i XNUMX čvora)
- Osnovni skup – Skup mogućih putanja 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 ciklomatske složenosti
Slijede svojstva ciklomatske složenosti:
- V (G) je najveći broj neovisnih putanja u grafu
- 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?
Basis Path testiranje jedna je od tehnika bijele kutije i jamči izvršavanje barem jedne izjave tijekom testiranja. Provjerava svaki linearno nezavisan put kroz program, koji srednji broj testnih slučajeva, bit će ekvivalentan ciklomatskoj složenosti programa.
Ova metrika je korisna zbog svojstava ciklomatske složenosti (M) –
- M može biti broj testnih slučajeva za postizanje pokrivenosti grana (gornja granica)
- M može biti broj putanja kroz grafove. (Donja granica)
Razmotrite ovaj primjer –
If (Condition 1) Statement 1 Else Statement 2 If (Condition 2) Statement 3 Else Statement 4
Ciklomatska složenost za ovaj program bit će 8-7+2=3.
Kako je složenost izračunata kao 3, potrebna su tri testna slučaja za potpunu pokrivenost putanje za gornji primjer.
Koraci koje treba slijediti:
Za izračunavanje ciklomatske složenosti i dizajna testnih slučajeva potrebno je slijediti sljedeće korake.
Korak 1 – Konstrukcija grafa s čvorovima i bridovima iz koda
Korak 2 – Identifikacija neovisnih putova
Korak 3 – Izračun ciklomatske složenosti
Korak 4 – Dizajn testnih slučajeva
Nakon formiranja osnovnog skupa, TESTNI SLUČAJEVI treba napisati da izvrši sve staze.
Više o V (G)
Ciklomatska složenost može se izračunati ručno ako je program mali. Automatizirani alati moraju se koristiti ako je program vrlo složen jer uključuje više dijagrama toka. Na temelju broja složenosti, tim može zaključiti o radnjama koje je potrebno poduzeti za mjerenje.
Sljedeća tablica daje pregled broja složenosti i odgovarajućeg značenja v (G):
Broj složenosti | Značenje |
---|---|
1-10 | Strukturiran i dobro napisan kod
Visoka sposobnost testiranja Troškovi i napor su manji |
10-20 | Složeni kod
Srednja sposobnost testiranja Trošak i trud su srednji |
20-40 | Vrlo složen kod
Niska provjerljivost Trošak i napor su visoki |
> 40 | Uopće se ne može testirati
Vrlo visoka cijena i napor |
Alati za izračun ciklomatske složenosti:
Dostupni su mnogi alati za određivanje složenosti aplikacije. Neki alati za izračun složenosti koriste se za specifične tehnologije. Složenost se može odrediti brojem točaka odluke u programu. Točke odluke su if, for, for-each, while, do, catch, case izjave u izvornom kodu.
Primjeri alata su
- OCLint – Statički analizator koda za C i srodne jezike
- Reflector Add In – metrika koda za .NET sklopove
- GMetrics – Pronađite metriku u Java povezane aplikacije
Upotreba ciklomatske složenosti:
Ciklomatska složenost može se pokazati vrlo korisnom u
- Pomaže razvojnim programerima i testerima u određivanju neovisnih izvođenja puta
- Programeri mogu jamčiti da su sve staze testirane barem jednom
- Pomaže nam da se više usredotočimo na otkrivene staze
- Poboljšajte pokrivenost koda u Programsko inženjerstvo
- Procijenite rizik povezan s aplikacijom ili programom
- Korištenje ovih metrika rano u ciklusu smanjuje veći rizik programa
Zaključak
Ciklomatska složenost softverska je metrika korisna za strukturirane ili bijela Box Ispitivanje. Uglavnom se koristi za procjenu složenosti programa. Što je više bodova odluke, veća je i složenost programa. Ako program ima visok broj složenosti, tada je vjerojatnost pogreške visoka s povećanim vremenom za održavanje i rješavanje problema.