Základy automatizace testování
Hodnocení uživatelů: / 0
NejhoršíNejlepší 

{jcomments on}Automatizace testování je momentálně velké téma u celé řady firem, které testování software řeší. Jenže co to vlastně automatizace je, jaké jsou její výhody a jaká jsou úskalí? Co je možné automatizovat a co se automatizovat vyplatí?

Automatizace je skutečně aktuálně oblastí, ke které se obrací zájem mnoha managerů. Jde především o to, že automatizace testování představuje potencionálně možnost úspory zdrojů, tedy především rozpočtů projektů. Já bych tu dnes také rád tuto oblast otevřel. Stále mám totiž pocit, že přístup firem k automatizace je mnohdy "zvláštní".

Co to vlastně automatizace je. Já jsem velkým zastáncem různých definic, proto se tu pokusím nějak stručně shrnout, co se pod pojmem automatizace testování rozumí. Za automatizované testování softwaru se považuje takové, kdy je část testovacího procesu, nebo i celý tento proces, prováděn bez přímého působení člověka a to pomocí specializovaného softwaru. A teď tedy jednodušeji. Existuje celá řada programů, jejichž úkolem je samostatně provádět některou z činností, které jsou součástí testování. Nejznámější jsou programy, které dokáží nahradit fyzické klikání testerů do testované aplikace. Ale existují i programy, které automatizují například instalaci a konfiguraci testované aplikace, další jsou schopné porovnávat výsledky opakovaných testů mezi sebou a hlásit případné rozdíly, existují i nástroje pro generování testovacích případů z analýzy atd. Jinak řečeno vhodnou skladnou nástrojů je možné automatizovat téměř celý proces testování. Otázkou ale je kdy a co automatizovat.

Kdy automatizovat testování 

Na tuto otázku neexistuje žádná jednoduchá a už vůbec ne jednoznačná odpověď. Určitě existuje jedno kritérium, které se používá nejen při plánech na automatizaci testů. Musí se to vyplatit! Tato Šalamounská odpověď ovšem nic neřeší. Kdy se totiž automatizace vyplatí? Pokud pomineme nutnou ekonomickou analýzu projektu, můžeme se soustředit čistě na to, kdy je testování vhodné na automatizaci z hlediska technického a procesního.

Dá se říci, že testování má smysl automatizovat tehdy, kdy se dostatečné množství testů v neměnné (k tomu se ještě dostaneme) podobě opakuje dostatečně často. Na to, jaké množství testů je dostatečné a jaké je dostatečný počet opakování, si ale musí každý project manager odpovědět sám. Svou roli zde hraje například počet testerů potřebných na manuální provedení testů, rozsáhlost těchto testů, složitost aplikace, ale i náklady na pořízení a správu nástroje automatizovaného testování nebo možnost přenesení výsledků automatizace i na jiné projekty atd.

Není jednoduché jasně určit, kdy je vhodné automatizaci provádět. Můžeme si ale alespoň poněkud blíže definovat podmínky, za kterých má smysl o automatizaci uvažovat. To, že musí jít o často opakované testy, jsme si tu už řekli. Důležité je ale i to, že jde o testy nad neměnnou částí aplikace. Automatizovaný nástroj neumí to, co dokáže "lidský" tester, totiž pružně a rychle reagovat na změny. Každá změna v aplikaci může znamenat nutnost přepracování testovacích skriptů nebo změnu konfigurace nástroje. Proto je vhodné automatizovat testy té části aplikace, nad kterou již proběhly běžné manuální testy. Jinak řečeno, automatizace je velice vhodná u Regresních testů, které mají ověřit, že nedošlo k zásahu (například instalací nového modulu, nebo přidáním nové funkčnosti) do běhu těch částí aplikace, které neměly být těmito změnami dotčené. Stejně tak je vhodné automatizovat tzv. Komparační testy, které ověřují, že funkce například dvou instalací stejné aplikace na různých prostředí je stejná. Automatizovat se vyplatí i testy, které ověřují změny na úrovni změny dat v aplikaci (tedy ne změny funkčností). Například u vícejazyčných verzí aplikace nebo třeba při změně sazby DPH a podobně.

Automatizace má velký smysl u nefunkčních testů. Zde se dá říci, že většina těchto testů není bez použití automatizovaných nástrojů ani možná. Například testy chování aplikace při současné práci většího počtu uživatelů jsou bez příslušného nástroje jen obtížně realizovatelné (ale neříkám, že se podobné manuální testy nedělají) a rozhodně mají větší vypovídací hodnotu. Analogicky u testování reakce na velkou zátěž daty. 

Oblastí, která je vhodná pro automatizaci jsou také Smoke testy, které mají ověřit, že testovaná aplikace je správně nainstalovaná a nakonfigurvaná před spuštěním samotných testů. V rámci těchto testů se obvykle provádí jen základní průchod aplikací, který je navíc stále stejný a proto jej lze automatizovat.

Obecně se dá říci, že automatizovat je vhodné takové testy, které jsou založené na datech. Tedy jde o testy, u nichž je průběh stále stejný, mění se pouze vstupní a výstupní data. Takovým testům se říká testy řízené daty a většina nástrojů pro automatizované testování je právě pro takové testy určena.

Pokud nelze říci jasně, kdy automatizovat, dá se alespoň nějak vymezit, na co si při automatizaci dát pozor? Určitě dá a já se tady o to pokusím.

Na co se soustředit při automatizaci testování 

Je aplikace vhodná k automatizaci?

