Kurz pokrytí kódu: Testování větví, prohlášení a rozhodování

Co je pokrytí kódem?

Pokrytí kódu je míra, která popisuje míru testování zdrojového kódu programu. Je to jedna z forem testování bílého boxu, které najde oblasti programu, které nejsou uplatněny sadou testovacích případů. Vytváří také některé testovací případy pro zvýšení pokrytí a stanovení kvantitativní míry pokrytí kódu.

Ve většině případů systém pokrytí kódem shromažďuje informace o běžícím programu. Také to kombinuje s informacemi o zdrojovém kódu a vytváří zprávu o pokrytí kódem testovací sady.

Proč používat Testování pokrytí kódu?

Zde je několik hlavních důvodů pro použití pokrytí kódem:

  • Pomáhá vám měřit efektivitu implementace testu
  • Nabízí kvantitativní měření.
  • Definuje míru, do jaké byl zdrojový kód testován.

Metody pokrytí kódu

Následují hlavní metody pokrytí kódu

  • Pokrytí prohlášení
  • Pokrytí rozhodování
  • Pokrytí pobočky
  • Toggle Pokrytí
  • Pokrytí FSM

Pokrytí prohlášení

Pokrytí prohlášení je technika testování bílého pole, ve 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í příkazů se používá k odvození scénáře založeného na struktuře testovaného kódu.

Pokrytí prohlášení

In Bílý Box Testování, tester se soustředí na to, jak software funguje. Jinými slovy, tester se soustředí na vnitřní práci se zdrojovým kódem týkající se řídicích vývojových grafů nebo vývojových diagramů.

Obecně platí, že pokud se podíváme na zdrojový kód, bude existovat široká škála prvků, jako jsou operátory, funkce, smyčkování, výjimečné ovladače atd. Na základě vstupu do programu nemusí být některé příkazy kódu provedeny . Cílem pokrytí příkazů je pokrýt všechny možné cesty, řádky a příkazy v kódu.

Pojďme to pochopit na příkladu, jak vypočítat pokrytí výpisu.

Scénář pro výpočet pokrytí prohlášení pro daný zdrojový kód. Zde používáme dva různé scénáře, abychom zkontrolovali procento pokrytí prohlášení pro každý scénář.

Zdrojový kód:

Prints (int a, int b) {                       ------------  Printsum is a function 
    int result = a+ b; 
    If (result> 0)
    	Print ("Positive", result)
    Else
    	Print ("Negative", result)
    }                                        -----------   End of the source code 

Scénář 1:

Pokud A = 3, B = 9

Pokrytí prohlášení

Příkazy označené žlutou barvou jsou ty, které jsou provedeny podle scénáře

Počet provedených příkazů = 5, Celkový počet příkazů = 7

Pokrytí výpisu: 5/7 = 71 %

Pokrytí prohlášení

Podobně uvidíme scénář 2,

Scénář 2:

Jestliže A = -3, B = -9

Pokrytí prohlášení

Příkazy označené žlutou barvou jsou ty, které jsou provedeny podle scénáře.

Počet provedených příkazů = 6

Celkový počet výpisů = 7

Pokrytí prohlášení

Pokrytí výpisu: 6/7 = 85 %

Pokrytí prohlášení

Ale celkově, pokud vidíte, všechna prohlášení jsou pokryta oběma scénáři. Můžeme tedy dojít k závěru, že celkové pokrytí prohlášením je 100 %.

Pokrytí prohlášení

Na co se vztahuje Pokrytí prohlášení?

  1. Nepoužité výpisy
  2. Mrtvý kód
  3. Nepoužité větve
  4. Chybějící prohlášení

Testování pokrytí rozhodnutí

Pokrytí rozhodování je technika testování bílého pole, která hlásí pravdivé nebo nepravdivé výsledky každého booleovského výrazu zdrojového kódu. Cílem testování pokrytí rozhodování je pokrýt a ověřit veškerý dostupný 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 typu pokrytí se výrazy mohou stát složitými, takže dosažení 100% pokrytí je náročné. Proto se k vykazování této metriky používají různé metody. Tyto metody upřednostňují nejkritičtější kombinace. I když se podobá pokrytí rozhodování, poskytuje větší citlivost na tok řízení.

