Čo je pokrytie kódom?
Pokrytie kódu je opatrenie, ktoré popisuje stupeň, v akom bol testovaný zdrojový kód programu. Je to jedna z foriem testovania v bielej skrinke, ktorá zistí, že oblasti programu sa neuplatňujú pomocou sady testovacích prípadov. Vytvára tiež niektoré testovacie prípady na zvýšenie pokrytia a stanovenie kvantitatívnej miery pokrytia kódu.
Systém pokrytia kódu vo väčšine prípadov zhromažďuje informácie o spustenom programe. Kombinuje to tiež s informáciami o zdrojovom kóde a vytvára správu o pokrytí kódu testovacej sady.
V tomto návode sa naučíte
- Čo je pokrytie kódom?
- Prečo používať pokrytie kódu?
- Metódy pokrytia kódu
- Pokrytie vyhlásenia
- Pokrytie rozhodnutia
- Pokrytie pobočky
- Pokrytie stavu
- Pokrytie stroja konečného stavu
- Aký typ pokrytia kódom zvoliť
- Pokrytie kódu vs. Funkčné pokrytie
- Nástroje na pokrytie kódu
- Výhody a nevýhody použitia pokrytia kódom
Prečo používať pokrytie kódu?
Tu uvádzame niekoľko hlavných dôvodov použitia pokrytia kódom:
- Pomáha vám zmerať efektívnosť implementácie testu
- Ponúka kvantitatívne meranie.
- Definuje mieru, do akej bol zdrojový kód testovaný.
Metódy pokrytia kódu
Nasledujú hlavné metódy pokrytia kódu
- Pokrytie vyhlásenia
- Pokrytie rozhodnutia
- Pokrytie pobočky
- Prepnúť pokrytie
- Pokrytie FSM
Pokrytie vyhlásenia
Statement Coverage je technika testovania v bielom poli, v ktorej sú všetky spustiteľné príkazy v zdrojovom kóde vykonávané aspoň raz. Používa sa na výpočet počtu vykonaných príkazov v zdrojovom kóde. Hlavným účelom aplikácie Statement Coverage je pokryť všetky možné cesty, riadky a príkazy v zdrojovom kóde.
Pokrytie výpisu sa používa na odvodenie scenára založeného na štruktúre testovaného kódu.
Pri testovaní bieleho poľa sa tester sústreďuje na to, ako softvér funguje. Inými slovami, tester sa sústredí na interné fungovanie zdrojového kódu týkajúceho sa riadiacich vývojových diagramov alebo vývojových diagramov.
Všeobecne v akomkoľvek softvéri, ak sa pozrieme na zdrojový kód, bude existovať široká škála prvkov, ako sú operátory, funkcie, opakovanie, výnimočné obslužné programy atď. Na základe vstupu do programu sa niektoré z príkazov kódu nemusia vykonať. . Cieľom pokrytia výpisu je pokryť všetky možné cesty, riadky a vyhlásenia v kóde.
Poďme to pochopiť na príklade, ako vypočítať pokrytie výpisom.
Scenár výpočtu pokrytia výpisu pre daný zdrojový kód. Tu robíme dva rôzne scenáre, aby sme skontrolovali percento pokrytia výpisu pre každý scenár.
Zdrojový kód:
Prints (int a, int b) {------------ Printsum je funkciaint výsledok = a + b;Ak (výsledok> 0)Tlačiť („Pozitívne“, výsledok)InakTlač („negatívny“, výsledok)} ----------- Koniec zdrojového kódu
Scenár 1:
Ak A = 3, B = 9
Príkazy označené žltou farbou sú tie, ktoré sa vykonávajú podľa scenára
Počet vykonaných výpisov = 5, Celkový počet výpisov = 7
Pokrytie výpisu: 5/7 = 71%
Rovnako uvidíme scenár 2,
Scenár 2:
Ak A = -3, B = -9
Príkazy označené žltou farbou sú tie, ktoré sa vykonávajú podľa scenára.
Počet vykonaných výpisov = 6
Celkový počet výpisov = 7
Pokrytie výpisu: 6/7 = 85%
Ale celkovo, ak vidíte, sú všetky vyhlásenia pokryté 2. scenárom. Môžeme teda dospieť k záveru, že celkové pokrytie výpisom je 100%.
Na čo sa vzťahuje pokrytie vyhlásením?
- Nepoužité výpisy
- Mŕtvy zákon
- Nevyužité pobočky
- Chýbajúce vyhlásenia
Pokrytie rozhodnutia
Decision Coverage je technika testovania v bielom poli, ktorá hlási pravdivé alebo nepravdivé výsledky každého boolovského vyjadrenia zdrojového kódu. Cieľom testovania pokrytia rozhodnutia je pokryť a overiť všetok prístupný zdrojový kód kontrolou a zabezpečením, aby sa každá vetva každého možného bodu rozhodnutia vykonala aspoň raz.
V tomto pokrytí sa niekedy môžu výrazy skomplikovať. Preto je veľmi ťažké dosiahnuť 100% pokrytie. Preto existuje veľa rôznych metód vykazovania tejto metriky. Všetky tieto metódy sa zameriavajú na pokrytie najdôležitejších kombinácií. Je to veľmi podobné rozhodovaciemu pokrytiu, ale ponúka lepšiu citlivosť na riadiaci tok.
Príklad pokrytia rozhodnutia
Zvážte nasledujúci kód -
Ukážka (int a) {Ak (a> 5)a = a * 3Tlač (a)}
Scenár 1:
Hodnota a je 2
Spustí sa kód zvýraznený žltou farbou. Tu sa kontroluje „Nie“ výsledok rozhodnutia If (a> 5).
Pokrytie rozhodnutia = 50%
Scenár 2:
Hodnota a je 6
Spustí sa kód zvýraznený žltou farbou. Tu sa kontroluje výsledok rozhodnutia „Áno“, ak (a> 5).
Pokrytie rozhodnutia = 50%
Testovacia situácia | Hodnota A | Výkon | Pokrytie rozhodnutia |
1 | 2 | 2 | 50% |
2 | 6 | 18 | 50% |
Pokrytie pobočky
Branch Coverage je metóda testovania v bielom poli, v ktorej sa testuje každý výsledok z kódového modulu (príkaz alebo slučka). Účelom pokrytia pobočky je zabezpečiť, aby sa každá rozhodovacia podmienka z každej pobočky vykonala aspoň raz. Pomáha merať zlomky nezávislých segmentov kódu a vyhľadávať sekcie bez vetiev.
Ak sú napríklad výsledky binárne, musíte otestovať pravdivé aj nepravdivé výsledky.
Vzorec na výpočet pokrytia pobočky:
Príklad pokrytia pobočky
Aby sme sa naučili pokrytie pobočiek, pouvažujme o rovnakom príklade, aký bol použitý predtým
Zvážte nasledujúci kód
Ukážka (int a) {Ak (a> 5)a = a * 3Tlač (a)}
Pokrytie pobočky bude brať do úvahy aj nepodmienené odvetvie
Testovacia situácia | Hodnota A | Výkon | Pokrytie rozhodnutia | Pokrytie pobočky |
1 | 2 | 2 | 50% | 33% |
2 | 6 | 18 | 50% | 67% |
Výhody pokrytia pobočky:
Testovanie pokrytia pobočky ponúka nasledujúce výhody:
- Umožňuje overiť všetky vetvy v kóde
- Pomáha vám zabezpečiť, aby rozvetvenie neviedlo k akýmkoľvek abnormalitám fungovania programu
- Metóda pokrytia vetvy odstraňuje problémy, ktoré sa vyskytujú kvôli testovaniu pokrytia výpisom
- Umožňuje vám nájsť oblasti, ktoré nie sú testované inými testovacími metódami
- Umožňuje vám nájsť kvantitatívne meradlo pokrytia kódu
- Pokrytie vetvy ignoruje vetvy vo vnútri boolovských výrazov
Pokrytie stavu
Pokrytie podmienky alebo pokrytie výrazu je testovacia metóda používaná na testovanie a hodnotenie premenných alebo podvýrazov v podmienenom príkaze. Cieľom pokrytia stavu je skontrolovať jednotlivé výsledky pre každú logickú podmienku. Pokrytie stavu ponúka lepšiu citlivosť na tok riadenia ako pokrytie rozhodnutia. V tomto pokrytí sa zohľadňujú iba výrazy s logickými operandmi.
Napríklad ak má výraz boolovské operácie ako AND, OR, XOR, čo označuje celkové možnosti.
Pokrytie stavu neposkytuje záruku úplného pokrytia rozhodnutia.
Vzorec na výpočet pokrytia stavu:
Príklad:
Pre vyššie uvedený výraz máme 4 možné kombinácie
- TT
- FF
- TF
- FT
Zvážte nasledujúci vstup
X = 3 Y = 4 |
(x |
PRAVDA |
Pokrytie podmienky je ¼ = 25% |
A = 3 B = 4 |
(a> b) |
NEPRAVDA |
Pokrytie stroja konečného stavu
Konečné pokrytie automatom je určite najkomplexnejším typom metódy pokrytia kódom. Je to tak preto, lebo to funguje na správaní sa dizajnu. Pri tejto metóde pokrytia musíte hľadať, koľko časovo špecifických štátov sa navštívilo, prešlo. Tiež kontroluje, koľko sekvencií je zahrnutých v stroji konečného stavu.
Aký typ pokrytia kódom zvoliť
Toto je určite najťažšia odpoveď. Aby bolo možné zvoliť metódu pokrytia, musí tester skontrolovať, či
- testovaný kód má jednu alebo viac neobjavených chýb
- náklady na prípadnú pokutu
- náklady na stratu dobrého mena
- náklady na stratený predaj atď.
Čím vyššia je pravdepodobnosť, že chyby spôsobia nákladné výpadky výroby, tým závažnejšiu úroveň pokrytia musíte zvoliť.
Pokrytie kódu vs. Funkčné pokrytie
Pokrytie kódu | Funkčné pokrytie |
Pokrytie kódu vám povie, ako dobre váš zdrojový kód využil váš testovací prístroj. | Funkčné pokrytie meria, ako dobre bola funkčnosť dizajnu pokrytá vašim testovacím stavom. |
Nikdy nepoužívajte špecifikáciu dizajnu | Použite špecifikáciu návrhu |
Hotovo vývojármi | Hotovo testermi |
Nástroje na pokrytie kódu
Tu je zoznam dôležitých nástrojov na pokrytie dôležitým kódom:
Názov nástroja | Popis |
Cobertura | Je to nástroj na pokrytie otvoreného zdrojového kódu. Meria pokrytie testu prístrojovým vybavením kódovej základne a analyzuje, ktoré riadky kódu sa vykonávajú a ktoré sa nevykonávajú pri spustení testovacej sady. |
Ďatelina | Clover tiež skracuje čas testovania iba spustením testov, ktoré pokrývajú aplikačný kód, ktorý bol upravený od predchádzajúcej verzie. |
DevPartner | DevPartner umožňuje vývojárom analyzovať Java kód z hľadiska kvality a zložitosti kódu. |
Emma | EMMA podporuje pokrytie tried, metód, liniek a základných blokov, agregovaný zdrojový súbor, úrovne tried a metód. |
Kalistick | Kalistick je aplikácia tretej strany, ktorá analyzuje kódy z rôznych hľadísk. |
CoView a CoAnt | Coding Software je nástroj na pokrytie kódu pre metriky, simulované vytváranie objektov, testovateľnosť kódu, pokrytie ciest a pobočiek atď. |
Bullseye pre C ++ | BulseyeCoverage je nástroj na pokrytie kódu pre C ++ a C. |
Sonar | Sonar je nástroj na pokrytie otvoreného kódu, ktorý vám pomáha spravovať kvalitu kódu. |
Výhody použitia pokrytia kódom
- Užitočné na vyhodnotenie kvantitatívnej miery pokrytia kódu
- Umožňuje vám vytvárať ďalšie testovacie prípady na zvýšenie pokrytia
- Umožňuje vám vyhľadať oblasti programu, ktoré sa nevykonávajú pomocou sady testovacích prípadov
Nevýhody použitia pokrytia kódom
- Aj keď v dizajne nie je implementovaná žiadna konkrétna vlastnosť, pokrytie kódu stále hlási 100% pokrytie.
- Nie je možné určiť, či sme pomocou pokrytia kódu testovali všetky možné hodnoty funkcie
- Pokrytie kódu tiež nehovorí o tom, koľko a ako dobre ste pokryli svoju logiku
- V prípade, že zadaná funkcia nie je implementovaná alebo nie je zahrnutá v špecifikácii, potom techniky založené na štruktúre nemôžu nájsť tento problém.
Zhrnutie
- Pokrytie kódu je opatrenie, ktoré popisuje stupeň, v akom bol testovaný zdrojový kód programu
- Pomáha vám zmerať efektívnosť implementácie testu
- Päť metód pokrytia kódu je 1.) Pokrytie vyhlásenia 2.) Pokrytie podmienky 3) Pokrytie pobočky 4) Prepnúť pokrytie 5) Pokrytie FSM
- Pokrytie vyhlásenia zahŕňa vykonanie všetkých vykonateľných príkazov v zdrojovom kóde najmenej raz
- Pokrytie rozhodnutia hlási pravdivé alebo nepravdivé výsledky každého booleovského výrazu
- V pokrytí pobočky sa testuje každý výsledok z kódového modulu
- Podmienené odhalí, ako sa hodnotia premenné alebo podvýrazy v podmienenom príkaze
- Konečné pokrytie automatom je určite najkomplexnejším typom metódy pokrytia kódom
- Aby mohol tester zvoliť metódu pokrytia, musí skontrolovať náklady na potenciálny trest, stratu dobrého mena, stratu predaja atď.
- Pokrytie kódu vám povie, ako dobre váš zdrojový kód využil váš testovací stôl, zatiaľ čo Funkčné pokrytie meria, ako dobre je pokrytá funkčnosť dizajnu.
- Cobertura, JTest, Clover, Emma, Kalistick je niekoľko dôležitých nástrojov na pokrytie kódu
- Pokrytie kódu vám umožňuje vytvoriť ďalšie testovacie prípady na zvýšenie pokrytia
- Pokrytie kódu vám nepomôže určiť, či sme testovali všetky možné hodnoty funkcie