Výukový program pro testování jednotek: Co je, typy, nástroje a PŘÍKLAD testu

Obsah:

Anonim

Co je testování jednotek?

UNIT TESTING je typ testování softwaru, při kterém se testují jednotlivé jednotky nebo komponenty 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 jednotlivá funkce, metoda, postup, modul nebo objekt.

V SDLC, STLC, V Model, Unit testování je první úroveň testování provedeného před integračním testováním. Testování jednotek je technika testování WhiteBox, kterou obvykle provádí vývojář. I když v praktickém světě kvůli časové tísni nebo neochotě vývojářů testovat, provádějí inženýři QA také testování jednotek.

V tomto výukovém programu se naučíte

  • Proč testování jednotek?
  • Jak provést testování jednotky
  • Techniky testování jednotek
  • Nástroje pro testování jednotek
  • Test Driven Development (TDD) a testování jednotek
  • Mýtus o testování jednotek
  • Výhoda testování jednotky
  • Nevýhody testování jednotky
  • Osvědčené postupy pro testování jednotek

Proč testování jednotek?

Testování jednotek je důležité, protože vývojáři softwaru se někdy snaží šetřit čas minimálním testováním jednotek, což je mýtus, protože nevhodné testování jednotek vede k vysoké ceně opravy defektů během testování systému, testování integrace a dokonce i testování beta verze po vytvoření aplikace. Pokud se v počátečním vývoji provede správné testování jednotky, ušetří to nakonec čas a peníze.

Zde jsou hlavní důvody pro provedení testování jednotek v softwarovém inženýrství:

Úrovně testování jednotek
  1. Testy jednotek pomáhají opravit chyby na začátku vývojového cyklu a šetří náklady.
  2. Pomáhá vývojářům porozumět základně testovacího kódu a umožňuje jim rychle provádět změny
  3. Dobré jednotkové testy slouží jako projektová dokumentace
  4. Testy jednotek pomáhají s opětovným použitím kódu. Migrujte svůj kód i své testy do nového projektu. Upravte kód, dokud se testy znovu nespustí.

Jak provést testování jednotky

Aby bylo možné provést Unit Uniting , vývojáři píší část kódu pro testování konkrétní funkce v softwarové aplikaci. Vývojáři také mohou tuto funkci izolovat, aby testovali přísněji, což odhalí zbytečné závislosti mezi testovanou funkcí a jinými jednotkami, aby bylo možné závislosti eliminovat. Vývojáři obecně používají rámec UnitTest k vývoji automatizovaných testovacích případů pro testování jednotek.

Testování jednotek je dvou typů

  • Manuál
  • Automatizovaný

Testování jednotek je běžně automatizované, ale stále se může provádět ručně. Softwarové inženýrství neupřednostňuje jeden před druhým, ale upřednostňuje se automatizace. Ruční přístup k testování jednotky může využívat podrobný instruktážní dokument.

Podle automatizovaného přístupu-

  • Vývojář zapíše do aplikace část kódu, jen aby otestoval funkci. Později by komentovali a nakonec odebrali testovací kód, když je aplikace nasazena.
  • Vývojář by také mohl funkci izolovat, aby ji důkladněji otestoval. Toto je důkladnější postup testování jednotky, 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í. Izolování 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 lze eliminovat.
  • Kodér obecně používá UnitTest Framework k vývoji automatizovaných testovacích případů. Pomocí automatizačního rámce vývojář kóduje kritéria do testu k ověření správnosti kódu. Během provádění testovacích případů rozhraní zaznamenává selhání testovacích případů. Mnoho rámců také automaticky označí a nahlásí souhrnně tyto neúspěšné testovací případy. V závislosti na závažnosti selhání může rámec zastavit následné testování.
  • Pracovní postup testování jednotky je 1) Vytváření testovacích případů 2) Kontrola / přepracování 3) Základní 4) Provádění testovacích případů.

Techniky testování jednotek

Tyto jednotky Zkušební techniky jsou rozděleny především do tří částí, které jsou Black box testování, který zahrnuje testování uživatelského rozhraní spolu se vstupem a výstupem, skříňka testování White, který zahrnuje testování funkční chování softwarové aplikace a testování šedé krabice, která se používá k provedení testu sady, zkušební metody, testovací případy a provádění analýzy rizik.

Níže jsou uvedeny techniky pokrytí kódu používané při testování jednotky:

  • Pokrytí prohlášení
  • Pokrytí rozhodnutí
  • Pokrytí pobočky
  • Pokrytí stavu
  • Konečný stav pokrytí stroje

Další informace naleznete na adrese https://www.guru99.com/code-coverage.html

Příklad testu jednotky: Mock Objects

Testování jednotek závisí na falešných objektech, které se vytvářejí k testování částí kódu, které ještě nejsou součástí úplné aplikace. Mock objekty vyplnit pro 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 účty účtovány ve formě falešných objektů vytvořených výhradně pro účely testování jednotek provedeného v této části kódu.

Nástroje pro testování jednotek

