Code Tutoriál k pokrytí: Testování větví, příkazů a rozhodnutí
Co je to Code Dosah?
Code Pokrytí je míra, která popisuje stupeň otestování zdrojového kódu programu. Jedná se o formu testování metodou white box, která vyhledává oblasti programu, které nebyly testovány sadou testovacích případů. Zároveň vytváří testovací případy pro zvýšení pokrytí a určení 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 Code Testování pokrytí?
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.
Code Metody pokrytí
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.
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ě v jakémkoli softwaru, pokud se podíváme na zdrojový kód, bude v něm široká škála prvků, jako jsou operátory, funkce, looping, obslužné rutiny výjimek atd. Na základě vstupu do programu se některé příkazy kódu nemusí provést. 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ář.
Zdroj Code:
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 = 9Pří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 %
Podobně uvidíme scénář 2,
Scénář 2:
Jestliže A = -3, B = -9
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í výpisu: 6/7 = 85 %
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 %.
Na co se vztahuje Pokrytí prohlášení?
- Nepoužité výpisy
- Mrtví Code
- Nepoužité větve
- 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í.
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
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
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:
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)
}
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:
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 | 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 Code Krytí k výběru
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.
Code Krytí vs. funkční krytí
| Code Krytí | Funkční pokrytí |
|---|---|
| Code Pokrytí vám říká, jak dobře byl zdrojový kód testován 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 |
Code Nástroje pro pokrytí
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 Code Kvalita a komplexnost. |
| 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žívání Code Krytí
| Code Výhody krytí | Code Nevýhody krytí |
|---|---|
| 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ů | Code pokrytí také neříká, do jaké míry 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í
- Code Pokrytí je míra, která popisuje stupeň, v jakém byl zdrojový kód programu testován.
- Pomáhá vám měřit efektivitu implementace testu
- Pět Code Metody krytí jsou 1.) Krytí výpisů 2.) Krytí podmínek 3) Krytí poboček 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.
- Code Pokrytí vám říká, jak dobře byl zdrojový kód otestová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
- Code Pokrytí umožňuje vytvářet další testovací případy pro zvýšení pokrytí
- Code Pokrytí vám nepomůže určit, zda jsme otestovali všechny možné hodnoty dané funkce.













