čtvrtek 26. července 2012

Arsenál manuálního testera


V současné době existuje velké množství lehce dostupných nástrojů pro testování softwaru. Automatizované, ať už funkční nebo zátěžové testy, by dokonce bez nástrojů nemohly existovat. Bezpečnostní testování se rovněž neobejde bez různých nástrojů, které se nacházejí v arsenálu bezpečnostních testerů. Jaké nástroje a pomůcky ale může používat tester ke zvýšení efektivity své práce při manuálních testech? Co vše může pomoci ke zrychlení a zkvalitnění těchto testů?

Smyslem testování je získávat informace o kvalitě produktu. Jaké informace si přeje zákazník či manager získat ohledně kvality výrobku, to určuje cíle testování souhrnně označované jako testovací mise. Mise tedy určuje, co je cílem konkrétního cyklu testování. Dejme tomu, že manager hledá odpovědi na otázku, zda je produkt připraven na nasazení. Konkrétně ho zajímá, jaká je chybovost jednotlivých modulů aplikace, nakolik jsou splněny požadavky a jestli produkt obsahuje nějaké závažné nedostatky.

V této situaci bude seznam cílů obsahovat následující body:
-  odhadnout chybovost jednotlivých modulů aplikace
-  zkontrolovat soulad aplikace s požadavky
-  pokud existují, tak najít závažné chyby bránící nasazení aplikace

Jasná definice cílů umožní testerovi zaměřit se na ně a zpracovávat úkoly s efektivnějším vynaložením úsilí a času. Jinými slovy nenechat se rozptylovat činnostmi, které rovněž mohou být součástí testování, ale cílům současné mise nepřispívají vůbec nebo méně než kdyby tester vynaložil svůj čas jinak. Znalost a porozumění cílům testování je tedy nástrojem k lepšímu řízení vlastních zdrojů.

Protože při tvorbě efektivních testů a hledání chyb je pro co nejlepší výsledek důležitý důvtip a kreativita, je vhodné mít po ruce vždy alespoň jednu pomůcku pro jejich povzbuzení. Mezi jednu z nejspolehlivějších pomůcek patří seznam už dříve použitých zajímavých nápadů nebo testů, které v minulosti často odhalily nějakou chybu. Tento seznam se označuje jako heuristika a je součástí know-how testera.  Heuristika slouží jako studnice nápadů a inspirace, která může pomoci objevit velké množství chyb ve velmi krátkém čase. Tester si přečte jeden dva nápady, a i když třeba na současný produkt nejdou přímo aplikovat, inspirují ho k tomu, podívat se na software z pohledu, který ho předtím nenapadl. Tester začne přemýšlet způsobem: „Hmmm, co by se asi stalo, kdyby došlo k tomuto.“

U manuálního testování tester často narazí na chybu, u které je obtížné najít podmínky, za kterých je chyba vyvolána. Pro usnadnění hledání těchto podmínek se používají různá zařízení pro sledování činnosti uživatele. Ty mohou mít podobu softwaru zaznamenávajícího stisky kláves a kliknutí uživatele spolu se snímáním obrazovky nebo třeba webové kamery namířené na monitor a klávesnici. Ve složitějších případech, kdy výpis logu testerovi z nějakého důvodu nevyhovuje nebo není dostupný, je užitečné se vyzbrojit nějakým nástrojem pro sledování interních stavů aplikace, například vypisujícím zásobník volání.

Nástroje sledující akce uživatele využívají testeři nejen k odhalení podmínek vyvolání chyb, ale taky ke sledování chování budoucích uživatelů například při testech uživatelské přívětivosti.

Při testování toho, jak se aplikace vyrovnává s chybovými situacemi, kdy narazí na neočekávaný problém, často ruční zadání problematických vstupů nestačí. V tomto případě je potřeba použít nějaký nástroj k vyvolání chybových stavů uvnitř aplikace. Takovýto simulátor chyb je velmi užitečný například při testování více vláknových aplikací. Tam může docházet k problémům typu race condition, kdy dojde ke špatnému zpracování sdílených dat. Problémy, které nejsou vyvolány přímo zadáním neočekávaných dat, může tester bez vhodného simulátoru chyb jen těžko vyvolat. Je třeba tedy použít pro konkrétní aplikaci vytvořený nástroj nebo provést některou z technik odborného pročítání kódu.

