A ciklikus komplexitás megértéséhez először meg kell értenünk -
Mi az a szoftveres metrika?
A mérés nem más, mint a termék / folyamat tulajdonságainak méretének / méretének / kapacitásának mennyiségi megjelenítése. A szoftver metrikája egy olyan attribútum kvantitatív mérőszáma, amelyet egy szoftverrendszer a költség, a minőség, a méret és az ütemezés tekintetében birtokol.
Példa-
Mérés - hibák számaMutatók - Személyenként talált hibák száma
Ebben az oktatóanyagban megtanulja-
- Mi az a szoftveres metrika?
- Mi a ciklikus komplexitás?
- Folyamatdiagram jelölése egy programhoz:
- Hogyan számoljuk ki a ciklikus komplexitást
- A ciklikus komplexitás tulajdonságai:
- Mennyire hasznos ez a mutató a szoftver teszteléséhez?
- További információ a V (G) -ről:
- Eszközök a ciklikus komplexitás kiszámításához:
- A ciklikus komplexitás felhasználása:
Ciklikus komplexitás a szoftver tesztelésében
A szoftveres tesztelés ciklikus komplexitása egy tesztelési mutató, amelyet egy szoftver program komplexitásának mérésére használnak. Ez egy független útvonalak kvantitatív mértéke a szoftver forráskódjában. A ciklikus komplexitás kiszámítható vezérlő folyamatábrák segítségével, vagy egy szoftver program funkcióinak, moduljainak, módszereinek vagy osztályainak vonatkozásában.
A független útvonal olyan út, amely legalább egy éllel rendelkezik, amelyet még soha nem tettek meg más utakon.
Ezt a mutatót Thomas J. McCabe dolgozta ki 1976-ban, és a program vezérlési folyamatábrázolásán alapul. A vezérlő folyamat egy programot grafikonként ábrázol, amely csomópontokból és élekből áll.
A grafikonon a csomópontok a feldolgozási feladatokat, míg az élek a csomópontok közötti vezérlő áramlást jelentik.
Folyamatdiagram jelölése egy programhoz:
A program folyamatábrájának jelölése több, az éleken összekapcsolt csomópontot határoz meg. Az alábbiakban olyan utasítások folyamatábrái láthatók, mint az if-else, a While, amíg és a folyamat normális sorrendje.
Hogyan számoljuk ki a ciklikus komplexitást
Matematikai ábrázolás:
Matematikailag független utakat állít be a gráfdiagramon keresztül. A program bonyolultsága a következő képlettel határozható meg:
V (G) = E - N + 2
Hol,
E - élek száma
N - Csomópontok száma
V (G) = P + 1
Ahol P = predikátum csomópontok száma (feltételet tartalmazó csomópont)
Példa -
i = 0;n = 4; // N-A grafikonon jelen lévő csomópontok számamíg (iA folyamat folyamatábrája a következő lesz:
Matematikai számítás,
- V (G) = 9-7 + 2 = 4
- V (G) = 3 + 1 = 4 (a feltétel csomópontjai 1,2 és 3 csomópontok)
- Basis Set - A program lehetséges végrehajtási útvonalának 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 ciklikus komplexitás tulajdonságai:
A ciklikus komplexitás tulajdonságai a következők:
- V (G) a független utak maximális száma a grafikonon
- V (G)> = 1
- G-nek egy útja lesz, ha V (G) = 1
- Minimalizálja a bonyolultságot 10-re
Mennyire hasznos ez a mutató a szoftver teszteléséhez?
Az alapút tesztelés a fehér dobozos technika egyike, és garantálja, hogy a tesztelés során legalább egy utasítást végrehajtanak. Minden lineárisan független utat ellenőriz a programon keresztül, ami a tesztesetek számát jelenti, egyenértékű lesz a program ciklikus bonyolultságával.
Ez a mutató a ciklomatikus komplexitás (M) tulajdonságai miatt hasznos -
- M lehet tesztesetek száma az elágazás lefedettségének eléréséhez (felső határ)
- M lehet a grafikonokon keresztüli utak száma. (Alsó határ)
Tekintsük ezt a példát -
Ha (1. feltétel)1. nyilatkozatMás2. nyilatkozatHa (2. feltétel)3. nyilatkozatMás4. nyilatkozatA ciklikus komplexitás ebben a programban 8-7 + 2 = 3 lesz.
Mivel a komplexitás 3-ra lett kiszámítva, a fenti példa teljes körű lefedettségéhez három teszteset szükséges.
Követendő lépések:
Az alábbi lépéseket kell követni a ciklikus komplexitás kiszámításához és a tesztesetek tervezéséhez.
1. lépés - Grafikon készítése csomópontokkal és élekkel a kódból
2. lépés - Független utak azonosítása
3. lépés - Ciklikus komplexitás kiszámítása
4. lépés - Tesztesetek megtervezése
Miután az alapkészlet kialakult, TEST CASES-t kell írni az összes út végrehajtásához.
További információ a V (G) -ről:
A ciklikus komplexitás manuálisan kiszámítható, ha a program kicsi. Automatizált eszközöket kell használni, ha a program nagyon összetett, mivel ez több folyamatábrát tartalmaz. A komplexitás száma alapján a csapat megállapíthatja azokat az intézkedéseket, amelyeket meg kell tenni az intézkedés érdekében.
Az alábbi táblázat áttekintést nyújt a v (G) komplexitási számáról és megfelelő jelentéséről:
Komplexitás száma Jelentése 1-10 Strukturált és jól megírt kód A magas tesztelhetőség költsége és erőfeszítése kevesebb 10-20 Komplex kód közepes tesztelhetőség A költségek és erőfeszítések közepesek 20–40 Nagyon bonyolult kód alacsony tesztelhetőség költség és erőfeszítés magas > 40 Egyáltalán nem tesztelhető Nagyon magas költség és erőfeszítés Eszközök a ciklikus komplexitás kiszámításához:
Számos eszköz áll rendelkezésre az alkalmazás összetettségének meghatározásához. Bizonyos bonyolultságszámítási eszközöket használnak speciális technológiákhoz. A komplexitás megtalálható a program döntési pontjainak számával. A döntési pontok akkor vannak, ha for-for-for, míg do do, catch, case utasítások egy forráskódban.
Példák az eszközökre
- OCLint - Statikus kódelemző a C és a kapcsolódó nyelvekhez
- Reflektor Add In - Code metrika a .NET-összeállításokhoz
- GMetrics - Keressen mutatókat a Java-val kapcsolatos alkalmazásokban
A ciklikus komplexitás felhasználása:
A ciklikus komplexitás nagyon hasznosnak bizonyulhat
- Segít a fejlesztőknek és a tesztelőknek a független útvonal-végrehajtások meghatározásában
- A fejlesztők biztosíthatják, hogy az összes utat legalább egyszer tesztelték
- Segít abban, hogy jobban összpontosítsunk a lefedetlen utakra
- Javítsa a kód lefedettségét a szoftvertervezésben
- Értékelje az alkalmazással vagy programmal kapcsolatos kockázatokat
- Ezeknek a mutatóknak a ciklus elején történő használata csökkenti a program kockázatát
Következtetés:
A Cyclomatic Complexity szoftver metrikus, amely hasznos a strukturált vagy a fehér doboz teszteléséhez. Elsősorban a program összetettségének értékelésére szolgál. Ha a döntési pontok többek, akkor a program bonyolultabb. Ha a programnak nagy a bonyolultsága, akkor a hiba valószínűsége magas a karbantartás és a hibaelhárítás megnövekedett időtartamával.