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

152

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.

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

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ú.

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

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

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

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ť.