V některých situacích má tester za úkol provádět i takzvané testování bílé skříňky, kdy je mu k dispozici ke zkoumání i zdrojový kód aplikace. V takovém případě se mu na internetu otevírá celá škála volně dostupných nástrojů založených na inspekci kódu. Tyto nástroje jsou určené spíše vývojovému týmu pro hledání obvyklých chyb. Pokud by se však tester ocitnul v situaci, kdy by bylo efektivní tyto nástroje využít, byla by škoda na ně zapomenout a buď chyby neodhalit, nebo je odhalit jiným časově náročnějším způsobem. Tyto nástroje dokáží odhalit špatně inicializované proměnné, nedostatečné ošetření vstupů, ale některé z nich se specializují například na bezproblémový chod webových stránek na různých prohlížečích.

Zejména v případě nedostatku času pro otestování aplikace mohou být užitečné nástroje simulující více méně náhodné klikání myší a vyplňování textu. Tester může takový nástroj spouštět při odchodu z práce a druhý den ráno jen kontrolovat, jaké chyby nástroj objevil a reportovat je. Takové testování zkušeného testera nemůže nahradit, ale může být užitečnou a levnou pomůckou, která je volně dostupná na internetu často i se zdrojovými soubory.

Arsenál nástrojů a pomůcek testera v boji, jehož cílem je nalezení chyb a určení kvality produktu, může být rozsáhlý. Výše zmíněný přehled je jen drobnou ukázkou, že nástroje patří i do manuálního testování. Je škoda, pokud si tester svoji výzbroj nerozšiřuje a netříbí. Jestliže existuje způsob, jak okamžitě zvýšit produktivitu testera, je to právě použitím nějaké vhodné pomůcky. Tyto nástroje nemají známé konkrétní zástupce, jako tomu bývá u automatizovaných testů, kdy většina lidí v oboru názvy konkrétních předních nástrojů zná. Testeři sice u některých skupin nástrojů vědí, že takové pomůcky existují, ale v situacích, kdy je možné využít předností těchto nástrojů, volí často zbytečně časově náročnější a nevýhodnější metody. To je jeden z důvodů, proč jsou někteří manuální testeři a testovací týmy výrazně efektivnější než jiné.

Tester by se tedy rozhodně neměl bát věnovat čas na seznamování se s novými nástroji a přístupy, které mohou zvýšit jeho výkonnost. Snaha o zlepšování svého vzdělání, pokud není na úkor aktuálních pracovních výkonů, je určitě ve všech softwarových firmách vítaná.

Vybavení testera/ test analytika:
-          Připravený seznam testovacích nápadů (univerzální nebo dle typu softwaru)
-          Nástroj na nahrávání obrazovky do formy videa (Můžete si stáhnout nějaký freeware nebo je dobré použít webkameru)
-          Nástroj pro náhodné testování dané aplikace (lze jednoduše vytvořit, máte-li seznam objektů, nebo pokud je umíte identifikovat)
-          Validátory HTML, XML, ...
-          Nástroj pro automatickou inspekci kódu
-          A další nástroje dle zaměření testera a typu dané aplikace  

Vybavení test manažera:
-          Šablona test plánu
-          Sada metrik pro různé příležitosti (např. pro měření kvality softwaru, účinnosti testovacích technik nebo testování, postupu oproti plánu)
-          Šablona reportu pro projekt manažera
-          Sada motivačních historek a myšlenek pro zapamatování si toho, co je skutečným cílem a pro hledání nových způsobů zlepšování kvality, pokud nemáte takové prostředky, jaké byste potřebovali.
-          Seznam otevřených otázek a úkolů
-          Nástěnka s aktuálními informacemi o termínech, plánu a výsledcích
  

2 komentáře:

  1. Dekuji, za clanek, urcite by me zajimaly i konkretni nastroje, ktere pouzivate.

    OdpovědětVymazat
  2. V současnosti jako test manažer využívám zejména šablony různých dokumentů, které jsem si sama připravila. Samozřejmě nepočítám komerční a další nástroje, které jsou dané zaměstnavatelem.
    Pokud se výjimečně dostanu k free testům, vezmu si k ruce hlavně seznam testovacích nápadů a selenium. (Obojí pouze pokud budu testovat minimálně půl dne.)

    Na konci článku jsem se snažila zmínit nástroje, které můžete využít, i s odkazy na příslušné stránky. Neodkázala jsem pouze na notoricky známé validátory a na nástroj na inspekci kódu. Nástroje na inspekci se totiž liší dle programovacího jazyka a rychle se tento trh liší a vyvíjí. Obávám se, že za poslední roky, kdy se věnuji test management a quality assurance jsem ztratila přehled o tom, jaké nástroje jsou v této oblasti nejlepší.
    Samozřejmě mezi nástroji jsem zmínila i šablony , seznamy a automatické náhodné testy, které si každý může připravit sám. V budoucnu plánuji zde přidat ty, které jsem vytvořila v rámci výuky a výzkumu na VŠE.

    OdpovědětVymazat

Oblíbené příspěvky