Typy, nástroje a doporučené postupy

Při psaní softwaru se ve vašem kódu nutně vyskytnou chyby. To může být ve formě syntaktických chyb, logických chyb, runtime chyb, výkonnostních chyb, datových chyb nebo ještě hůř.

Téměř všudypřítomná povaha chyb při psaní softwaru dělá z testování softwaru důležitý krok ve vývoji softwaru. Výsledkem řádného a efektivního testování je nejen vysoce kvalitní software, který splňuje potřeby uživatelů, ale také software, který je v souladu s předpisy a nemá téměř žádné zranitelnosti, které by mohli útočníci zneužít.

Testování softwaru lze provádět formou automatizovaného testování, unit testování, integračního testování nebo testování celého softwaru prostřednictvím testování systému.

Důležité však během softwaru je, jak zjistíte, zda byl váš software testován komplexně. Jsou testy, které jste na softwaru provedli, dostatečné?

Otestovali jste plně všechny části svého softwaru, nebo existují části kódu, které nebyly testovány vůbec?

Takové otázky nutně vyvstanou při testování softwaru, a proto je pokrytí kódu tak důležité.

Pokrytí kódu je metrika testování softwaru, která vám říká, jak velká část vašeho kódu byla provedena, a tedy testována testy, které jste spustili na softwaru, který testujete. Výsledky pokrytí kódem jsou vyjádřeny v procentech.

Toto procento ukazuje, jak velká část kódu byla pokryta testy, které jste na kódu provedli. Pokud například spustíte test a získáte zpět 60% pokrytí kódu, znamená to, že 40 % vašeho kódu nebylo pokryto testy, které jste napsali, a proto mohou být v netestovaném kódu chyby a zranitelnosti.

Z tohoto důvodu vám pokrytí kódu umožňuje analyzovat efektivitu a úplnost testů, které jste na svém softwaru spustili. To má tu výhodu, že software je před vydáním řádně a komplexně otestován. To snižuje softwarové chyby v produkčním softwaru, které by mohly ovlivnit uživatelskou zkušenost se softwarem.

Stejně jako 100% pokrytí kódem nutně neznamená, že software, který píšete, je zcela bez chyb, chcete se zaměřit na vysoké pokrytí kódem, abyste zajistili efektivní testování svého softwaru.

V kritických průmyslových odvětvích, jako je letectví a medicína, kde mohou softwarové chyby způsobit smrt, vyžadují předpisy 100% pokrytí softwaru během testování.

Typy metrik pokrytí kódu

Existuje několik typů metrik pokrytí kódu, které lze měřit při testování softwaru. Obsahují:

  • Pokrytí příkazů – měří procento spustitelných příkazů ve zdrojovém kódu, které byly provedeny během testování.
  • Pokrytí funkcí – měří procento definovaných funkcí, které byly volány během testování.
  • Pokrytí větví – měří procento větví nebo možných cest, které byly provedeny ze všech rozhodovacích bodů ve zdrojovém kódu. Používá se k zajištění toho, že všechny větve, které vycházejí ze struktur řízení rozhodování, jako jsou příkazy if, switch a if else, byly plně otestovány.
  • Pokrytí podmínek – měří procento booleovských výrazů, které byly testovány na pravdivé i nepravdivé hodnoty.
  • Pokrytí smyček – měří procento smyček ve zdrojovém kódu, které byly provedeny během testování.
  • Pokrytí cesty – měří procento všech možných cest provádění ve zdrojovém kódu, které byly testovány.
  Co je to hardwarová krypto peněženka?

Výše uvedené metriky jsou obvykle součástí zprávy o pokrytí kódu.

Doporučené postupy pro pokrytí kódu

Existují určité osvědčené postupy, které se doporučují při provádění pokrytí kódem, aby byla zajištěna účinnost a kvalita pokrytí kódem. Obsahují:

Mějte jasné cíle pokrytí