To není snadné určit, ale vycházejme z toho, co jsem tu už napsal. Aplikace vhodná pro testování automatizovaným nástrojem by měla být "stabilní". Tím nemyslím stabilní ve smyslu jejího běhu, ale ve smyslu kódu. Pokud je automatizace zvolena jako hlavní způsob testování (tedy bez manuálních testů) je nutné, aby se od začátku do konce vývoje (tedy už od analýzy) pracovalo se stejnými názvy a strukturou objektů a jejich metod. Což mě přivádí k další podstatné vlastnosti testované aplikace. Pro automatizaci je vhodné, aby testovaná aplikace byla objektová. Přestože některé nástroje dokáží simulovat klikání myši na základě souřadnic na obrazovce, pro reálné testování není toto zcela přijatelné.

U testované aplikace je možné říct, že čím "obyčejnější" je, tím je snadnější její automatizace. Tím chci říct, že čím obvyklejší řešení problémů vývojáři zvolí (myšleno například s pohledu ovládání, vkládání vstupních hodnot nebo formátu výstupu) tím je automatizace přístupnější. Pokud se vývojáři nechají unést, vytvářejí "extravagantní" způsoby ovládání, nebo si například vytvářejí vlastní nestandardní objekty v kódu, pak tím automatizaci minimálně stěžují. 

Jaký je vhodný nástroj pro automatizaci?

Opět není možné paušalizovat. Můžeme si ale říci, že volba nástroje je většinou klíčovou částí snahy firem automatizovat testování. Je nutné bohužel také konstatovat, že dost často o výběru nástroje rozhodují osoby, které nemají přímý vztah k testování, ale mají velmi blízký vztah k řízení financí. Z toho mohou vznikat problémy.

Volba nástroje se musí především odvíjet od technických požadavků. Zvolený nástroj musí být samozřejmě schopen pracovat s technologií, ve které je testovaná aplikace vytvořena. Říkám samozřejmě, jenže ono to tak samozřejmé není. To souvisí s předchozím bodem. Nejde jen o technologii ale i o to, jakým způsobem je využita. Zvolený nástroj musí být schopen pracovat se všemi objekty aplikace. Je velice vhodné před samotným pořízením nástroje vyžádat si, nebo ještě lépe sám si provést, technologické testy zvoleného nástroje na konkrétním vzorku aplikace, která má být automatizována.

Rád bych tu řekl, že jakkoli se krabicová (tedy komerčně prodávaná hotová) řešení jeví jako dobrá varianta při nákupu nástroje pro automatizaci, je nutné si jejich pořízení pořádně rozmyslet. Jejich cena není obvykle malá a přestože jich výrobce tvrdí něco jiného, implementace podobného nástroje do procesu testování není zdaleka triviální záležitostí. Vyžaduje obvykle proškolení pracovníky, kteří s daným nástrojem budou pracovat, ale i tak je většinou nutná další podpora ze strany výrobce pro instalaci a konfiguraci nástroje, stejně jako následně pro jeho údržbu.

U malých projektů je vhodnější sáhnout po některém z nekomerčních řešení. Případně lze automatizaci řešit s pomocí vlastních nástrojů, které vytvoří vývojáři přímo pro testovanou aplikaci.

Jak je to s úsporou zdrojů při automatizaci?

Tento bod sem dávám schválně, protože u něj dost často snaha automatizovat testování narazí. Jak jsem řekl, právě úspora zdrojů je obvykle tím hlavním argumentem firem a jejich managementu pro zavádění automatizace. Bohužel představa některých managerů o reálné procesu testování po automatizaci je často naivní.

Musíme si jasně říci, že se zde nedá pracovat s prostými kupeckými počty. Pokud dnes testování provádí deset testerů, pak nasazením automatizovaného nástroje se neušetří jednou pro vždy právě deset testerů. Jde o to, že proces testování v rámci automatizace vypadá trochu jinak než u manuálních testů. Přesněji řečeno vypadá stejně, ale časová náročnost stejně jako náročnost na zdroje je jiná.

Příprava nástroje pro testy obvykle vyžaduje výrazně více času než příprava manuálních testů. Navíc ji musí provádět tester, který má nejen zkušenosti s test analýzou, ale také s automatizací a má znalost práce s příslušným nástrojem. Z toho vyplývají vyšší náklady na tohoto testera a na přípravu testu celkově. Také spouštění testů nemůže, na rozdíl od některých manuálních, provádět tester s juniorskými zkušenostmi. Opět musí jít o testera se zkušenostmi s automatizací i s nástrojem. 

Důležité je si uvědomit, že automatizace není "jednou pro vždy". Výhodou automatizace samozřejmě je, že jednou vytvořené testy je možné využívat opakovaně. Právě tato část přináší největší úspory. Ve chvíli, kdy jsou testy již připravené, odladěné a byly již spuštěny, pak jejich opakovaný běh je hlavním přínosem automatizace testování. Je ale nutné si uvědomit, že jakákoli změna v testované aplikaci nese sebou nutnost přizpůsobit také skripty nebo nastavení nástroje. A to znamená opět zásah vysoce kvalifikovaného pracovníka.

 

Automatizace má určitě smysl a je dobře, že se tímto směrem testování ubírá. Je ale nutné, aby plánování automatizace bylo skutečně dobré a zohlednilo všechny možné aspekty tohoto kroku. Je důležité aby se této přípravné fáze zúčastnili také zástupci testování, protože právě oni by měli být schopni posoudit přínos, který může automatizace pro testování mít.

 

 

Nejbližší události


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