Ciklomatikus komplexitás a szoftvertesztelésben (példa)

Mi a McCabe ciklomatikus komplexitása?

Ciklomatikus komplexitás a szoftvertesztelésben egy szoftverprogram összetettségének mérésére használt tesztelési mérőszám. Ez egy szoftverprogram forráskódjában található független elérési utak mennyiségi mérőszáma. A ciklomatikus komplexitás kiszámítható vezérlőfolyamat-grafikonok használatával, vagy egy szoftverprogramon belüli függvények, modulok, módszerek vagy osztályok alapján.

A független útvonalat úgy határozzuk meg, mint egy olyan útvonalat, amelynek legalább egy olyan éle van, amelyet korábban semmilyen más útvonalon nem jártak be.

Ezt a mérőszámot Thomas J. McCabe fejlesztette ki 1976-ban, és a program vezérlési folyamatábrázolásán alapul. A vezérlési folyamat egy programot gráfként ábrázol, amely csomópontokból és élekből áll.

A gráfban a csomópontok a feldolgozási feladatokat, míg az élek a csomópontok közötti vezérlési folyamatot képviselik.

McCabe ciklomatikus komplexitása

Folyamatos grafikon jelölés egy programhoz

Egy program Flow Graph jelölése több, az éleken keresztül összekapcsolt csomópontot határoz meg. Az alábbiakban folyamatábrák találhatók az olyan utasításokhoz, mint az if-else, While, till és a normál áramlási sorrend.

Folyamatos grafikon jelölés egy programhoz

A ciklomatikus komplexitás kiszámítása

Matematikai ábrázolás:

Matematikailag független útvonalak halmaza a gráfdiagramon keresztül. A program kód összetettsége a következő képlettel definiálható:

V(G) = E - N + 2

Ahol,

E – Élek száma

N – Csomópontok száma

V (G) = P + 1

ahol P = predikátum csomópontok száma (feltételt tartalmazó csomópont)

Példa -

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;

A program folyamatábrája a következő lesz

Számítsa ki a ciklomatikus komplexitást

Matematikai számítás,

  • V(G) = 9 – 7 + 2 = 4
  • V(G) = 3 + 1 = 4 (a feltétel csomópontjai 1,2, 3 és XNUMX csomópontok)
  • Alapkészlet – A program lehetséges végrehajtási útvonalainak halmaza
  • 1, 7
  • 1, 2, 6, 1, 7
  • 1, 2, 3, 4, 5, 2, 6, 1, 7
  • 1, 2, 3, 5, 2, 6, 1, 7

A ciklomatikus komplexitás tulajdonságai

A ciklomatikus komplexitás jellemzői a következők:

  1. V (G) a független útvonalak maximális száma a gráfban
  2. V(G) >=1
  3. G-nek egy útja lesz, ha V (G) = 1
  4. Csökkentse a bonyolultságot 10-re

Hogyan hasznos ez a mérőszám szoftvertesztelésnél?

A Basis Path tesztelés a White Box technika egyike, és garantálja, hogy a tesztelés során legalább egy utasítás végrehajtásra kerül. Ellenőrzi az egyes lineárisan független útvonalakat a programon keresztül, amely tesztesetek számát jelenti, egyenértékű lesz a program ciklomatikus összetettségével.

Ez a mérőszám a ciklomatikus komplexitás (M) tulajdonságai miatt hasznos –

  1. M lehet a tesztesetek száma az áglefedettség eléréséhez (felső határ)
  2. M a gráfokon áthaladó utak száma lehet. (Alsó határ)

Vegyük ezt a példát –

If (Condition 1)
Statement 1

Else
Statement 2

If (Condition 2)
Statement 3

Else
Statement 4

A ciklomatikus komplexitás ennél a programnál 8-7+2=3 lesz.

Mivel a bonyolultságot 3-ra számolták, három tesztesetre van szükség a fenti példa teljes útvonallefedettségéhez.

Követendő lépések:

A következő lépéseket kell követni a ciklomatikus komplexitás kiszámításához és a tesztesetek tervezéséhez.

1 lépés – Gráf felépítése a kódból csomópontokkal és élekkel

2 lépés – Független utak azonosítása

3 lépés – Ciklomatikus komplexitás számítása

4 lépés – Tesztesetek tervezése

Miután az alapkészlet létrejött, TESZT ESETEK meg kell írni az összes elérési út végrehajtásához.

Bővebben a V-ről (G)

A ciklomatikus komplexitás manuálisan is kiszámítható, ha a program kicsi. Automatizált eszközöket kell használni, ha a program nagyon összetett, mivel ez több folyamatdiagramot tartalmaz. A komplexitási szám alapján a csapat következtetéseket vonhat le a szükséges intézkedésekről.

Az alábbi táblázat áttekintést nyújt a v (G) összetettségi számáról és a megfelelő jelentéséről:

Bonyolultsági szám Jelentés
1-10 Strukturált és jól megírt kód

Magas tesztelhetőség

Költség és ráfordítás kisebb

10-20 Komplex kód

Közepes tesztelhetőség

Költség és erőfeszítés közepes

20-40 Nagyon összetett kód

Alacsony tesztelhetőség

A költség és az erőfeszítés magas

> 40 Egyáltalán nem tesztelhető

Nagyon magas költség és ráfordítás

Eszközök a ciklomatikus komplexitás kiszámításához:

Számos eszköz áll rendelkezésre az alkalmazás összetettségének meghatározására. Egyes bonyolultsági számítási eszközöket speciális technológiákhoz használnak. A komplexitást a program döntési pontjainak számával találhatjuk meg. A döntési pontok az if, for-for-each, while, do, catch, case utasítások a forráskódban.

Példák az eszközökre

  • OCLint – Statikus kódelemző C-hez és kapcsolódó nyelvekhez
  • Reflector Add In – Kódmetrikák .NET-összeállításokhoz
  • GMetrics - Találja meg a mutatókat Java kapcsolódó alkalmazások

A ciklomatikus komplexitás felhasználása:

A ciklomatikus komplexitás nagyon hasznosnak bizonyulhat

  • Segíti a fejlesztőket és a tesztelőket a független útvonal-végrehajtások meghatározásában
  • A fejlesztők biztosíthatják, hogy az összes útvonalat legalább egyszer tesztelték
  • Segít, hogy jobban összpontosítsunk a feltárt utakra
  • A kód lefedettségének javítása Szoftverfejlesztés
  • Értékelje az alkalmazáshoz vagy programhoz kapcsolódó kockázatot
  • Ezeknek a mutatóknak a ciklus korai szakaszában történő használata csökkenti a program kockázatát

Következtetés

A Cyclomatic Complexity szoftveres mérőszám, amely hasznos a strukturált ill fehér Box Tesztelés. Főleg a program összetettségének értékelésére szolgál. Ha több a döntési pont, akkor nagyobb a program összetettsége. Ha a programnak magas a komplexitási száma, akkor a hiba valószínűsége magas, megnövekedett karbantartási és hibaelhárítási idővel.