Při jakémkoli testování softwaru nastavte cílové procento pokrytí pro každou metriku pokrytí testem, která je vhodná. To má výhodu nejen v tom, že poskytuje jasné testovací cíle, ale také pomáhá snižovat chyby v softwaru tím, že směřuje úsilí týmu ke zvýšení pokrytí kódu. Pomáhá také zajistit, že testování softwaru je věnována pozornost, kterou si zaslouží během vývoje softwaru.

Zaměřte se na kvalitu testu

Je důležité poznamenat, že pokrytí kódu jednoduše ukazuje procento kódu, který byl testován, a neukazuje, zda byl testován správně nebo zda je software bez chyb. Proto místo pouhého zaměření na přiblížení se 100% pokrytí kódem by se měl klást důraz na psaní kvalitních a účinných testů, které správně otestují software a přidají hodnotu.

Zvyšte pokrytí kódu v často se měnícím kódu

Zatímco dosažení vysokých čísel kódového pokrytí ve velkých projektech může být obtížné, lze vynaložit úsilí na zajištění toho, aby se pokrytí kódem časem zlepšilo.

Skvělý způsob, jak toho dosáhnout, je vyžadovat vysoké pokrytí kódem přes 90 procent v každém novém potvrzení provedeném na základně kódu projektu.

Vynucení pokrytí kódu na úrovni odevzdání je nejen realistické a proveditelné, ale také zajišťuje, že jakékoli nové změny provedené v softwaru budou mít vynikající pokrytí kódu.

Měřte a analyzujte data pokrytí kódu

Využijte výsledky získané z pokrytí kódu k identifikaci oblastí, které stále potřebují testování, a také k vedení budoucího testovacího úsilí s prioritou v oblastech s nízkým pokrytím kódu.

Analyzujte data o pokrytí kódu a identifikujte kritické oblasti aplikace, které je třeba teprve otestovat, a nasměrujte své úsilí k úplnému otestování netestovaných kritických oblastí. Použití údajů o pokrytí kódu ke zlepšení a stanovení priorit softwaru vede k lépe testovanému softwaru s menším počtem defektů.

Pokrytí kódu vs. pokrytí testem

Zatímco oba se používají ke zjištění účinnosti testů, pokrytí kódem a pokrytí testem se zásadně liší v jejich použití a v tom, co měří.

Pokrytí testů je metrika používaná k určení rozsahu, v jakém písemné testy pokrývají požadavky softwaru. Zahrnuje testování každého softwarového požadavku a pomáhá zjistit, jak dobře byl software testován, pokud jde o splnění jeho požadavků.

Výsledky pokrytí testem ukazují procento požadavků na software, které byly testovány. Testovací pokrytí obvykle provádějí odborníci na zajištění kvality.

Na druhé straně pokrytí kódu je metrika testování softwaru, která se používá k určení procenta zdrojového kódu, který byl proveden písemnými testy.

Výsledky pokrytí kódu ukazují, do jaké míry byly příkazy, funkce, cesty, smyčky, větvení a podmínky ve zdrojovém kódu provedeny písemnými testy jednotek. Pokrytí kódu se používá k hodnocení toho, jak dobře napsané testy pokrývají zdrojový kód, a obvykle je provádějí vývojáři softwaru.

  Ansible pro začátečníky – základy Ansible a jak to funguje

Pokrytí kódu je důležitou metrikou k měření při testování softwaru. Zde je několik nástrojů, které vám pomohou s pokrytím kódu:

Jetel

Clover je nástroj pro pokrytí kódu s otevřeným zdrojovým kódem původně vyvinutý společností Atlassian, australskou softwarovou společností, která vyvíjí produkty pro týmy vývoje softwaru. Nástroj je napsán čistě v Javě a může běžet na jakémkoli operačním systému, který splňuje požadavky na Java Runtime Environment.

