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


.png)
.png)