Jak automatizovat regresní testy?

9. 10. 2013

Sdílet

 Autor: © kentoh - Fotolia.com
Zákazníci požadují, aby dodavatelé aplikací reagovali pružně dodávkou nových funkcionalit, a současně garantovali zavedené funkcionality, které jsou již v produkci.

(PR článek)

Ve většině firem roste nutnost poskytovat služby prostřednictvím webových aplikací. Roste funkční komplexnost webových aplikací a díky chytrým mobilům i množství platforem a počet webových prohlížečů, z nichž může uživatel přistupovat. Potřeba pružné reakce na vývoj platforem i trhů, na kterých služby působí, vede k častým úpravám webových aplikací, často i několikrát do roka. Změny provádí týmy, jejichž složení se mění spolu s různou kulturou vývoje i testování a také rozdílným a měnícím se kontextem znalostí.

Garance funkcionalit webových aplikací vede ke stále složitějšímu managementu procesů a nákladů na testing, což zhoršuje ekonomiku vývoje aplikací. Jednou z cest je implementace metodik Test Process Improvementu (TPI) a snaha nastavit interní procesy vývoje aplikací tak, aby výstupy z nich odpovídaly pokud možno co nejvyšší očekávané kvalitě při udržitelné efektivitě. TPI to vše pomáhá řešit, vyjma problému fluktuace znalostí při změně týmu.

Vývojářské společnosti poskytují své služby různým zákazníkům v různých odvětvích a v různých typech projektů, na mnoha platformách. Zákazníci požadují, aby dodavatelé aplikací reagovali pružně dodávkou nových funkcionalit, a současně garantovali zavedené funkcionality, které jsou již v produkci. U velkých korporátních odběratelů webových aplikací se přidává ještě problém více dodavatelů, kteří se na vývoji aplikací (korporátních portálů) podílejí. Je vůbec možné v takové situaci funkcionalitu aplikací nějakým způsobem garantovat?

Dobrým výchozím bodem je garance stability funkcionalit z pohledu koncového uživatele, zákazníka, na front-endu, bez ohledu na to, jaké změny se odehrávají v back-endu. Ideální je otestovat webovou aplikaci po každé změně z pohledu koncového zákazníka a požadavků byznysu, tedy provádět opakovaně regresní testy. To je ovšem velmi pracné. Ne všechny společnosti si mohou dovolit udržovat stálé týmy s dobrou znalostí pro všechny provozované aplikace. Nedostatek znalých testerů vede často k výrazné agilitě, tedy „prostě to nějak otestujte“. Výsledkem může být, že kvalita otestování je projekt od projektu (ale i build od buildu) různá a těžko odhadnutelná.

Pro řešení často opakovaných regresních testů se nabízí ověřovat alespoň klíčové části webových aplikací pomocí nástrojů automatizovaného testování. Automatické testování webových aplikací je v principu postaveno na simulaci akcí klávesnice a myši. Existuje několik nástrojů, které dokážou zaznamenat a posléze reprodukovat sled akcí a tím nahradit manuální práci uživatele. Problematikou automatizace testování se v Ness Technologies zabýváme už několik let. Nejčastěji využívanými nástroji jsou komerční HP Quick Test Professional (QTP) a free nástroje z rodiny Selenium.

Vývoj a údržba sad testovacích případů je během na dlouhou trať. Vhodné je začít s testy funkcí, které se mohou opakovat s vysokou frekvencí a v krátkém čase mohou signalizovat problém. Ideálem je otestovat klíčové testovací případy ihned po buildu aplikace. Vhodným případem rychlého testu je vystavení objednávky a faktury nebo smlouvy, registrace nového zákazníka nebo uživatele, tedy testy, které zpravidla projdou celým systémem a ověří základní workflow aplikace.

Dále se budeme zabývat nástrojem Selenium, neboť patří k těm neplaceným a je vhodný i pro malé týmy nebo jednotlivce. Selenium má klientskou a serverovou část. Klient Selenium IDE je plugin do prohlížeče Firefox. Slouží k “nahrávání” kroků do jednotlivých test cases. Nahrané testy lze z IDE i manuálně spouštět. IDE je nástroj založený na bázi jazyka JavaScript. Nahrané kroky lze uložit do prostého HTML souboru jako HTML tabulku. Testy lze tedy psát i bez rozšíření Firefoxu přímo.