Clover lze použít k pokrytí kódu na kódu napsaném v programovacích jazycích Java, Groovy nebo AspectJ. Má podporu pro testovací rámce, jako jsou JUnit, TestNG a Spock, a lze jej také integrovat s IDE, jako jsou IntelliJ IDEA a Eclipse.

Clover lze použít k měření metrik pokrytí kódu, jako je metoda, příkaz, větev, globální pokrytí a pokrytí podle testu.

Z cvičení pokrytí kódu může generovat vysoce konfigurovatelné zprávy HTML, které kromě oblastí s nejvyšším rizikem v softwaru zobrazují výsledky pokrytí kódu, a lze je použít při optimalizacích testů.

Zprávy lze také generovat ve formátu PDF, XML, JSON nebo prostého textu. Klíčové výhody jetele jsou, že může být integrován s mnoha různými nástroji a je aktivně vyvíjen a zdokonalován.

JaCoCo

JaCoCo je bezplatná knihovna pro pokrytí kódu pro programovací jazyk Java vyvinutá týmem EclEmma. Knihovna je implementována v EclEmma, ​​což je bezplatný nástroj pro pokrytí kódu Java pro IDE Eclipse.

JaCoCo poskytuje bohatou analýzu pokrytí, jejíž výsledky jsou okamžitě shrnuty a zvýrazněny v editoru zdrojového kódu Java a umožňuje uživatelům rozbalit výsledky pokrytí na úroveň metody.

Výsledky jsou prezentovány pomocí přizpůsobitelného barevného kódu, který zvýrazňuje řádky kódu, které byly plně, částečně nebo dosud nepokryty testy spuštěnými na zdrojovém kódu. Umožňuje slučování a zvažování různých testovacích běhů s cílem dosáhnout úplného pokrytí zdrojového kódu kódem.

JaCoCo je lehký nástroj a pro analýzu pokrytí kódu nevyžaduje úpravu vašich projektů ani provádění jiných nastavení.

Cobertura

Cobertura je bezplatný a open-source nástroj pro pokrytí kódu Java, který je založen na Jcoverage a lze jej používat samostatně, prostřednictvím skriptu Ant nebo prostřednictvím pluginu Maven. Jeho použití prostřednictvím pluginu Maven je nejběžnějším způsobem, jak používat Cobertura pro pokrytí kódu.

Cobertura měří procento řádků nebo větví, které byly provedeny testy spuštěnými na zdrojovém kódu Java. Poskytuje metriky, jako je pokrytí řádků, které ukazuje procento příkazů provedených během testů, a také pokrytí větví, které ukazuje procento větví pokrytých během testů.

Ukazuje také faktor složitosti, který se zvyšuje s rostoucím počtem větví ve vašem kódu Java.

Výsledky pokrytí kódem jsou prezentovány v HTML nebo XML a ukazují, které části zdrojového kódu nebyly testovány. Kromě zobrazování výsledků testovacího pokrytí lze Coberturu použít také k vyhledání netestovaného kódu a chyb a také k identifikaci nedostupného kódu.

Istanbul

Istanbul je nástroj pro pokrytí kódu pro kód JavaScript s podporou ES6+. Tento nástroj lze nainstalovat do libovolného projektu Javascript jako vývojovou závislost pomocí správce balíčků uzlů.

Istanbul poskytuje metriky pokrytí kódem, jako je výpis, pobočka, funkce a pokrytí linky. Zobrazuje také řádky ve zdrojovém kódu, které nebyly pokryty testy. Dělá to přidáním čítačů řádků do vašeho kódu JavaScript, aby mohl sledovat, do jaké míry vaše testy jednotek spouštějí váš zdrojový kód.

  Průvodce webovými příběhy Google pro začátečníky [+4 Tools]

Výsledky pokrytí kódem z Istanbulu mohou být zobrazeny v terminálu nebo ve formě HTML. Istanbul navíc nabízí podporu pro aplikace, které vytvářejí podprocesy, zdrojové mapované pokrytí projektů Babel a TypeScript.

Pytest-cov

