what is cyclomatic complexity learn with an example
Cyklomatická zložitosť je v rozvojovej komunite veľmi častým slovom. Táto technika sa používa hlavne na určenie zložitosti kódu alebo funkčnosti.
Techniku vyvinula spoločnosť MaCabe a pomáha identifikovať nasledujúce 3 otázky týkajúce sa programov / funkcií
- Je funkcia / program testovateľná?
- Rozumie tejto funkcii / programu každý?
- Je funkcia / program dostatočne spoľahlivá?
Ako QA môžeme túto techniku použiť na identifikáciu „úrovne“ nášho testovania. Je zvykom, že ak je výsledkom cyklomatickej zložitosti viac alebo väčšie číslo, považujeme túto časť funkčnosti za zložitú, a preto ju považujeme za testera; že časť kódu / funkčnosti vyžaduje dôkladné testovanie.
Na druhej strane, ak je výsledkom Cyklomatickej zložitosti menší počet, usúdime ako QA, že funkčnosť je menej zložitá, a podľa toho rozhodneme o rozsahu.
Poďme krok za krokom: najskôr pochopíme, ako sa to počíta, a potom prejdeme k pochopeniu toho, ako sa určuje úroveň testovania.
Čo sa dozviete:
- Ako vypočítať cyklomatickú zložitosť?
- Vzorec cyklomatickej zložitosti
- Príklad cyklomatickej zložitosti
- Ako to môžu testéri použiť?
- Teraz prichádza skratka-
- Odporúčané čítanie
Ako vypočítať cyklomatickú zložitosť?
Výpočet CC sa točí okolo 2 konceptov
- Uzly
- Hrany
Príkazy v programe sú reprezentované ako uzly a riadiace cesty z jedného príkazu k druhému sú predstavované okrajmi.
Vzorec cyklomatickej zložitosti
Vzorec pre výpočet CC je nasledovný:
CC = E ~ N + 2
Webové služby v rozhovore pre otázky java a odpovede
Kde:
E = počet hrán
N = počet uzlov.
(Existuje skratka na jeho výpočet, ale nie teraz …… neskôr…)
Príklad cyklomatickej zložitosti
Aby sme tomu porozumeli, vezmime si nasledujúci príklad.
Zvážte nasledujúci graf toku riadenia:
prečo si vybral otázku na testovanie softvéru?
Umiestnil som NET bodky na identifikáciu uzlov a MODRÁ čiary na identifikáciu hrán:
Takže tu v tomto príklade:
Počet uzlov (červené bodky) = 14
Počet hrán (modré čiary) = 15
Takže cyklomatická zložitosť = N ~ E + 2 = (14-15) +2 = 3
Ako to môžu testéri použiť?
V skutočnom svete môžu testeri sedieť s vývojármi a odvodiť graf toku riadenia pre danú časť kódu. Akonáhle máme graf, môžeme pomocou tohto vzorca odvodiť zložitosť. Príbeh testerov sa tým však nekončí: - tu je hlavný bod - aké je použitie tohto čísla pre testovací tím?
Testéri môžu toto číslo využiť na určenie úrovne svojich testovaní.
V praxi existujú 2 úrovne testovania:
- Testovanie dĺžky
- Testovanie šírky
Zvážte nasledujúcu maticu pre rôzne funkcie ktoréhokoľvek modulu: -
Testovanie dĺžky je spôsob, ktorým sa snažíme pokryť celý rozsah výberom dôležitých testovacích prípadov pre každú funkciu. Napríklad , v tomto prípade predpokladám, že zvolím implikáciu s Testovaním dĺžky, potom môžem zvoliť -
- Vedľajšia funkcia 1.1 a vedľajšia funkcia 1.3 pre funkciu 1
- Čiastková funkcia 2.2 z funkcie 2
- Čiastková funkcia 3.3 z funkcie 3
- Podfunkcia 4.2 a podfunkcia 4.3z funkcie 4
- Čiastková funkcia 5.3 z funkcie 5
Takže tu sa dotýkam celej funkcie bez toho, aby som zachádzal do vyčerpávajúcich podrobností čiastkových funkcií.
Teraz, ak je výsledkom CC väčšie číslo, ako som sa rozhodol pre testovanie šírky, budem vlastne testovať každú funkciu spolu s každou čiastkovou vlastnosťou.
Takže na základe vašich aktuálnych požiadaviek na projekt, spoľahlivosti prostredia, môžu testeri spolupracovať spolu s vývojovým tímom a vytvoriť štandard pre identifikáciu úrovne a rozsahu testovania. Napríklad -
- Ak je CC<=15 – Basic sanity test
- Ak je CC medzi 16 a 30 - dĺžkovým testovaním
- Ak je CC medzi 31 a 50 - šírkové testovanie
- Ak je CC> 50 - Je to chaotická funkčnosť a vyžaduje si ďalší rozklad
Teraz prichádza skratka-
Stačí spočítať počet uzavretých oblastí a pridať k nim 1.
V našom príklade vyššie - počet uzavretých oblastí = 2 (vyplnené žltou farbou), takže CC = 2 + 1 = 3
ako otvoriť súbor json
V skutočnej práci je veľmi ťažké uzavrieť výsledok, keď poskytneme vyjadrenia ako -
- „.....Táto funkcia je veľmi ťažko implementovateľná“
Čo myslíš tým ťažkým? Je to zložité, komplikované alebo chaotické?
Ako ste dospeli k záveru, že je to ťažké?
- „... toto by malo byť k dispozícii do konca dňa“
Čo je koniec dňa? Váš koniec dňa je 19.00, pravdepodobne môj je 18.00?
- '... potreboval by som to podrobne otestovať'
Čo je to podrobné testovanie? Neexistuje žiadna testovacia technika s názvom „Podrobné testovanie“.
- '... kód by mal byť dobrej kvality skôr, ako ho nasadíme do QA'
Ako meriate dobrú kvalitu?
Namiesto toho, ak preformulujem výroky ako -
Cyklomatická zložitosť pre časť kódu sa počíta ako 75 a podľa našich štandardov; táto funkcionalita má charakter chaosu. Preto ho odporúčame ďalej rozkladať.
Koniec
- „.....Táto funkcia je veľmi ťažko implementovateľná“
Funkcionalita bude nasadená v prostredí QA do 17.00 CST.
Koniec
- '... toto by malo byť k dispozícii do konca dňa'
Pretože cyklomatická zložitosť sa počíta ako 48, podľa nášho štandardu by sme robili testovanie systémov spolu s testovaním integrácie a regresie pre túto funkciu.
Koniec
- '… Potreboval by som kvôli tomu podrobne otestovať'
Podľa Sonaru je CC teraz 102. Štandardizovali sme, aby sme mali CC na 10. Kód nasadíme, keď kód vylepšíme, aby bol CC menší ako 10.
Koniec
- '... kód by mal byť dobrej kvality, skôr ako ho nasadíme do QA'
Aký je rozdiel medzi týmito dvoma tvrdeniami?
Rozdiel je tu v meraní. Každé z mojich vyjadrení som podporil vhodným meraním, ktoré by pomohlo mojim zainteresovaným stranám presne vedieť, čo chcem povedať.
Podobne využite Cyklomatickú zložitosť pri testovaní softvéru na určenie presnej miery vášho testovacieho úsilia a môžete ho použiť nielen na identifikáciu rozsahu vášho testovania, ale aj na typy testovania, ktoré by ste museli vykonať.
Odporúčané čítanie
- Čo je to testovanie komponentov alebo testovanie modulov (naučte sa s príkladmi)
- Čo je to porovnávacie testovanie (ďalšie informácie)
- Softvérová kariérová príručka na testovanie softvéru
- Čo je Testovanie integrácie systému (SIT): Učte sa na príkladoch
- Najlepšie nástroje na testovanie softvéru 2021 [QA Test Automation Tools]
- Stiahnutie e-knihy Testing Primer
- 5 dôležitých diagramov, ktoré sa testéri musia naučiť, ako používať
- Výukový program pre test TestRail: Naučte sa komplexnú správu testovacích prípadov