Testování pokrytí rozhodnutí

Příklad pokrytí rozhodnutí

Zvažte následující kód -

Demo(int a) {                       
     If (a> 5)
    	a=a*3
     Print (a)
    }

Scénář 1:

Hodnota a je 2

Testování pokrytí rozhodnutí

Bude proveden kód zvýrazněný žlutě. Zde je zaškrtnuto „Ne“ výsledek rozhodnutí If (a>5).

Pokrytí rozhodnutí = 50 %

Scénář 2:

Hodnota a je 6

Testování pokrytí rozhodnutí

Bude proveden kód zvýrazněný žlutě. Zde je zaškrtnuto „Ano“ výsledek rozhodnutí If (a>5).

Pokrytí rozhodnutí = 50 %

Testovací případ Hodnota A Výstup Pokrytí rozhodování
1 2 2 50%
2 6 18 50%

Testování pokrytí poboček

Pokrytí pobočky je metoda testování bílé skříňky, ve které je testován každý výsledek z modulu kódu (příkaz 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 zjišťovat sekce bez větví.

Pokud jsou například výsledky binární, musíte otestovat výsledky True i False.

Vzorec pro výpočet pokrytí pobočky:

Testování pokrytí poboček

Příklad pokrytí pobočky

Chcete-li zjistit pokrytí větví, uvažujme stejný příklad, který byl použit dříve

Zvažte následující kód -

Demo(int a) {                       
     If (a> 5)
    	a=a*3
     Print (a)
    }                                       

Testování pokrytí poboček

Větve pokrytí bude brát v úvahu i nepodmíněné větvení

Testovací případ Hodnota A Výstup Pokrytí rozhodování Pokrytí pobočky
1 2 2 50% 33%
2 6 18 50% 67%

Výhody pokrytí pobočky:

Testování pokrytí poboček nabízí následující výhody:

  • Umožňuje ověřit všechny větve v kódu
  • Pomáhá vám zajistit, že žádné rozvětvené vedení nezpůsobí abnormality fungování programu
  • Metoda pokrytí větví odstraňuje problémy, ke kterým dochází kvůli testování pokrytí příkazů
  • Umožňuje vám najít oblasti, které nejsou testovány jinými testovacími metodami
  • Umožňuje vám najít kvantitativní míru pokrytí kódem
  • Pokrytí větví ignoruje větve uvnitř booleovských výrazů

Testování krytí podmínek

Pokrytí stavu nebo výraz pokrytí je testovací metoda používaná k testování a vyhodnocování proměnných nebo dílčích výrazů v podmíněném příkazu. Cílem pokrytí podmínek je zkontrolovat jednotlivé výsledky pro každou logickou podmínku. Pokrytí podmínek nabízí lepší citlivost na tok řízení než pokrytí rozhodování. V tomto pokrytí jsou brány v úvahu pouze výrazy s logickými operandy.

Pokud například výraz obsahuje booleovské operace jako AND, OR, XOR, což označuje celkové možnosti.

Pokrytí podmínek nezaručuje plné pokrytí rozhodnutí.

Vzorec pro výpočet krytí podmínek:

Testování krytí podmínek

Příklad:

Testování krytí podmínek

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 TRUE Pokrytí stavu je ¼ = 25 %
A = 3

B = 4

(a>b) NEPRAVDIVÉ

Pokrytí stroje konečného stavu

Pokrytí konečného automatu je jistě nejsložitějším typem metody pokrytí kódem. Je to proto, že pracuje na chování návrhu. 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 v konečném automatu.

Jaký typ pokrytí kódu zvolit

To je jistě nejobtížnější odpověď. Aby bylo možné vybrat metodu pokrytí, musí tester zkontrolovat, že

  • testovaný kód má jeden nebo více neobjevených defektů
  • náklady na případnou pokutu
  • náklady na ztracenou pověst
  • náklady na ztracený prodej atd.

Čím vyšší je pravděpodobnost, že vady způsobí nákladné výpadky výroby, tím přísnější úroveň krytí musíte zvolit.

Pokrytí kódu vs. funkční pokrytí

Pokrytí kódu Funkční pokrytí
Pokrytí kódu vám říká, jak dobře byl zdrojový kód cvičen vaší testovací stolicí. Funkční pokrytí měří, jak dobře byla funkčnost návrhu pokryta vaší testovací stolicí.
Nikdy nepoužívejte specifikaci návrhu Použijte specifikaci návrhu
Provedeno vývojáři Provedeno testery

Nástroje pro pokrytí kódu

Zde je seznam důležitých nástrojů pro pokrytí kódu:

Název nástroje Description
Cobertura Je to nástroj pro pokrytí otevřeného zdrojového kódu. Měří pokrytí testem pomocí instrumentace kódové základny a analyzuje, které řádky kódu se spouštějí a které se nespouštějí při spuštění testovací sady.
Jetel Clover také zkracuje dobu testování tím, že spouští pouze testy, které pokrývají kód aplikace, který byl upraven od předchozího sestavení.
DevPartner DevPartner umožňuje vývojářům analyzovat Java kód pro kvalitu a složitost kódu.
Emma EMMA podporuje pokrytí tříd, metod, řádků a základních bloků, agregovaných zdrojových souborů, tříd a úrovní metod.
Kalistick Kalistick je aplikace třetí strany, která analyzuje kódy z různých úhlů pohledu.
CoView a CoAnt Coding Software je nástroj pro pokrytí kódu pro metriky, vytváření simulovaných objektů, testovatelnost kódu, pokrytí cest a větví atd.
Bullseye pro C++ BulseyeCoverage je nástroj pro pokrytí kódu C++ a C.
Sonar Sonar je otevřený nástroj pro pokrytí kódu, který vám pomůže řídit kvalitu kódu.

Výhody a nevýhody použití pokrytí kódem

Výhody pokrytí kódu Nevýhody pokrytí kódu
Užitečné k vyhodnocení kvantitativní míry pokrytí kódem I když není v návrhu implementována jakákoli konkrétní funkce, pokrytí kódu stále vykazuje 100% pokrytí.
Umožňuje vám vytvářet další testovací případy pro zvýšení pokrytí Není možné určit, zda jsme pomocí pokrytí kódu testovali všechny možné hodnoty vlastnosti
Umožňuje vám najít oblasti programu, které nejsou vykonávány sadou testovacích případů Pokrytí kódu také neříká, jak moc a jak dobře jste pokryli svou logiku
V případě, že zadaná funkce není implementována nebo není zahrnuta ve specifikaci, pak techniky založené na struktuře nemohou tento problém najít.

Shrnutí

  • Pokrytí kódu je míra, která popisuje míru testování zdrojového kódu programu
  • Pomáhá vám měřit efektivitu implementace testu
  • Pět metod pokrytí kódu je 1.) Pokrytí prohlášení 2.) Pokrytí stavu 3) Pokrytí pobočky 4) Toggle Pokrytí 5) Pokrytí FSM
  • Pokrytí příkazů zahrnuje provedení všech spustitelných příkazů ve zdrojovém kódu alespoň jednou
  • Pokrytí rozhodnutí uvádí pravdivé nebo nepravdivé výsledky každého booleovského výrazu
  • V pokrytí pobočky je testován každý výstup z kódového modulu
  • Podmíněné odhalí, jak jsou proměnné nebo podvýrazy v podmíněném příkazu vyhodnocovány
  • Pokrytí konečného automatu je jistě nejsložitějším typem metody pokrytí kódem
  • Aby bylo možné vybrat metodu pokrytí, musí tester zkontrolovat náklady na potenciální pokutu, ztracenou pověst, ztracený prodej atd.
  • Pokrytí kódu vám říká, 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 návrhu.
  • Cobertura, JTest, Clover, Emma, ​​Kalistick je několik důležitých nástrojů pro pokrytí kódu
  • Pokrytí kódu vám umožňuje vytvářet další testovací případy pro zvýšení pokrytí
  • Pokrytí kódu vám nepomůže určit, zda jsme testovali všechny možné hodnoty funkce