Code Nástroj pro pokrytí: Testování příkazů, větví a rozhodnutí
⚡ Chytré shrnutí
Code Pokrytí je měření metodou white-box, které udává míru, do jaké byl zdrojový kód testován sadou testů, helping Týmy vyhledávají netestované příkazy, větve, podmínky a cesty, které mohou zabírat skryté vady.

Co je to Code Dosah?
Code krytí je míra, která popisuje stupeň, do jaké byl zdrojový kód programu testován. Je to jedna z forem testování bílé skříňky který vyhledává oblasti programu, které nebyly testovány sadou testovacích případů. Pomáhá také vytvářet další testovací případy pro zvýšení pokrytí a určení kvantitativní míry pokrytí kódu.
Ve většině případů systém pro pokrytí kódu shromažďuje informace o běžícím programu. Tyto informace pak kombinuje s informacemi o zdrojovém kódu a vygeneruje tak zprávu o pokrytí kódu 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 testů.
- Nabízí kvantitativní měření testování.
- 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é skříňky, při které jsou všechny spustitelné příkazy ve zdrojovém kódu provedeny alespoň jednou. Používá se k výpočtu počtu provedených příkazů ve zdrojovém kódu. Hlavním účelem krytí příkazů 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ářů založených na struktuře testovaného kódu.
Při testování metodou white box se tester soustředí na to, jak software funguje. Jinými slovy, tester se soustředí na vnitřní fungování zdrojového kódu, konkrétně na grafy toku řízení nebo vývojové diagramy.
Obecně v jakémkoli softwaru, pokud se podíváte na zdrojový kód, najdete širokou škálu prvků, jako jsou operátory, funkce, loo...ping, 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 si to vysvětlit na příkladu, jak vypočítat krytí výpisů. Zde vezmeme dva různé scénáře, abychom pro každý scénář ověřili procento krytí výpisů.
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 = 9
Žlutě označené příkazy jsou ty, které jsou provedeny dle scénáře. Počet provedených příkazů = 5, celkový počet příkazů = 7, takže krytí příkazů = 5/7 = 71 %.
Scénář 2: Jestliže A = -3, B = -9
Žlutě označené příkazy jsou ty, které jsou provedeny dle scénáře. Počet provedených příkazů = 6, celkový počet příkazů = 7, takže krytí příkazů = 6/7 = 85 %.
Ale celkově, pokud se podíváte, všechny výroky jsou pokryty oběma scénáři. Můžeme tedy dojít k závěru, že celkové pokrytí výroků 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é skříňky, která hlásí pravdivé nebo nepravdivé výsledky každého booleovského výrazu ve zdrojovém kódu. Cílem testování pokrytí rozhodnutí je pokrýt a ověřit veškerý dostupný zdrojový kód kontrolou a zajištěním, aby každá větev každého možného rozhodovacího bodu byla provedena alespoň jednou.
V tomto typu pokrytí se výrazy mohou stát složitými, což ztěžuje dosažení 100% pokrytí. Proto se k vykazování této metriky používají různé metody. Tyto metody upřednostňují nejdůležitější kombinace. I když je to podobné jako pokrytí větví, 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. Výsledek rozhodnutí „ne“. Pokud je zaškrtnuto políčko (a>5), pak krytí rozhodnutí = 50 %.
Scénář 2: Hodnota a je 6. Výsledek rozhodnutí „Ano“. Pokud je zaškrtnuto (a>5), pak krytí 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é se testuje každý výsledek z kódového modulu (příkazu nebo smyčky). Účelem pokrytí větví je zajistit, aby každá rozhodovací podmínka z každé větve byla provedena alespoň jednou. Pomáhá měřit podíly nezávislých segmentů kódu a vyhledávat sekce, které nemají žádné větve.
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
Pro zjištění pokrytí větví zvažte stejný příklad jako dříve. Pokrytí větví bude zohledňovat i bezpodmíneč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:
- Umožňuje ověřit všechny větve v kódu.
- Pomáhá vám zajistit, aby žádná větve nevedla k abnormalitám v provozu programu.
- Odstraňuje problémy, ke kterým dochází v důsledku testování pokrytí příkazů.
- Umožňuje najít oblasti, které nejsou testovány jinými testovacími metodami.
- Umožňuje najít kvantitativní míru pokrytí kódu.
- Pokrytí větví ignoruje větve uvnitř booleovských výrazů.
Testování krytí podmínek
Pokrytí stavuPokrytí výrazů neboli pokrytí výrazů 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ínek je kontrolovat jednotlivé výsledky pro každou logickou podmínku. Pokrytí podmínek nabízí lepší citlivost na tok řízení než pokrytí rozhodnutí. V tomto pokrytí se berou v úvahu pouze výrazy s logickými operandy.
Například pokud výraz obsahuje booleovské operace jako AND, OR nebo XOR, označuje to celkový počet možností. Pokrytí podmínek nezaručuje úplné pokrytí rozhodnutí.
Vzorec pro výpočet krytí podmínek:
Pro výraz se dvěma operandy existují čtyři možné kombinace: TT, FF, TF a FT. Uvažujme vstup X=3, Y=4 (x b) NEPRAVDA, což dává krytí podmínky 1/4 = 25 %.
Pokrytí stroje konečného stavu
Pokrytí konečným stavovým automatem je jistě nejsložitějším typem metody pokrytí kódu. Je to proto, že pracuje s chováním návrhu. V této metodě pokrytí je třeba sledovat, kolikrát jsou určité stavy navštíveny nebo procházeny. Také se kontroluje, kolik sekvencí je zahrnuto v konečném stavovém automatu.
Jaký typ Code Krytí k výběru
Na tuto otázku je jistě nejtěžší odpovědět. Aby tester mohl vybrat metodu krytí, musí ověřit, zda:
- testovaný kód má jednu nebo více neobjevených vad,
- náklady na případnou pokutu,
- náklady na ztracenou reputaci,
- náklady na ušlé tržby a tak dále.
Čí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í |
|---|---|
| Ukazuje, jak dobře byl zdrojový kód otestován vaší testovací stolicí. | Měří, jak dobře byla funkčnost návrhu pokryta vaší testovací stolicí. |
| Nikdy nepoužívá specifikaci návrhu. | Používá specifikaci návrhu. |
| Hotovo 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 | Nástroj pro pokrytí kódu s otevřeným zdrojovým kódem. Měří pokrytí testy instrumentací kódové základny a analýzou, které řádky kódu se při spuštění testovací sady provedou a které ne. |
| Jetel | Jetel (OpenClover) také zkracuje dobu testování tím, že spouští pouze testy, které pokrývají kód aplikace 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é na úrovni zdrojového souboru, třídy a metody. |
| Kalistick | Kalistick je aplikace třetí strany, která analyzuje kód z různých perspektiv. |
| CoView a CoAnt | Nástroj pro pokrytí kódu pro metriky, vytváření simulovaných objektů, testovatelnost kódu, pokrytí cest a větví a další. |
| Bullseye pro C++ | BullseyeCoverage je nástroj pro pokrytí kódu. C++ a C. |
| Sonar | Sonar je nástroj pro správu otevřeného kódu, který vám pomáhá spravovat kvalitu kódu. |
Výhody a nevýhody používání Code Krytí
| Výhody | Nevýhody |
|---|---|
| Užitečné pro vyhodnocení kvantitativní míry pokrytí kódu. | I když specifická funkce není v návrhu implementována, pokrytí kódu stále hlásí 100% pokrytí. |
| Umožňuje vytvářet další testovací případy pro zvýšení pokrytí. | Není možné určit, zda byly pomocí pokrytí kódu otestovány všechny možné hodnoty funkce. |
| Umožňuje najít oblasti programu, které nebyly procvičeny sadou testovacích případů. | Code Pokrytí nevypovídá o tom, do jaké míry a jak dobře jste pokryli svou logiku. |






