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.

McCabeova ciklomatska složenost

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.

Notacija grafa toka za program

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

Izračunajte ciklomatsku složenost

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:

  1. V (G) je najveći broj neovisnih putanja u grafu
  2. V (G) >=1
  3. G će imati jedan put ako je V (G) = 1
  4. 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) –

  1. M može biti broj testnih slučajeva za postizanje pokrivenosti grana (gornja granica)
  2. 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.