Norėdami suprasti ciklomatinį sudėtingumą, pirmiausia galite suprasti -
Kas yra programinės įrangos metrika?
Matavimas yra ne kas kita, o kiekybinis produkto / proceso požymio dydžio / matmens / talpos nurodymas. Programinės įrangos metrika apibrėžiama kaip programinės įrangos sistemos savybės, susijusios su sąnaudomis, kokybe, dydžiu ir tvarkaraščiu, kiekybinis matas.
Pavyzdys-
Priemonė - klaidų skaičiusMetrika - vienam asmeniui nustatytų klaidų skaičius
Šioje pamokoje sužinosite
- Kas yra programinės įrangos metrika?
- Kas yra ciklomatinis kompleksiškumas?
- Srauto diagramos žymėjimas programai:
- Kaip apskaičiuoti ciklomatinį sudėtingumą
- Ciklomatinio sudėtingumo savybės:
- Kuo ši metrika naudinga bandant programinę įrangą?
- Daugiau apie V (G):
- Ciklomatinio sudėtingumo skaičiavimo įrankiai:
- Ciklomatinio sudėtingumo panaudojimas:
Ciklomatinis programinės įrangos testavimo sudėtingumas
Programinės įrangos testavimo ciklinis sudėtingumas yra testavimo metrika, naudojama programinės įrangos sudėtingumui matuoti. Tai kiekybinis nepriklausomų kelių matavimas programinės įrangos šaltinio kode. Ciklomatinį sudėtingumą galima apskaičiuoti naudojant valdymo srauto grafikus arba atsižvelgiant į programinės įrangos programų funkcijas, modulius, metodus ar klases.
Nepriklausomas kelias apibrėžiamas kaip kelias, turintis bent vieną kraštą, kuris anksčiau nebuvo įveiktas jokiais kitais keliais.
Šią metriką sukūrė Thomas J. McCabe 1976 m. Ir ji pagrįsta valdymo srauto programos vaizdavimu. Valdymo srautas rodo programą kaip grafiką, kurį sudaro mazgai ir kraštai.
Grafike mazgai rodo apdorojimo užduotis, o kraštai - valdymo srautą tarp mazgų.
Srauto diagramos žymėjimas programai:
„Flow Graph“ programos žymėjimas apibrėžia kelis mazgus, sujungtus per kraštus. Žemiau pateikiamos tokių teiginių kaip „if-else“, „While“ iki ir įprasta srauto seka.
Kaip apskaičiuoti ciklomatinį sudėtingumą
Matematinis vaizdavimas:
Matematiškai jis yra nustatytas nepriklausomų kelių per grafiko diagramą. Programos sudėtingumą programoje galima apibrėžti pagal formulę -
V (G) = E - N + 2
Kur,
E - briaunų skaičius
N - mazgų skaičius
V (G) = P + 1
Kur P = predikatinių mazgų skaičius (mazgas, kuriame yra sąlyga)
Pavyzdys -
i = 0;n = 4; // N-grafike esančių mazgų skaičiuso (iŠios programos eigos diagrama bus
Skaičiuojant matematiškai,
- V (G) = 9 - 7 + 2 = 4
- V (G) = 3 + 1 = 4 (būklės mazgai yra 1,2 ir 3 mazgai)
- Pagrindo rinkinys - galimo programos vykdymo kelio rinkinys
- 1, 7
- 1, 2, 6, 1, 7
- 1, 2, 3, 4, 5, 2, 6, 1, 7
- 1, 2, 3, 5, 2, 6, 1, 7
Ciklomatinio sudėtingumo savybės:
Toliau pateikiamos ciklomatinio sudėtingumo savybės:
- V (G) yra didžiausias nepriklausomų kelių skaičius grafike
- V (G)> = 1
- G turės vieną kelią, jei V (G) = 1
- Sumažinkite sudėtingumą iki 10
Kuo ši metrika naudinga bandant programinę įrangą?
„Pagrindo kelio“ testavimas yra viena iš „White box“ technikos ir garantuoja, kad atliekant bandymą bus atliktas bent vienas sakinys. Jis tikrina kiekvieną tiesiškai nepriklausomą kelią per programą, o tai reiškia, kad bandymų skaičius bus lygus cikliškam programos sudėtingumui.
Ši metrika yra naudinga dėl ciklomatinio sudėtingumo (M) savybių -
- M gali būti bandomųjų atvejų skaičius šakos aprėpčiai pasiekti (viršutinė riba)
- M gali būti kelių per grafikus skaičius. (Apatinė riba)
Apsvarstykite šį pavyzdį -
Jei (1 sąlyga)1 pareiškimasKitas2 pareiškimasJei (2 sąlyga)3 pareiškimasKitas4 pareiškimasŠios programos ciklinis sudėtingumas bus 8–7 + 2 = 3.
Kadangi sudėtingumas apskaičiuotas kaip 3, aukščiau pateiktame pavyzdyje visiško kelio aprėpties atveju reikia trijų bandymų atvejų.
Veiksmai, kurių reikia laikytis:
Apskaičiuojant ciklomatinį sudėtingumą ir bandymų atvejus, reikia atlikti šiuos veiksmus.
1 žingsnis - grafiko su mazgais ir kraštais sudarymas iš kodo
2 žingsnis - nepriklausomų kelių nustatymas
3 žingsnis - ciklominio sudėtingumo skaičiavimas
4 žingsnis - bandomųjų atvejų projektavimas
Kai bus suformuotas pagrindinis rinkinys, TEST CASES turėtų būti parašyta, kad būtų įvykdyti visi keliai.
Daugiau apie V (G):
Ciklomatinį sudėtingumą galima apskaičiuoti rankiniu būdu, jei programa yra maža. Jei programa yra labai sudėtinga, reikia naudoti automatizuotus įrankius, nes tai apima daugiau srautų grafikų. Remdamasi sudėtingumo skaičiumi, komanda gali padaryti išvadas apie veiksmus, kurių reikia imtis norint įvertinti.
Šioje lentelėje pateikiama v (G) sudėtingumo skaičiaus ir atitinkamos reikšmės apžvalga:
Sudėtingumo skaičius Reikšmė 1–10 Struktūrizuotas ir gerai parašytas kodas Aukštos testavimo išlaidos ir pastangos yra mažesnės 10–20 Sudėtingas kodas Vidutinis bandomumas Kaina ir pastangos yra vidutinės 20–40 Labai sudėtingas mažo patikrinamumo kodas ir pastangos yra didelės > 40 Visai netikrinama Labai didelė kaina ir pastangos Ciklomatinio sudėtingumo skaičiavimo įrankiai:
Programos sudėtingumui nustatyti yra daugybė įrankių. Tam tikroms technologijoms naudojamos kai kurios sudėtingumo skaičiavimo priemonės. Sudėtingumą galima nustatyti pagal sprendimo taškų skaičių programoje. Sprendimo taškai yra, jei „for-for-one“, o „do-catch“, atvejo teiginiai šaltinio kode.
Priemonių pavyzdžiai yra
- OCLint - statinio kodo analizatorius C ir susijusioms kalboms
- Atšvaito pridėjimo kodas .NET rinkinių metrika
- „GMetrics“ - raskite metriką su „Java“ susijusiose programose
Ciklomatinio sudėtingumo panaudojimas:
Ciklomatinis sudėtingumas gali būti labai naudingas
- Padeda kūrėjams ir testuotojams nustatyti nepriklausomus kelio įvykdymus
- Kūrėjai gali užtikrinti, kad visi keliai buvo išbandyti bent kartą
- Padeda mums daugiau dėmesio skirti neatrastiems keliams
- Pagerinkite programinės įrangos inžinerijos kodų aprėptį
- Įvertinkite riziką, susijusią su programa ar programa
- Šios metrikos naudojimas ciklo pradžioje sumažina didesnę programos riziką
Išvada:
„Cyclomatic Complexity“ yra programinės įrangos metrika, naudinga struktūriniams arba „White Box“ testams atlikti. Jis daugiausia naudojamas programos sudėtingumui įvertinti. Jei sprendimų taškų yra daugiau, tada programos sudėtingumas yra didesnis. Jei programos sudėtingumo skaičius yra didelis, klaidų tikimybė yra didelė, padidėjus techninės priežiūros ir trikčių šalinimo laikui.