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 graafikaavion lรคpi. Code ohjelman monimutkaisuus voidaan mรครคritellรค 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 Code

Keskinkertainen testattavuus

Kustannukset ja vaiva ovat keskimรครคrรคiset

20-40 Hyvin monimutkainen Code

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
  • Heijastimen lisรคys โ€“ Code .NET-kokoonpanojen mittarit
  • 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.

Tiivistรค tรคmรค viesti seuraavasti: