Funkční vs nefunkční testování
Hodnocení uživatelů: / 0
NejhoršíNejlepší 

To jestli je testování funkční neb nefunkční nemá vypovídat o tom, zda testy jako takové fungují. To je snad jasné. Jde o rozdělení testování vzhledem k tomu, jaké zákaznické požadavky a vlastnosti aplikace mají testy pokrývat.

Funkční testy se zaměřují na tzv. funkční požadavky. Tedy požadavky zaměřené na funkčnost aplikace. Zákazník nebo zadavatel vývoje aplikace v nich v podstatě definuje způsob, jakým bude aplikace používána. Proto jsou také tyto požadavky obvykle zpracovány do tzv. způsobů užití (UseCase). Testy z těchto způsobů užití následně vycházejí testy, které se snaží prověřit správné chování aplikace ve všech situacích, které s definovanými způsoby užití mohou souviset.

Funkční testy mohou být prováděny buď manuálně nebo s pomocí nástrojů. U manuálních funkčních testů jsou všechny situace a všechny stavy aplikace vytvářeny přímo samotným testerem a to často stejným způsobem, jakým bude danou aplikaci používat koncový uživatel. Za určitých podmínek (které si probereme v samostatném článku) je možné využívat pro vytváření, spouštění a/nebo vyhodnocování funkčních testů různé nástroje. V tu chvíli mluvíme o větší či menší míře automatizace testování.

Nefunkční testy se zaměřují na všechny ostatní vlastnosti aplikace. Což nám moc neřekne. Takže jinak řečeno - aplikace kromě toho, že funguje musí splňovat i jiné požadavky. Pokud si načrtneme ty nejobvyklejší - aplikace by měla být spolehlivá, stabilní, bezpečná. O toho se také odvíjí, jaké testy jsou mezi nefunkční zahrnuty.

Performance test, tedy test výkonové, má za úkol ověřit, že aplikace je schopná spolehlivě pracovat i při nárůstu zátěže například ve smyslu zvýšeného počtu současně pracujících uživatelů nebo současně zpracovávaných úloh a pod. Existují různé nástroje, které dokáží simulovat právě tuto zátěž a to i s ohledem na její reálné rozložení v rámci celého dne (tedy například nízký provoz v noci, opakované vrcholy v průběhu dne atd.). Při takto narůstající zátěži by se neměly výrazněji prodlužovat odezvy aplikace na vstupní dotazy. Performance testy se opět dělají jako ověření splnění požadavků definovaných zákazníkem. Ten v rámci svých požadavků na aplikaci uvádí také odhad předpokládané zátěže a její nárůst do budoucna. Kromě toho je vhodné jasně určit, jaká doba odezvy je ještě přijatelná. Performance testy pak zkoumají chování aplikace především v mezních hodnotách a po jejich překročení. 

V ruku v ruce s performance testy jsou Load testy, označované jako zátěžové testy. reálně se obvykle tyto testy dělají současně a velice často se mezi nimi ani nerozlišuje. Úkolem load testů je ověřit stabilitu aplikace při narůstání objemu dat, které jsou v jejím rámci ukládány a zpracovávány. Kromě nárůstu současně pracujících uživatelů může právě existující datová zátěž zpomalit práci aplikace například při vyhledání a podobně. 

Dá se říct že oba výše zmíněné typy testů mají za úkol především optimalizaci aplikace pro takový výkon a takovou zátěž, která je pro danou aplikaci očekávaná.

Prakticky stejný přístup jako v případě performance a load testů se používá u Stress testů. Ovšem jejich úkolem není optimalizace ale odhalení chyb, které by se ze své povahy mohly objevit až při velké zátěži. Njede tedy o rychlost odezvy aplikace ale o vyvolání takové kritické situace, která by mohla vést k pádu aplikace.

Je asi zřejmé, že tyto tři typy testů se nejčastěji spojují do jednoho.

Jiným typem nefunkčních testů jsou Security testy, tedy testy bezpečnosti aplikace. V dnešní době tyto testy získávají na důležitosti a firmy konečně investovat i tímto směrem. Nejčastějším typem security testů jsou testy Penetrační. Ty spočívají v provádění simulovaných útoků na aplikaci s cílem odhalit možná slabá místa. tyto útoky jsou prováděny buď ručně nebo za pomoci různých nástrojů

Existuje celá řada dalších nefunkčních testů, ale myslím, že jako ilustrace to zatím stačí. Bylo by asi vhodné říct, že mezi funkčními a nefunkčními testy zeje z pohledu požadavků kladených na testery velká propast. Není mnoho testerů, kteří by na rozumné úrovni ovládali obě tyto oblasti. Tedy jsou-li vůbec nějací. Já osobně nikoho takového neznám. Nefunkční testy vyžadují zcela jiné znalostní zázemí a jiný přístup. Jde často o podrobné znalosti hardwaru, síťové infrastruktury, ale i znalosti z oblasti návrhu databázových schémat a znalosti programování.

 

Nejbližší události


Testování software, Powered by Joomla!; Joomla templates by SG web hosting