Výukový program pre pokrytie kódu: Pobočka, Vyhlásenie, Rozhodnutie, FSM

Obsah:

Anonim

Č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?

  1. Nepoužité výpisy
  2. Mŕtvy zákon
  3. Nevyužité pobočky
  4. 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