Syklomaattinen monimutkaisuus ohjelmistotestauksessa (esimerkki)
Mikä on McCaben syklomaattinen monimutkaisuus?
Syklomaattinen monimutkaisuus ohjelmistotestauksessa on testausmittari, jota käytetään ohjelmiston monimutkaisuuden mittaamiseen. Se on riippumattomien polkujen kvantitatiivinen mitta ohjelmiston lähdekoodissa. Syklomaattinen monimutkaisuus voidaan laskea käyttämällä ohjausvuokaavioita tai funktioita, moduuleja, menetelmiä tai luokkia ohjelmistossa.
Itsenäinen polku määritellään poluksi, jolla on vähintään yksi reuna, jota ei ole kuljettu aiemmin muilla poluilla.
Tämän mittarin on kehittänyt Thomas J. McCabe vuonna 1976, ja se perustuu ohjelman ohjausvirran esitykseen. Ohjausvirtaus kuvaa ohjelman kaaviona, joka koostuu solmuista ja reunoista.
Graafissa solmut edustavat käsittelytehtäviä, kun taas reunat edustavat ohjausvirtaa solmujen välillä.
Ohjelman vuokaavion merkintä
Ohjelman Flow Graph -merkintä määrittelee useita reunojen kautta yhdistettyjä solmuja. Alla on vuokaaviot lauseille, kuten if-else, While, till ja normaali virtaussekvenssi.
Kuinka laskea syklomaattinen monimutkaisuus
Matemaattinen esitys:
Matemaattisesti se on joukko riippumattomia polkuja kaaviokaavion läpi. Ohjelman koodin monimutkaisuus voidaan määrittää kaavalla -
V(G) = E - N + 2
Missä,
E – Reunojen lukumäärä
N – Solmujen määrä
V (G) = P + 1
Missä P = predikaattisolmujen lukumäärä (solmu, joka sisältää ehdon)
Esimerkki -
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;
Tämän ohjelman vuokaavio on
Laskemalla matemaattisesti,
- V(G) = 9 – 7 + 2 = 4
- V(G) = 3 + 1 = 4 (ehtosolmut ovat 1,2, 3 ja XNUMX solmua)
- Perusjoukko – Joukko ohjelman mahdollista suorituspolkua
- 1, 7
- 1, 2, 6, 1, 7
- 1, 2, 3, 4, 5, 2, 6, 1, 7
- 1, 2, 3, 5, 2, 6, 1, 7
Syklomaattisen kompleksisuuden ominaisuudet
Seuraavat ovat syklomaattisen monimutkaisuuden ominaisuudet:
- V (G) on riippumattomien polkujen enimmäismäärä kaaviossa
- V (G) >=1
- G:llä on yksi polku, jos V (G) = 1
- Minimoi monimutkaisuus arvoon 10
Miten tämä mittari on hyödyllinen ohjelmistotestauksessa?
Basis Path -testaus on yksi White box -tekniikasta ja se takaa vähintään yhden lauseen suorittamisen testauksen aikana. Se tarkistaa jokaisen lineaarisesti riippumattoman polun ohjelman läpi, mikä tarkoittaa testitapausten lukumäärää, vastaa ohjelman syklomaattista monimutkaisuutta.
Tämä mittari on hyödyllinen syklomaattisen monimutkaisuuden (M) ominaisuuksien vuoksi –
- M voi olla testitapausten lukumäärä haaran kattavuuden saavuttamiseksi (yläraja)
- M voi olla kaavioiden läpi kulkevien polkujen lukumäärä. (alaraja)
Mieti tätä esimerkkiä -
If (Condition 1) Statement 1 Else Statement 2 If (Condition 2) Statement 3 Else Statement 4
Tämän ohjelman syklomaattinen monimutkaisuus on 8-7+2=3.
Koska monimutkaisuus on laskettu arvoksi 3, tarvitaan kolme testitapausta yllä olevan esimerkin täydelliseen polun kattamiseen.
Noudatettavat vaiheet:
Seuraavia vaiheita tulee noudattaa syklomaattisen monimutkaisuuden ja testitapausten suunnittelussa.
Vaihe 1 – Graafin rakentaminen koodista solmujen ja reunojen kanssa
Vaihe 2 – Itsenäisten polkujen tunnistaminen
Vaihe 3 – Syklomaattisen monimutkaisuuden laskenta
Vaihe 4 – Testitapausten suunnittelu
Kun perussarja on muodostettu, TESTITAPAUKSET tulee kirjoittaa suorittamaan kaikki polut.
Lisää V:stä (G)
Syklomaattinen monimutkaisuus voidaan laskea manuaalisesti, jos ohjelma on pieni. Automaattisia työkaluja on käytettävä, jos ohjelma on erittäin monimutkainen, koska se sisältää enemmän vuokaavioita. Monimutkaisuusluvun perusteella tiimi voi tehdä johtopäätöksen toimista, jotka on suoritettava mittaamiseksi.
Seuraava taulukko antaa yleiskatsauksen v:n (G) kompleksisuusluvusta ja vastaavasta merkityksestä:
Monimutkaisuusnumero | Merkitys |
---|---|
1-10 | Strukturoitu ja hyvin kirjoitettu koodi
Korkea testattavuus Kustannukset ja ponnistelut ovat pienemmät |
10-20 | Monimutkainen koodi
Keskinkertainen testattavuus Kustannukset ja vaiva ovat keskimääräiset |
20-40 | Erittäin monimutkainen koodi
Matala testattavuus Kustannukset ja ponnistelut ovat korkeat |
> 40 | Ei ollenkaan testattavissa
Erittäin korkeat kustannukset ja vaivaa |
Työkalut syklomaattisen monimutkaisuuden laskemiseen:
Käytettävissä on monia työkaluja sovelluksen monimutkaisuuden määrittämiseen. Tietyissä teknologioissa käytetään joitain monimutkaisuuden laskentatyökaluja. Monimutkaisuus löytyy ohjelman päätöspisteiden lukumäärästä. Päätöskohdat ovat if, for-for-each, while, do, catch, tapauslausekkeet lähdekoodissa.
Esimerkkejä työkaluista ovat
- OCLint – Staattinen koodianalysaattori C:lle ja siihen liittyville kielille
- Reflector Add In – Koodimetriikka .NET-kokoonpanoille
- GMetrics – Etsi mittareita Java liittyviä sovelluksia
Syklomaattisen kompleksisuuden käyttötarkoitukset:
Syklomaattinen monimutkaisuus voi osoittautua erittäin hyödylliseksi
- Auttaa kehittäjiä ja testaajia määrittämään itsenäisten polkujen suorituksia
- Kehittäjät voivat vakuuttaa, että kaikki polut on testattu ainakin kerran
- Auttaa meitä keskittymään enemmän paljastamattomiin polkuihin
- Paranna koodin kattavuutta Ohjelmistotuotanto
- Arvioi sovellukseen tai ohjelmaan liittyvä riski
- Näiden mittareiden käyttäminen syklin varhaisessa vaiheessa vähentää ohjelman riskiä
Yhteenveto
Cyclomatic Complexity on ohjelmistomittari, joka on hyödyllinen strukturoiduille tai Valkoinen Box Testaus. Sitä käytetään pääasiassa arvioimaan ohjelman monimutkaisuutta. Jos päätöspisteitä on enemmän, niin ohjelman monimutkaisuus on suurempi. Jos ohjelman monimutkaisuusluku on suuri, virheiden todennäköisyys on korkea, kun ylläpitoon ja vianetsintään kuluu enemmän aikaa.