Blog Canoo Webtest: Testy nikdy nebežia dostatočne rýchlo

Canoo Webtest: Testy nikdy nebežia dostatočne rýchlo

To platí najmä pre funkčné testy webových aplikácií. Canoo Webtest je  veľmi rýchly v porovnaní s inými funkčnými testovacími nástrojmi. Ak však  množstvá testov rastú, alebo ak chceme rýchle získať výsledky testov, často nadobudneme pocit, že testy sú jednoducho pomalé. Nová – zatiaľ experimentálna vlastnosť Canoo WebTest-u umožňuje špecifikovať počet podprocesov [workers-threads], ktoré by mali byť použité počas testov, čo môže priniesť obrovské zvýšenie rýchlosti bez zmeny pôvodných testov.

Stačí teda nastaviť počet podprocesov [workers-threads] a namiesto jednoduchého volania:

ant

zavolať ANT s parametrami:

ant -Dwt.parallel.nbWorkers=20

Ako teda naozaj funguje paralelné testovanie?

Princíp je nasledovný: zaradiť test do fronty, skôr než sa vykoná.  Myšlienka je veľmi jednoduchá a jej implementácia v podstate tiež. Dá sa to jednoducho vysvetliť pomocou niekoľkých riadkov kódu. WebTest je postavený na ANT-e, to znamená, že jeho task  namapovaný ako  <webtest> obsahuje kód:

class WebTestTask extends Task
{
  void execute()
  {
     // vykonaj test
  }
}

Na paralelný beh testov  sa zmenilo mapovanie tasku <webtest>  a nová trieda bude vyzerať nasledovne:

class WebTestTaskParallel extends WebTestTask
{
	void execute()
	{
		workQueue.add  this
	}

	void executeReally()
	{
		super.execute()
	}
}

Po tejto úprave je teda možné paralelné spustenie viacerých testov.  Keď sa potom zavolá metóda execute(), inštancia pridá samú seba do fronty a riadenie sa predá Ant-u, kde sa pokračuje normálne ďalej. Množina „workers-threadov“ neustále sleduje frontu a volaním executeReally() z WebTestTask spúšťa skutočný test. To je v podstate princípom paralelizmu, zvyšok kódu je o synchronizácii medzi jednotlivými threadmi.

Poďme si teraz ukázať ako to funguje v praxi.  Ako príklad použijeme demo príklad z časti môjho blogu.  Nasledujúcim príkazom sa vytvoril ukážkový testovací projekt [myWebTestProject], ktorý na účely paralelného behu viacerých testov troška upravím.

webtest -f “cesta k webtest home adresáru“\ webtest.xml  wt.createProject

Úprava sa týka počtu testov, ktoré sa majú vykonať, čiže súbor „allTests.xml“ z adresára /tests upravíme nasledovne.

<?xml version="1.0"?>

<project default="test">
	<target name="test" description="runs all the tests">
		<ant antfile="googleWebTest.xml"/>
		<ant antfile="googleWebTestSteps.xml"/>
		<ant antfile="googleWebTest.xml"/>
		<ant antfile="webTestConference.xml"/>
		<ant antfile="googleWebTestSteps.xml"/>
		<ant antfile="googleWebTest.xml"/>
		<ant antfile="googleWebTestSteps.xml"/>
		<ant antfile="googleWebTestSteps.xml"/>
		<ant antfile="googleWebTestSteps.xml"/>				
	</target>
</project>

Pred spustením takto upraveného testu je ešte potrebné v prípade, že používate proxy server, jeho správne nastavenie. V súbore build.xml  stačí odkomentovať pripravené proxy nastavenia a zadať tie vaše.

Build.xml:

Activate this if you are behind a proxy and want to test a server outside your local network

See http://ant.apache.org/manual/OptionalTasks/setproxy.html

<setproxy proxyhost="myProxy" proxyport="X.XX.XXX.XXX" />

Po spustení príkazom „ant“ bežia testy postupne. WebTest monitor zobrazuje priebeh testov počas behu celej sady – bez paralelizmu. Ako vidíte, testy sa spúšťajú postupne, každý ďalší test sa spustí až po ukončení toho predchádzajúceho.

WebTest_Monitor1

Teraz skúsme tú istú sadu testov odštartovať príkazom

„ant -Dwt.parallel.nbWorkers=20“

WebTest monitor zobrazuje priebeh testov počas behu celej sady – s vyuzitím  paralelizmu. Ako vidíte, testy sa spústili všetky naraz a navžajom sa nečakajú.

