Testovací pokrytí v testování softwaru: Jak ho měřit
⚡ Chytré shrnutí
Testovací pokrytí v testování softwaru měří, jakou část aplikace sada testů skutečně procvičuje. Odhaluje netestované požadavky, cesty kódu a rizika, takže týmy mohou přidávat cílené případy a vydávat je s měřitelnou jistotou.

Co je testovací pokrytí?
Testovací pokrytí je definováno jako metrika v Testování softwaru, která měří množství testů provedených sadou testů. Bude zahrnovat shromažďování informací o tom, které části programu se spouštějí při spuštění testovací sady, aby se určilo, které větve podmíněných příkazů byly použity.
Jednoduše řečeno, je to technika, která zajišťuje, že vaše testy testují váš kód nebo kolik kódu jste spuštěním testu uplatnili.
Co dělá testovací pokrytí?
V živém projektu testovací pokrytí podporuje čtyři praktické aktivity:
- Nalezení oblasti požadavku neimplementovaného sadou testovacích případů
- Pomáhá vytvářet další testovací případy pro zvýšení pokrytí
- Identifikace kvantitativní míry pokrytí testem, což je nepřímá metoda kontroly kvality
- Identifikace nesmyslných testovacích případů, které nezvyšují pokrytí
Výhody testovacího pokrytí v softwarovém inženýrství
Tyto činnosti se promítají do konkrétních inženýrských výhod.
- Může zajistit kvalitu testu
- Může pomoci určit, které části kódu byly skutečně dotčeny při vydání nebo opravě
- Dokáže určit všechny rozhodovací body a cesty ve vaší aplikaci, které nebyly testovány, což vám umožňuje zvýšit pokrytí testy.
- Zabránit vada unikání
- Čas, rozsah a náklady lze mít pod kontrolou
- Prevence defektů v rané fázi životního cyklu projektu
- Mezery v požadavcích, testovacích případech a defekty na úrovni jednotky a kódu lze najít jednoduchým způsobem
Typy testovacího pokrytí
Pokrytí nikdy není jedno číslo. Týmy track několik typů najednou, protože každý odpovídá na jinou otázku týkající se stejné sady. Níže uvedená tabulka seskupuje typy, se kterými se setkáváte nejčastěji.
| Typ pokrytí | Co to měří | Nejlepší pro použití |
|---|---|---|
| Krytí výpisu (řádku) | Spustitelné řádky se spustí alespoň jednou | Jednotkové testy a audity staršího kódu |
| Pokrytí pobočky nebo rozhodnutí | Pravdivý a nepravdivý výsledek každého rozhodnutí | Podmíněná a ověřovací logika |
| Krytí stavu | Každý booleovský dílčí výraz jako pravdivý a nepravdivý | Složené výrazy AND nebo OR |
| Pokrytí trasy | Unikátní trasy procházející modulem | Bezpečnostně kritické a finanční toky |
| Funkční pokrytí | Funkce nebo metody volané testy | API a servisní vrstvy |
| Pokrytí požadavků | Požadavky namapované na alespoň jeden test | Přijetí a podvedenítractuální podpis |
| Krytí rizik | Identifikované vysoce rizikové oblasti, které byly procvičovány | Krátké uvolňovací cykly |
Prvních pět typů jsou míry na úrovni kódu a patří do testování bílé skříňky, zatímco požadavky a krytí rizik se nacházejí na úrovni testovacího plánu.
Jaké jsou hlavní rozdíly mezi Code Pokrytí a pokrytí testy?
Code krytí a testovací pokrytí jsou techniky měření, které vám umožňují posoudit kvalitu kódu vaší aplikace.
Zde jsou některé kritické rozdíly mezi kabinami těchto metod pokrytí:
| parametry | Code Krytí | Pokrytí testu |
|---|---|---|
| Definice | Code termín krytí používaný při použití aplikačního kódu za běhu aplikace. | Testovací pokrytí znamená celkový testovací plán. |
| Cíl | Code Metriky pokrytí mohou týmu pomoci monitorovat automatizované testy. | Testovací pokrytí obsahuje podrobnosti o úrovni, na kterou bylo testováno psané kódování aplikace. |
| Podtypy | Code krytí rozdělené na podtypy, jako je krytí příkazů, krytí podmínek, krytí větví, Toggle pokrytí, pokrytí FSM. | Žádný podtyp metody pokrytí testem. |
Testovací vzorec pokrytí
Chcete-li vypočítat pokrytí testem, musíte postupovat podle níže uvedených kroků:
Krok 1) Počítat Y, celkový počet řádků kódu v softwaru, který používáte Testování
Krok 2) Počítat X, počet řádků kódu, které všechny testovací případy aktuálně spouštějí
Nyní musíte najít (X děleno Y) vynásobené 100. Výsledkem tohoto výpočtu je procento pokrytí vašeho testu.
Například:
Pokud je počet řádků kódu v systémové komponentě 500 a počet řádků provedených ve všech existujících testovacích případech je 50, pak je pokrytí testů:
(50 / 500) * 100 = 10% // executed lines divided by total lines
Příklady testovacího pokrytí
Samotné procento nikdy není celý příběh, jak ukazují níže uvedené příklady.
Příklad 1:
Například pokud chcete testovat „nůž“, musíte se zaměřit na to, zda přesně krájí zeleninu nebo ovoce. Existují však i další aspekty, na které je třeba hledat, například to, zda by s ním uživatel měl být schopen pohodlně manipulovat.
Příklad 2:
Například, pokud chcete zkontrolovat aplikaci Poznámkový blok, pak je kontrola jejích základních funkcí nutností. Musíte však zohlednit i další aspekty, jako je například reakce aplikace Poznámkový blok při používání jiných aplikací, uživatel rozumí jejímu používání a aplikace nespadne, když se pokusí udělat něco neobvyklého atd.
Techniky pokrytí testy
Oba příklady ukazují na stejný závěr: dosažení cílového pokrytí závisí méně na napsání většího počtu testů a více na výběru správné techniky návrhu testů. Níže uvedené techniky rozšiřují pokrytí a zároveň udržujíping apartmá malé.
- Analýza okrajových hodnot: Vybírá vstupy na okrajích každého platného rozsahu, kde se defekty shlukují nejvíce. Viz analýza hraničních hodnot pro vyřešené případy.
- Ekvivalenční dělení: Seskupuje vstupy, které aplikace zpracovává identicky, takže jeden případ může bezpečně reprezentovat celou třídu hodnot.
- Testování rozhodovacích tabulek: Zahrnuje kombinace podmínek a jejich očekávaných výsledků v rámci jedné mřížky.
- Testování přechodu stavů: Procvičuje každý platný a neplatný pohyb mezi stavy aplikace.
- Testování základní cesty: Odvozuje minimální množinu nezávislých cest z grafu toku řízení.
- Testování založené na riziku: Seřazuje funkce podle dopadu na podnikání a nejprve zohledňuje ty s nejvyšším rizikem.
- Průzkumné testování: Odhaluje mezery, které scénáře případů a zprávy o pokrytí nikdy neodhalí.
Jak lze dosáhnout pokrytí testy?
Jakmile jsou techniky vybrány, pokrytí zajišťují čtyři zavedené trasy.
- Testovací pokrytí lze provést cvičením technik statické kontroly, jako jsou vzájemné recenze, inspekce a návod
- Transformací ad-hoc defektů do spustitelných testovacích případů
- Na úrovni kódu nebo na úrovni testu jednotek lze pokrytí testem dosáhnout využitím nástrojů pro automatické pokrytí kódu nebo testování jednotek
- Pokrytí funkčních testů lze provést pomocí vhodných nástrojů pro správu testů
Jak zlepšit pokrytí testy
Zavedení pokrytí je výchozím bodem; jeho zvyšování je opakovatelná rutina. Tuto sekvenci provádějte na začátku každého cyklu vydávání.
- Nastavte aktuální číslo jako základní. Spusťte sestavu pokrytí a výpis záznamu, větvení a pokrytí požadavků odděleně, aby mezery zůstaly viditelné pro každý modul, a ne skryté v rámci jednoho průměru celého projektu.
- Mapujte testy na požadavky. Build tracmřížka proveditelnosti, která propojuje každý požadavek s alespoň jedním testovacím případem. Jakýkoli prázdný řádek je potvrzená mezera, nikoli podezření.
- Seřaďte moduly podle rizika. Logika plateb, ověřování a migrace dat si zaslouží mnohem hlubší pokrytí než statickou obrazovku s nápovědou, proto vynaložte rozpočet tam, kde by selhání nejvíce zasáhlo.
- Přidejte negativní a okrajové případy. Prázdné vstupy, nadměrně velké hodnoty, časové limity sítě a chyby oprávnění se dostanou do větví, kterých se testy happy-path nikdy nedotknou.
- Vrstvěte testovací úrovně. Kombinovat testování jednotky, integrační testovánía kontroly od začátku do konce, protože každá úroveň pokrývá to, co ostatní strukturálně nemohou.
- Automatizujte sadu regresních algoritmů. Promostabilních případů do testování automatizace a provést je uvnitř CI/CD potrubí po každém commitu.
- Zrušte nadbytečné případy. Odstraňte duplicitní testy, které přidávají minuty provádění, aniž by přidaly jediný odkrytý řádek.
- Revsledovat trend v každém sprintu. Tracpokrytí k vedle hustota defektůRostoucí únik při plochém pokrytí je včasným varováním před slepým místem.
Warning️ Varování: Neberte 100 procent jako cíl. Sada s 85 procenty a silnými asercemi chrání verzi mnohem lépe než 95 procent povrchních kontrol, které spouštějí kód bez ověření jakéhokoli výsledku.
Nevýhody testovacího pokrytí
Pokrytí je sice cenné, ale s sebou nese omezení, která je třeba zmínit před uvedením jakéhokoli procenta.
- Většina úloh v testovacím pokrytí je manuální, protože neexistují žádné nástroje k automatizaci. Analyzovat požadavky a vytvářet testovací případy proto vyžaduje hodně úsilí.
- Testovací pokrytí vám umožňuje spočítat funkce a poté měřit s několika testy. Vždy je však prostor pro chyby v úsudku.
