Kapitola 8. Interakční jednotkové testování

Obsah

Úvod
Jak jednotkové interakční testování funguje?
Proč používáme mock objekty?
Pozdržení volby infrastruktury
Napodobování stavu systému
Napodobování složitých podmínek
Zobrazení chyb
Znovupoužitelná tvrzení
Lepší styl a strukturovanost kódu
Objevování rozhraní
Omezení mock objektů
Návrhové vzory pro psaní interakčních jednotkových testů
jMock
Architektura
Funkční příklad
Dobré rady
Napodobujme pouze objekty, které můžeme nahradit
Nepoužívejme "getter" metody
Buďme přesní v definování akcí, které mohou nastat
Pišme minimální testy
Nenapodobujme objekty, které nekomunikují s okolím
Napodobujme pouze nejbližší sousedy
Vyvarujme se používání mnoha mock objektů
Vytvářejme objekty nepřímo
Závěr

Agilní metody vývoje software jsou hitem současnosti. Mezi nejznámější z nich patří Extrémní programování (XP) a Programování řízené testy (TDD). Mezi základní praktiky těchto metod vývoje software patří tzv. jednotkové testování. Jednotkovým testováním ověřujeme funkcionalitu specifických částí zdrojového kódu.

Předpokladem kvalitního a úspěšného jednotkového testu je zaměření se na testování jedné jediné věci izolovaně od zbylých částí zdrojového kódu. Musíme přesně vědět, co testujeme a kde mohou vzniknout potenciální problémy. Tohoto předpokladu je však těžké dosáhnout u většiny netriviálního kódu. Je těžké vyvarovat se psaní komplexních, nekompletních a těžko udržovatelných jednotkových testů, které mají navíc tu výhodu, že dokumentují zdrojový kód.

V následujícím textu se seznámíme s jedním druhem jednotkového testování, který má vliv jak na kvalitu jednotkového testu, tak na testovaný kód samotný. Budeme mluvit o interakčním jednotkovém testování.

Úvod

Základním předpokladem kvalitního jednotkového testu je maximální se soustředění na testovaný kód a omezení jeho závislostí na ostatním doménovém kódu. Od interakčních jednotkových testů dále vyžadujeme, abychom byli o vzniklých chybách informováni v okamžiku jejich vzniku a ne až na konci testu samotného, jak je běžné u klasických jednotkových testů. Tyto nedostatečnosti běžného jednotkového testování se snaží řešit technika zvaná mockování objektů, jež je základem interakčního jednotkového testování.

V této technice nahrazujeme doménový kód jeho modelovými implementacemi, tzv. mock objekty. Tyto objekty propojujeme s testovaným kódem, a tak tento kód testujeme tzv. zevnitř (Endo-Testing). Nahrazením doménového kódu mock objekty je zaručena izolovanost testu vůči ostatnímu kódu. Mužeme říci, že mock objekty jsou modelovými implementacemi doménových tříd v minimálním stavu nutném pro testování objektu.

Používáním techniky mockování objektů zajišťujeme nejen izolovanost testovaného kódu a testování objektů na jemnější úrovni granularity než je obvyklé, ale také podporujeme lepší strukturovanost produkčního kódu i testů.

Interakční jednotkové testování předem definuje strukturu jednotkového testu, což dává vývojovému týmu společný jazyk, který zaručuje, že testy budou psány čitelně, srozumitelně a jednotným způsobem.

Ptáte se, jaký je rozdíl mezi mock objektem a pahýlem (stub) používaném při klasickém jednotkovém testování? Rozdíl mezi mock objektem a pahýlem je dán jejich použitím. Pokud používáme mock objekty, mluvíme o interakčním jednotkovém testovaní. Klasické jednotkové testování pomocí pahýlů je stavové jednotkové testování. My se nadále budeme zabývat pouze interakčním testováním pomocí techniky mockování objektů.

V následujícím textu si řekneme, proč používáme mock objekty při psaní jednotkových testů. Ukážeme si výhody používání mock objektů v jednotkových testech a jaký mají vliv na architekturu celé aplikace.

Komentáře

Téma neobsahuje žádné komentáře.

Vložit komentář

Můžete používat značkovací jazyk Texy!


Jméno:
E-mail:
Url:
Komentář:
1 + 2 =
 
MoroSystems, s.r.o.