WebTest_Monitor2

V konzole, ktorá zobrazuje výpisy testovacieho klienta môžeme sledovať ako jednotlivé thready vyberajú testy čakajúce vo fronte.

WebTest_Console

Kedy používať paralelný beh viacerých testov?

Prvotným zámerom bolo urýchlenie behu testov. Táto nová vlastnosť, dostupná od verzie Canoo WebTest R1700, dokáže zrýchliť beh testov až o 50-75%.

Jej použitie je však limitované filozofiou testov. Ak napríklad používate smoke testy, ktoré už svojou filozofiou neumožňujú paralelný beh, pretože každý nasledujúci test predpokladá správne a bezchybné ukončenie toho predchádzajúceho, paralelný beh nebude možný. Napriek tomu však ostáva veľa ďalších možností, kde sa paralelné nasadenie použiť dá. V princípe sa dajú použiť všade tam, kde sú jednotlivé testy nezávislé a na svoj beh nepotrebujú žiadne predchádzajúce kroky.


Dobrý článok? Chceš dostávať ďalšie?

Už viac ako 6 200 ITečkárov dostáva správy e-mailom. Nemusíš sa báť, nie každé ráno. Len občasne.



Súhlasím so spracovaním mojich osobných údajov. ( Viac informácií. )

Tvoj email neposkytneme 3tím stranám. Posielame naňho len informácie z robime.it. Kedykoľvek sa môžeš odhlásiť.

JavaScript Developer / REMOTE

Pozícia: JavaScript Developer Typ zmluvy: Kontrakt Lokalita: 100% Homeoffice Plat:  150-250 EUR/MDIT spoločnosť so zameraním na Oracle technológie s viac ako 25...

Solution Architect

Pozícia: Solution Architect Typ Zmluvy: TPP Plat: od 3000+ EUR/Brutto Lokalita: BratislavaMedzinárodná spoločnosť, ktorá poskytuje poradenské a IT služby pre firmy hľadá...

Senior SAP XI/PI/PO Konzultant

Základné informáciePozícia: Senior SAP XI/PI/PO Konzultant Pracovný pomer:  TPP, Živnosť Miesto práce: 95% Homeoffice - 5% on-site - Bratislava/nemecko Plat: od 2500...

Junior/Senior SAP ABAP Developer

Základné informáciePozícia: Junior/Senior SAP ABAP Developer/Konzultant Pracovný pomer:  TPP, Kontrakt Miesto práce: 95% Homeoffice - 5% On-site - Bratislava/Nemecko Plat: Junior od 1.000...

Senior SAP Basis Consultant / 95% Home-Office – 5% on-site

Základné informáciePozícia: SAP Basis Consultant Pracovný pomer:  TPP, Živnosť Miesto práce: 95% Home-Office - 5% on-site Btaislava/Nemecko Plat: od 2.800+ EUR/Brutto/mesačne Jazyk: Nemecký...

DBA Admin / 95% Home-Office – 5% on-site

Základné informáciePozícia: DBA Admin Pracovný pomer:  TPP, Živnosť Miesto práce: 95% Home-Office - 5% on-site - Bratislava/Nemecko Plat: od 2400 - 4000+...

Java Developer / Energerické odvetie / Košice

PRÁCA Pozícia: Java developer Pracovný pomer: TPP, Kontrakt Miesto práce: Košice, on-site Plat: Medior od 1.500 EUR Senior od 2.200 EUR FIRMA Odvetvie: Energetika Tím: 3-5 ľudí Firma: 70-80...

Drupal vydáva najnovšiu verziu CMS, na ktorom už teraz bežia weby top organizácií z celého sveta

Drupal 9 prináša nástroje pre marketérov, dizajnérov a developerov na vytvorenie úžasných...

VSE unIT konferencia k vám tento rok prichádza v digitálnej podobe a bezplatne.

VSE unIT konferencia prináša svetových a miestnych expertov na inovácie a IT,...

Čítaj ďalej:

Dobrý článok? Chceš dostávať ďalšie?

Už viac ako 6 200 ITečkárov dostáva správy e-mailom. Nemusíš sa báť, nie každé ráno. Len občasne.

Súhlasím so spracovaním mojich osobných údajov. ( Viac informácií. )

Tvoj email neposkytneme 3tím stranám. Posielame naňho len informácie z robime.it. Kedykoľvek sa môžeš odhlásiť.