Pytest-cov je bezplatný plugin Pythonu používaný ke generování zpráv o pokrytí kódu pro kód Pythonu. Instaluje se pomocí instalačního programu balíků Pythonu Pip a ovládá se z příkazového řádku.

Jeho zpráva o pokrytí kódu ukazuje prohlášení ve vašem projektu Python, která nejsou pokryta testy, a poskytuje procento pokrytí testem, které ukazuje procento vašeho kódu Python pokrytého testy.

Pytest-cov nabízí podporu podprocesů, podporu xdist a konzistentní chování pytestu. Výchozím chováním Pytest-cov při provádění testů je mazání existujících datových souborů pokrytí, aby byla zajištěna nová a čistá data pro každý nový test. Umožňuje však také uživatelům kombinovat výsledky testu pokrytí kódu z předchozích testovacích běhů.

Coverage.py

Coverage.py je nástroj pro pokrytí kódu pro programy Python a je instalován v projektech používajících pip.

Ve výchozím nastavení měří pokrytí řádků nebo příkazů a poskytuje výsledky ukazující počet příkazů v programu, příkazy vynechané testy a procentuální pokrytí z testu a také zobrazuje řádky ve zdrojovém kódu Pythonu, které byly vynechány testy. Stále však může být konfigurován pro měření pokrytí větví v programech Python.

Coverage.py lze také použít ke zjištění, které testy proběhly které řádky ve zdrojovém kódu. Jeho zpráva o pokrytí kódu může být prezentována v terminálu a také ve formátech HTML, XML, JSON a LCOV.

SimpleCov

SimpleCov je robustní nástroj pro pokrytí kódu pro programovací jazyk Ruby. Využívá vestavěnou knihovnu pokrytí Ruby ke shromažďování relevantních dat, která se použijí při určování pokrytí kódu po provedení testů.

Nejlepší na SimpleCov je jeho prezentace výsledků pokrytí kódu. Slučuje také výsledky z různých typů provedených testů, takže vygenerovaná zpráva zobrazuje výsledky všech provedených testů, což umožňuje snadnou identifikaci netestovaných částí kódu.

Také formátuje zdrojový kód pomocí barevných kódů, které lze snadno použít k identifikaci testovaných a netestovaných částí kódu. Ve výchozím nastavení SimpleCov měří a hlásí pokrytí linky testy. Lze jej však nakonfigurovat tak, aby měřil a podával zprávy o pokrytí větví provedenými testy.

Hluboký kryt

Deep Cover je přesný nástroj pro pokrytí kódu pro kód Ruby. Nabízí přesnější zprávy o pokrytí linky tím, že zajišťuje, že linka je považována za pokrytou pouze tehdy, je-li provedena zcela a ne částečně.

Navíc nabízí podporu pro pokrytí uzlů a větví, které lze volitelně použít ke zjištění, zda některé větve nebyly testovány.

Deep Cover se nejen snadno používá bez nutnosti konfigurací, ale lze jej integrovat do projektů pomocí jiných nástrojů pro pokrytí kódu, jako je vestavěná knihovna pokrytí kódu Ruby nebo SimpleCov. V takových případech Deep Cover zpřísní nástroje tím, že pouze označí řádky jako provedené, pouze pokud je vše na řádku kódu plně provedeno.

Závěr

Přestože vyšší pokrytí kódem nemusí nutně vést k bezchybnému softwaru, je to zásadní metrika, kterou je třeba zohlednit při testování softwaru. Pokrytí kódu je důležité při hodnocení toho, jak moc napsané testy skutečně testují zdrojový kód softwaru.

Práce na zlepšení pokrytí kódu během testování navíc vede k lépe otestovanému softwaru, který je méně náchylný k chybám v produkci. Chcete-li provést pokrytí kódu při testování softwaru, zvažte použití nástrojů navržených v tomto článku.

Můžete také prozkoumat cloudové nástroje pro zátěžové testování.