Co je pokrytí kódem?
Pokrytí kódu je míra, která popisuje míru, do jaké byl testován zdrojový kód programu. Jedná se o jednu formu testování bílé skříňky, která vyhledává oblasti programu nevyužívané sadou testovacích případů. Vytváří také některé testovací případy ke zvýšení pokrytí a stanovení kvantitativní míry pokrytí kódu.
Ve většině případů systém pokrytí kódu shromažďuje informace o spuštěném programu. Kombinuje to také s informacemi o zdrojovém kódu a vytváří zprávu o pokrytí kódu testovací sady.
V tomto výukovém programu se naučíte
- Co je pokrytí kódem?
- Proč používat Pokrytí kódu?
- Metody pokrytí kódu
- Pokrytí prohlášení
- Pokrytí rozhodnutí
- Pokrytí pobočky
- Pokrytí stavu
- Konečný stav pokrytí stroje
- Který typ pokrytí kódu zvolit
- Pokrytí kódu vs. funkční pokrytí
- Nástroje pro pokrytí kódu
- Výhody a nevýhody používání pokrytí kódu
Proč používat Pokrytí kódu?
Zde jsou některé hlavní důvody pro použití pokrytí kódem:
- Pomůže vám měřit účinnost implementace testu
- Nabízí kvantitativní měření.
- Definuje míru, do jaké byl zdrojový kód testován.
Metody pokrytí kódu
Následuje hlavní metody pokrytí kódu
- Pokrytí prohlášení
- Pokrytí rozhodnutí
- Pokrytí pobočky
- Přepnout pokrytí
- Pokrytí FSM
Pokrytí prohlášení
Statement Coverage je technika testování bílé skříňky, při které jsou všechny spustitelné příkazy ve zdrojovém kódu provedeny alespoň jednou. Používá se pro výpočet počtu příkazů ve zdrojovém kódu, které byly provedeny. Hlavním účelem Statement Coverage je pokrýt všechny možné cesty, řádky a příkazy ve zdrojovém kódu.
Pokrytí prohlášení se používá k odvození scénáře na základě struktury testovaného kódu.
Při testování bílé skříňky se tester soustředí na to, jak software funguje. Jinými slovy, tester se bude soustředit na interní práci zdrojového kódu týkající se grafů řízení toku nebo vývojových diagramů.
Obecně v jakémkoli softwaru, pokud se podíváme na zdrojový kód, bude existovat široká škála prvků, jako jsou operátory, funkce, smyčky, výjimečné manipulátory atd. Na základě vstupu do programu nemusí být některé příkazy kódu provedeny . Cílem pokrytí příkazu je pokrýt všechny možné cesty, řádky a příkazy v kódu.
Pochopme to na příkladu, jak vypočítat pokrytí výpisu.
Scénář pro výpočet pokrytí výpisu pro daný zdrojový kód. Tady bereme dva různé scénáře, abychom zkontrolovali procento pokrytí výpisu pro každý scénář.
Zdrojový kód:
Výtisky (int a, int b) {------------ Výtisk je funkceint výsledek = a + b;Pokud (výsledek> 0)Tisk ("Pozitivní", výsledek)JinýTisk („Negativní“, výsledek)} ----------- Konec zdrojového kódu
Scénář 1:
Pokud A = 3, B = 9
Příkazy označené žlutou barvou jsou příkazy, které se provádějí podle scénáře
Počet provedených výpisů = 5, celkový počet výpisů = 7
Pokrytí prohlášení: 5/7 = 71%
Podobně uvidíme scénář 2,
Scénář 2:
Pokud A = -3, B = -9
Příkazy označené žlutou barvou jsou příkazy, které se provádějí podle scénáře.
Počet provedených příkazů = 6
Celkový počet výpisů = 7
Pokrytí prohlášení: 6/7 = 85%
Ale celkově, pokud vidíte, jsou všechny výkazy pokryty 2. scénářem. Můžeme tedy dojít k závěru, že celkové pokrytí výpisu je 100%.
Na co se vztahuje Pokrytí prohlášení?
- Nepoužitá prohlášení
- Mrtvý kód
- Nevyužité větve
- Chybějící prohlášení
Pokrytí rozhodnutí
Decision Coverage je technika testování bílé skříňky, která hlásí pravdivé nebo nepravdivé výsledky každého booleovského vyjádření zdrojového kódu. Cílem testování pokrytí rozhodnutí je pokrýt a ověřit veškerý přístupný zdrojový kód kontrolou a zajištěním, že každá větev každého možného rozhodovacího bodu je provedena alespoň jednou.
V tomto pokrytí se výrazy někdy mohou zkomplikovat. Proto je velmi těžké dosáhnout 100% pokrytí. Proto existuje mnoho různých metod vykazování této metriky. Všechny tyto metody se zaměřují na pokrytí nejdůležitějších kombinací. Je to velmi podobné pokrytí rozhodnutí, ale nabízí lepší citlivost na řízení toku.
Příklad pokrytí rozhodnutí
Zvažte následující kód-
Demo (int a) {Pokud (a> 5)a = a * 3Tisk (a)}
Scénář 1:
Hodnota a je 2
Spustí se žlutě zvýrazněný kód. Zde je zaškrtnut „Ne“ výsledek rozhodnutí If (a> 5).
Pokrytí rozhodnutí = 50%
Scénář 2:
Hodnota a je 6
Spustí se žlutě zvýrazněný kód. Zde je zaškrtnut výsledek „Ano“ rozhodnutí If (a> 5).
Pokrytí rozhodnutí = 50%
Modelový případ | Hodnota A. | Výstup | Pokrytí rozhodnutí |
1 | 2 | 2 | 50% |
2 | 6 | 18 | 50% |
Pokrytí pobočky
Branch Coverage je metoda testování bílé skříňky, při které se testuje každý výsledek z modulu kódu (výpis nebo smyčka). Účelem pokrytí pobočky je zajistit, aby každá rozhodovací podmínka z každé pobočky byla provedena alespoň jednou. Pomáhá měřit zlomky nezávislých segmentů kódu a vyhledávat sekce bez větví.
Například pokud jsou výsledky binární, musíte otestovat pravdivé i nepravdivé výsledky.
Vzorec pro výpočet pokrytí větve:
Příklad pokrytí pobočky
Abychom se naučili pokrytí větví, uvažujme stejný příklad použitý dříve
Zvažte následující kód
Demo (int a) {Pokud (a> 5)a = a * 3Tisk (a)}
Pokrytí pobočky bude také považovat bezpodmínečnou větev
Modelový případ | Hodnota A. | Výstup | Pokrytí rozhodnutí | Pokrytí pobočky |
1 | 2 | 2 | 50% | 33% |
2 | 6 | 18 | 50% | 67% |
Výhody pokrytí pobočky:
Testování pokrytí větví nabízí následující výhody:
- Umožňuje ověřit všechny větve v kódu
- Pomáhá vám zajistit, aby žádné rozvětvené nepovedlo k žádné neobvyklosti fungování programu
- Metoda pokrytí větve odstraňuje problémy, ke kterým dochází kvůli testování pokrytí prohlášení
- Umožňuje vám najít oblasti, které nejsou testovány jinými testovacími metodami
- Umožňuje vám najít kvantitativní měřítko pokrytí kódu
- Pokrytí větví ignoruje větve uvnitř booleovských výrazů
Pokrytí stavu
Podmíněné pokrytí nebo pokrytí výrazu je testovací metoda používaná k testování a vyhodnocení proměnných nebo dílčích výrazů v podmíněném příkazu. Cílem pokrytí podmínky je zkontrolovat jednotlivé výsledky pro každou logickou podmínku. Podmíněné pokrytí nabízí lepší citlivost na regulační tok než pokrytí rozhodováním. V tomto pokrytí jsou zohledněny pouze výrazy s logickými operandy.
Například pokud má výraz booleovské operace jako AND, OR, XOR, což označuje celkové možnosti.
Pokrytí podmínek neposkytuje záruku úplného pokrytí rozhodnutí.
Vzorec pro výpočet pokrytí podmínky:
Příklad:
Pro výše uvedený výraz máme 4 možné kombinace
- TT
- FF
- TF
- FT
Zvažte následující vstup
X = 3 Y = 4 |
(x |
SKUTEČNÝ |
Pokrytí podmínky je ¼ = 25% |
A = 3 B = 4 |
(a> b) |
NEPRAVDIVÉ |
Konečný stav pokrytí stroje
Pokrytí strojem s konečným stavem je určitě nejsložitějším typem metody pokrytí kódu. Důvodem je, že to funguje na chování designu. V této metodě pokrytí musíte hledat, kolik časově specifických států je navštíveno, tranzitováno. Také kontroluje, kolik sekvencí je zahrnuto do stroje s konečným stavem.
Který typ pokrytí kódu zvolit
To je určitě nejobtížnější odpověď. Aby bylo možné vybrat metodu pokrytí, musí tester zkontrolovat, zda
- testovaný kód má jednu nebo více neobjevených vad
- náklady na potenciální pokutu
- náklady na ztracenou reputaci
- náklady na ztracený prodej atd.
Čím vyšší je pravděpodobnost, že vady způsobí nákladná výrobní selhání, tím závažnější je úroveň pokrytí, kterou si musíte zvolit.
Pokrytí kódu vs. funkční pokrytí
Pokrytí kódu | Funkční pokrytí |
Pokrytí kódu vám řekne, jak dobře byl zdrojový kód uplatněn vaším testovacím zařízením. | Funkční pokrytí měří, jak dobře byla vaše zkušební stolice pokryta funkčnost designu. |
Nikdy nepoužívejte specifikaci designu | Použijte specifikaci designu |
Hotovo vývojáři | Hotovo testery |
Nástroje pro pokrytí kódu
Zde je seznam nástrojů pro důležité pokrytí kódu:
Název nástroje | Popis |
Cobertura | Jedná se o nástroj pro pokrytí otevřeným zdrojovým kódem. Měří pokrytí testu instrumentací kódové základny a analyzuje, které řádky kódu se provádějí a které se neprovádějí při spuštění testovací sady. |
Jetel | Clover také zkracuje čas testování pouze spuštěním testů, které pokrývají kód aplikace, který byl od předchozí verze upraven. |
DevPartner | DevPartner umožňuje vývojářům analyzovat kód Java pro kvalitu a složitost kódu. |
Emma | EMMA podporuje pokrytí tříd, metod, linek a základních bloků, agregovaný zdrojový soubor, úrovně a úrovně metod. |
Kalistick | Kalistick je aplikace třetí strany, která analyzuje kódy z různých perspektiv. |
CoView a CoAnt | Coding Software je nástroj pro pokrytí kódu pro metriky, falešné vytváření objektů, testovatelnost kódu, pokrytí cest a větví atd. |
Bullseye pro C ++ | BulseyeCoverage je nástroj pro pokrytí kódu pro C ++ a C. |
Sonar | Sonar je nástroj pro pokrytí otevřeného kódu, který vám pomůže spravovat kvalitu kódu. |
Výhody použití pokrytí kódem
- Užitečné vyhodnotit kvantitativní míru pokrytí kódu
- Umožňuje vám vytvořit další testovací případy pro zvýšení pokrytí
- Umožňuje vám najít oblasti programu, které se nevykonávají pomocí sady testovacích případů
Nevýhody použití pokrytí kódu
- I když není v návrhu implementována žádná konkrétní funkce, pokrytí kódu stále vykazuje 100% pokrytí.
- Není možné určit, zda jsme testovali všechny možné hodnoty funkce pomocí pokrytí kódu
- Pokrytí kódu také neříká, kolik a jak dobře jste pokryli svou logiku
- V případě, že zadaná funkce není implementována nebo není zahrnuta ze specifikace, pak techniky založené na struktuře nemohou najít tento problém.
souhrn
- Pokrytí kódu je míra, která popisuje míru, do jaké byl testován zdrojový kód programu
- Pomůže vám měřit účinnost implementace testu
- Pět metod pokrytí kódu je 1.) Pokrytí prohlášení 2.) Pokrytí podmínek 3) Pokrytí větví 4) Přepnout pokrytí 5) Pokrytí FSM
- Pokrytí prohlášení zahrnuje alespoň jednou provedení všech spustitelných příkazů ve zdrojovém kódu
- Pokrytí rozhodnutí hlásí pravdivé nebo nepravdivé výsledky každého booleovského výrazu
- V pokrytí větve je testován každý výsledek z kódového modulu
- Podmíněné odhalí, jak jsou vyhodnocovány proměnné nebo dílčí výrazy v podmíněném příkazu
- Pokrytí strojem s konečným stavem je určitě nejsložitějším typem metody pokrytí kódu
- Aby mohl tester vybrat metodu pokrytí, musí zkontrolovat náklady na potenciální pokutu, ztrátu reputace, ztrátu prodeje atd.
- Pokrytí kódu vám řekne, jak dobře byl zdrojový kód uplatněn vaší testovací stolicí, zatímco funkční pokrytí měří, jak dobře byla pokryta funkčnost designu
- Cobertura, JTest, Clover, Emma, Kalistick je několik důležitých nástrojů pro pokrytí kódu
- Pokrytí kódu vám umožní vytvořit další testovací případy ke zvýšení pokrytí
- Pokrytí kódu vám nepomůže určit, zda jsme testovali všechny možné hodnoty funkce