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ä.

McCaben syklomaattinen monimutkaisuus

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.

Ohjelman vuokaavion merkintä

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

Laske syklomaattinen monimutkaisuus

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:

  1. V (G) on riippumattomien polkujen enimmäismäärä kaaviossa
  2. V (G) >=1
  3. G:llä on yksi polku, jos V (G) = 1
  4. 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 –

  1. M voi olla testitapausten lukumäärä haaran kattavuuden saavuttamiseksi (yläraja)
  2. 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.