Existuje několik automatizovaných software pro testování jednotek, které pomáhají s testováním jednotek. Níže uvedeme několik příkladů:

  1. Junit: Junit je bezplatný testovací nástroj používaný pro programovací jazyk Java. Poskytuje tvrzení k identifikaci testovací metody. Tento nástroj nejprve testuje data a poté je vloží do kódu.
  2. NUnit: NUnit je široce používaný rámec testování jednotek používaný pro všechny jazyky .net. Jedná se o nástroj s otevřeným zdrojovým kódem, který umožňuje ruční psaní skriptů. Podporuje testy založené na datech, které mohou běžet paralelně.
  3. JMockit: JMockit je open source nástroj pro testování jednotek. Jedná se o nástroj pro pokrytí kódu s metrikami řádků a cest. Umožňuje zesměšňovat API se syntaxí nahrávání a ověřování. Tento nástroj nabízí pokrytí linií, pokrytí cest a pokrytí dat.
  4. EMMA: EMMA je open-source sada nástrojů pro analýzu a hlášení kódu napsaného v jazyce Java. Emma podporuje typy pokrytí jako metoda, linka, základní blok. Je založen na Javě, takže není závislý na externí knihovně a má přístup ke zdrojovému kódu.
  5. PHPUnit: PHPUnit je nástroj pro testování jednotek pro programátora PHP. Trvá malé části kódu, který se nazývá jednotky, a každou z nich otestujte zvlášť. Tento nástroj také umožňuje vývojářům používat předdefinované metody tvrzení k tvrzení, že se systém chová určitým způsobem.

To je jen několik dostupných nástrojů pro testování jednotek. Existuje mnohem více, zejména pro jazyky C a Javu, ale určitě najdete nástroj pro testování jednotek pro vaše programovací potřeby bez ohledu na jazyk, který používáte.

Test Driven Development (TDD) a testování jednotek

Testování jednotek v TDD zahrnuje rozsáhlé používání testovacích rámců. Rámec jednotkových testů se používá k vytvoření automatizovaných jednotkových testů. Jednotkové testovací rámce nejsou pro TDD jedinečné, ale jsou pro něj zásadní. Níže se podíváme na to, co TDD přináší do světa testování jednotek:

  • Testy jsou psány před kódem
  • Spolehněte se na testování rámců
  • Všechny třídy v aplikacích jsou testovány
  • Je možná rychlá a snadná integrace

Mýtus o testování jednotek

Mýtus: Vyžaduje to čas a já jsem vždy nadměrně naplánovaný. Můj kód je pevný! Nepotřebuji jednotkové testy.

Mýty jsou ze své podstaty falešné domněnky. Tyto předpoklady vedou k začarovanému cyklu následovně -

Pravdou je, že testování jednotky zvyšuje rychlost vývoje.

Programátoři si myslí, že Testování integrace zachytí všechny chyby a neprovede test jednotky. Jakmile jsou jednotky integrovány, je velmi snadné vysledovat a opravit velmi jednoduché chyby, které bylo možné velmi snadno najít a opravit v testované jednotce.

Výhoda testování jednotky

  • Vývojáři, kteří se chtějí dozvědět, jaké funkce poskytuje jednotka a jak ji používat, se mohou podívat na testy jednotek, aby získali základní znalosti o API jednotky.
  • 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í). Postupem je psaní testovacích případů pro všechny funkce a metody tak, aby kdykoli změna způsobila poruchu, mohla být rychle identifikována a opravena.
  • Vzhledem k modulární povaze testování jednotky můžeme testovat části projektu, aniž bychom čekali na dokončení dalších.

Nevýhody testování jednotky

  • Nelze očekávat, že testování jednotky zachytí každou chybu v programu. Není možné vyhodnotit všechny cesty spuštění ani v těch nejtriviálních programech
  • Testování jednotky je ze své podstaty zaměřeno na jednotku kódu. Proto nemůže zachytit chyby integrace nebo široké chyby na úrovni systému.

Doporučuje se používat testování jednotky ve spojení s dalšími testovacími aktivitami.

Osvědčené postupy pro testování jednotek

  • Jednotkové testovací případy 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 testů jednotek.
  • Testujte pouze jeden kód najednou.
  • Při testování jednotek postupujte podle jasných a konzistentních konvencí pojmenování
  • V případě změny kódu v kterémkoli modulu se ujistěte, že pro modul existuje odpovídající testovací případ jednotky a modul před změnou implementace projde testy
  • Chyby zjištěné během testování jednotky musí být opraveny před pokračováním do další fáze v SDLC
  • Osvojte si přístup „otestujte jako svůj kód“. Čím více kódu napíšete bez testování, tím více cest budete muset zkontrolovat, zda neobsahují chyby.

souhrn

  • TESTOVÁNÍ JEDNOTEK je definováno jako typ testování softwaru, při kterém se testují jednotlivé jednotky nebo komponenty softwaru.
  • Jak vidíte, testování jednotek může být hodně zapojeno. Může to 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í jednotky je vždy nutné na určité úrovni. To je jistota.