Testy lze ukládat (generovat) do různých jazyků (C#, Java, Python...), kompilovat a spouštět přímo z vývojových prostředí nebo z buildovacích nástrojů v dávkovém režimu (Jenkins aj.). V dávkovém režimu je využívána serverová část Selenia (RC nebo WebDriver). Server Selenia lze spustit jednoduše parametrem v modu jednotlivých prohlížečů, jako je Internet Explorer, Firefox, Chrome, aniž by se musel upravovat kód skriptů. Podobně bude koncem roku 2013 posílena podpora mobilních platforem. Selenium poskytuje rozsáhlou sadu příkazů na kontrolu jednotlivých prvků stránek, jejich atributů. K dispozici je kontextová nápověda k jednotlivým příkazům, řada pluginů, např. pro flow control.

Test cases je možno seskupovat do testovacích sad (Test suites). Pokud se využijí možnosti JavaScriptu, například předávání dat pomocí proměnných, lze skripty vhodně modularizovat a využít je opakovaně v různých sadách. Například ve workflow schvalování smluv, kde je množství větví podle typu zboží a typu smluv a zákazníků, je společným skriptem založení smlouvy. Skript si na konci běhu zjistí na stránce číslo smlouvy a uloží do proměnné. Jiný skript si pomocí proměnné najde smlouvu a provede akci specifickou pro danou větev workflow, kterou je třeba kontrolovat. Další skript provede tisk, jiný odeslání ke schválení. Testovací sady pro jednotlivé větve jsou sestaveny v tomto příkladu ze tří obecných skriptů (založení, tisk, odeslání) a jednoho specifického, který kontroluje stránku specifickou pro dané zboží a typ klienta. Takto se Selenium adaptuje na dynamické stránky.

Výsledky testů se ukládají do určeného adresáře. Výsledek je generován pro jednotlivé běhy skriptu. Pokud je součástí jména souboru s výsledky i datum a čas, je možné skripty pouštět v dávce opakovaně. Výsledky se ukládají v HTML, takže jsou snadno čitelné i pro nevývojáře, test analytiky a management projektu. Neúspěšné kroky jsou v tabulce podbarveny červeně, úspěšné zeleně.

Příkladem vhodného užití Selenia v Nessu je projekt webové aplikace pro leasingovou společnost zavedené bankovní skupiny. Selenium bylo nasazeno na projektu webové aplikace, která:

  • Je dlouhodobě vyvíjena a udržován, vývoj testů se vyplatí
  • Počet testerů kolísá podle intenzity vývoje od několika členů až do nuly
  • Aplikace má složité workflow, jehož počet větví bude narůstat
  • Build aplikace probíhá i několikrát denně
  • Projektový vedoucí, šéf vývoje i hlavní analytička automatizované testy podporují

Aplikace je dodávána podle požadavků zákazníka. Střídají se období intenzívního vývoje s obdobím údržby, kdy na projektu zůstává jádro vývoje a není přítomen žádný tester. Skripty uložené v HTML jsou spouštěny pomocí Selenia RC dávkově. Výsledky jsou k dispozici vedoucímu vývoje, projektovému manažerovi a hlavní analytičce. Analytička si může jednotlivé skripty upravovat, například přidat kontrolu existence nového prvku na stránce, aniž by potřebovala znalost skriptovacích jazyků. V příštím běhu serverové části Selenia je již nová kontrola provedena.

Selenium jistě není nástroj vhodný pro všechny situace. Určitě se hodí pro ad-hoc použití každým testerem, který musí při testech vyplňovat dlouhé formuláře, nebo často opakovat rutinní činnosti. Ruční vyplnění dlouhé smlouvy trvá i 20 až 30 minut. Selenium ji dokáže vyplnit do minuty. A to už stojí přinejmenším za prozkoumání možností Selenia IDE…J

Managementu testingu webových aplikací nabízí Selenium nástroj, který core testerům pomůže snížit pracnost testování. Nezanedbatelný je též efekt zachování znalostí v případě fluktuace testerů. Managementu přináší rychlejší po změně signál o problémech uvnitř systému. Krátký regresní test trvá hodiny, automatický test jen desítky minut.

Jan Regent, Ness Technologies

bitcoin_skoleni

Chcete se dozvědět více o testování a dalších IT službách? Potřebujete snížit náklady na firemní informační technologie? Využijte služeb společnosti Ness Technologies!