Co je Unit Testing?
Co je Unit Testing?
Testování jednotek je typ testování softwaru, při kterém se testují jednotlivé jednotky nebo součásti softwaru. Účelem je ověřit, že každá jednotka softwarového kódu funguje podle očekávání. Testování jednotek se provádí během vývoje (fáze kódování) aplikace vývojáři. Testy jednotek izolují část kódu a ověřují její správnost. Jednotkou může být individuální funkce, metoda, procedura, modul nebo objekt.
V SDLC, STLC, V modelu je testování jednotek první úrovní testování před integračním testováním. Jednotka testování je bíláBox testovací technika, kterou obvykle provádí vývojář. I když v praktickém světě kvůli časové tísni nebo neochotě vývojářů testovat, inženýři QA také testují jednotky.
Video s vysvětlením testování jednotky
Proč provádět testování jednotek?
Testování jednotek je důležité, protože vývojáři softwaru se někdy snaží ušetřit čas prováděním minimálního testování jednotek a to je mýtus, protože nevhodné testování jednotek vede k vysokým nákladům Přeběhnout fixace během Testování systému, Testování integrace a dokonce i beta testování po aplikaci je vytvořeno. Pokud je správné testování jednotek provedeno v raném vývoji, pak to nakonec šetří čas a peníze.
Zde jsou hlavní důvody, proč provádět testování jednotek v softwarovém inženýrství:
- Jednotkové testy pomáhají opravit chyby na začátku vývojového cyklu a šetřit náklady.
- Pomáhá vývojářům porozumět základně testovacího kódu a umožňuje jim rychle provádět změny
- Dobré jednotkové testy slouží jako projektová dokumentace
- Unit testy pomáhají s opětovným použitím kódu. Migrujte oba svůj kód si vaše testy k vašemu novému projektu. Vylaďte kód, dokud se testy znovu nespustí.
Jak provést testování jednotek
Aby bylo možné provést Unit Tests, vývojáři napíší část kódu pro testování konkrétní funkce v softwarové aplikaci. Vývojáři mohou také tuto funkci izolovat a testovat přísněji, což odhalí zbytečné závislosti mezi testovanou funkcí a jinými jednotkami, takže lze tyto závislosti odstranit. Vývojáři obecně používají Rámec UnitTest k vývoji automatizovaných testovacích případů pro testování jednotek.
Unit Testování je dvou typů
- Manuál
- Automatizovaný
Testování jednotek je běžně automatizované, ale lze jej stále provádět ručně. Softwarové inženýrství neupřednostňuje jeden před druhým, ale preferuje se automatizace. Manuální přístup k testování jednotek může využívat instruktážní dokument krok za krokem.
V rámci automatizovaného přístupu -
- Vývojář zapíše část kódu do aplikace, jen aby otestoval funkci. Později by se vyjádřili a nakonec odstranili testovací kód při nasazení aplikace.
- Vývojář by také mohl funkci izolovat, aby ji otestoval přísněji. Toto je důkladnější postup testování jednotek, který zahrnuje kopírování a vkládání kódu do vlastního testovacího prostředí než do jeho přirozeného prostředí. Izolace kódu pomáhá odhalit zbytečné závislosti mezi testovaným kódem a jinými jednotkami nebo datovými prostory v produktu. Tyto závislosti pak mohou být odstraněny.
- Kodér obecně používá UnitTest Framework k vývoji automatizovaných testovacích případů. Pomocí automatizačního rámce vývojář zakóduje kritéria do testu, aby ověřil správnost kódu. Během provádění testovacích případů framework zaznamenává neúspěšné testovací případy. Mnoho frameworků je také automaticky označí a nahlásí, v souhrnu neúspěšné testovací případy. V závislosti na závažnosti selhání může framework zastavit následné testování.
- Pracovní postup Unit Testing je 1) Vytvořit testovací případy 2) Revzobrazit/přepracovat 3) Výchozí stav 4) Provést testovací případy.
Jednotkové zkušební techniky
Jedno Jednotkové zkušební techniky jsou rozděleny hlavně do tří částí, kterými jsou testování černé skříňky, které zahrnuje testování uživatelského rozhraní spolu se vstupem a výstupem, testování bílé skříňky, které zahrnuje testování funkčního chování softwarové aplikace a testování šedé skříňky, které se používá k provádění testovacích sad, testovacích metod. , testovací případy a provádění analýzy rizik.
Techniky pokrytí kódu používané při testování jednotek jsou uvedeny níže:
- Pokrytí prohlášení
- Pokrytí rozhodování
- Pokrytí pobočky
- Pokrytí stavu
- Pokrytí stroje konečného stavu
Více v odkazu https://www.guru99.com/code-coverage.html
Příklad testování jednotek: Mock Objects
Testování jednotek se opírá o falešné objekty vytvářené k testování částí kódu, které ještě nejsou součástí kompletní aplikace. Mock objekty doplní chybějící části programu.
Můžete mít například funkci, která potřebuje proměnné nebo objekty, které ještě nejsou vytvořeny. Při testování jednotek budou tyto započítány ve formě falešných objektů vytvořených výhradně za účelem testování jednotek provedeného v této části kódu.
Nástroje pro testování jednotek
Existuje několik softwarových automatických testů jednotek, které pomáhají s testováním jednotek při testování softwaru. Níže uvádíme několik příkladů:
- Junit: Junit je bezplatný testovací nástroj používaný pro Java programovací jazyk. Poskytuje tvrzení k identifikaci testovací metody. Tento nástroj nejprve otestuje data a poté je vloží do části kódu.
- NUjednotka: NUnit je široce používaný rámec pro testování jednotek pro všechny jazyky .net. Jedná se o open source nástroj, který umožňuje ruční psaní skriptů. Podporuje testy řízené daty, které mohou běžet paralelně.
- JMockit: JMockit je open source nástroj pro testování jednotek. Jedná se o nástroj pro pokrytí kódu s metrikami čar a cest. Umožňuje zesměšňovat API se syntaxí nahrávání a ověřování. Tento nástroj nabízí pokrytí linky, pokrytí trasy a pokrytí dat.
- EMMA: EMMA je open-source sada nástrojů pro analýzu a reportování zapsaného kódu Java jazyk. Emma podporuje typy pokrytí jako metoda, linie, základní blok. To je Java-based, takže je bez závislostí na externích knihovnách a má přístup ke zdrojovému kódu.
- PHPUnit: PHPUnit je nástroj pro testování jednotek pro programátory PHP. Vyžaduje malé části kódu, které se nazývají jednotky, a testuje každou z nich samostatně. Nástroj také umožňuje vývojářům používat předdefinované metody tvrzení, aby potvrdili, že se systém chová určitým způsobem.
To jsou jen některé z dostupných nástrojů pro testování jednotek. Existuje mnohem více, zejména pro jazyky C si Java, ale určitě najdete nástroj pro testování jednotek pro vaše programovací potřeby bez ohledu na jazyk, který používáte.
Testem řízený vývoj (TDD) a testování jednotek
Unit testování v TDD zahrnuje rozsáhlé použití testovacích rámců. K vytvoření automatizovaných jednotkových testů se používá rámec jednotkových testů. Unit testing frameworks nejsou pro TDD jedinečné, ale jsou pro něj nezbytné. Níže se podíváme na to, co TDD přináší do světa testování jednotek:
- Testy se píší před kód
- Hodně se spolehněte na testovací rámce
- Všechny třídy v aplikacích jsou testovány
- Je umožněna rychlá a snadná integrace
Mýtus o testování jednotek
Mýtus: Vyžaduje to čas a já mám vždy příliš času
Můj kód je pevný jako skála! Nepotřebuji unit testy.
Mýty jsou ze své podstaty falešnými předpoklady. Tyto předpoklady vedou k začarovanému kruhu následovně:
Pravdou je, že testování jednotek zvyšuje rychlost vývoje.
Programátoři si myslí, že Integration Testing zachytí všechny chyby a neprovedou test jednotky. Jakmile jsou jednotky integrovány, velmi jednoduché chyby, které bylo možné velmi snadno najít a opravit v testované jednotce, trvá velmi dlouho, než se vystopují a opraví.
Výhoda testování jednotky
- Vývojáři, kteří chtějí zjistit, jaké funkce jednotka poskytuje a jak ji používat, se mohou podívat na testy jednotek, aby získali základní porozumění jednotkovému API.
- Testování jednotek umožňuje programátorovi refaktorovat kód později a ujistit se, že modul stále funguje správně (tj Regresní testování). Postup spočívá v sepsání testovacích případů pro všechny funkce a metody tak, aby kdykoli změna způsobí chybu, mohla být rychle identifikována a opravena.
- Vzhledem k modulární povaze testování jednotek můžeme testovat části projektu, aniž bychom čekali na dokončení ostatních.
Nevýhody testování jednotek
- Nelze očekávat, že testování jednotek zachytí každou chybu v programu. Ani v těch nejtriviálnějších programech není možné vyhodnotit všechny cesty provádění
- Testování jednotek se ze své podstaty zaměřuje na jednotku kódu. Proto nemůže zachytit chyby integrace nebo rozsáhlé chyby na úrovni systému.
Doporučuje se používat jednotkové testování ve spojení s jinými testovacími aktivitami.
Doporučené postupy testování jednotek
- Případy Unit Test by měly být nezávislé. V případě jakýchkoli vylepšení nebo změn požadavků by neměly být ovlivněny případy testování jednotek.
- Testujte vždy pouze jeden kód.
- Dodržujte jasné a konzistentní konvence pojmenování pro vaše testy jednotek
- V případě změny kódu v libovolném modulu se ujistěte, že existuje odpovídající jednotka Testovací případ pro modul a modul projde testy před změnou implementace
- Chyby zjištěné během testování jednotky musí být opraveny před pokračováním v další fázi v SDLC
- Přijměte přístup „test jako váš kód“. Čím více kódu napíšete bez testování, tím více cest musíte zkontrolovat na chyby.
Shrnutí
- UNIT TESTING je definován jako typ testování softwaru, kde jsou testovány jednotlivé jednotky nebo komponenty softwaru.
- Jak vidíte, do testování jednotek může být zapojeno hodně. Může být složitý nebo spíše jednoduchý v závislosti na testované aplikaci a použitých testovacích strategiích, nástrojích a filozofiích. Testování jednotek je na určité úrovni vždy nutné. To je jistota.