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

Roman Hesteric
Roman Hesterichttp://www.priklady.eu
Pracuje ako QA Architekt v Swiss Re. Predtým CTO pre Java a .Net aplikácie. Autorizovaný spolupracovník na projekte Canoo Webtest. Držiteľ certifikátov MCTS a MCPD pre SharePoint server. V IT pracuje 25 rokov, od starého dobrého Turbo Pascalu od Borlandu, cez Javu, až po C#. Administrátor matematického portálu www.priklady.eu

Senior Python Developer/ka

Úspešný americký startup, ktorý umožňuje vývojárom vytvárať aplikácie a rozhrania API bez akýchkoľvek časových, priestorových a cloudových architektúr hľadá...

C#/.NET & React Fullstack Developer/ka

FullStack Developer/ka | Vývoj nového produktu | Security Pracoval/a by si na TPP s platom 2400 - 2800 EUR/brutto mesačne...

Data Visualization Senior Analyst

Pre medzinárodnú IT spoločnosť hľadáme Senior Data Visualization Analyst. Pracujú na veľkých projektoch pre top 100 svetových spoločností. Ide o...

Splunk Data Engineer

Chcel by si dlhodobú spoluprácu, dobré pracovné podmienky, seriózny prístup? Medzinárodná IT spoločnosť hľadá Splunk Data Engineera. Pracujú na veľkých...

Senior Java Developer

Úspešný americký startup, ktorý umožňuje vývojárom vytvárať aplikácie a rozhrania API bez akýchkoľvek časových, priestorových a cloudových architektúr hľadá...

Backend/Node.js Developer / REMOTE

Pre mladý startup vyvíjajúci softvér, ktorý prispieva hráčom k lepšiemu zážitku z hrania, hľadáme Backend/Node.js Developera. Založili ho dvaja...

Julia Developer / REMOTE

Projekt pre nadšencov Julia a machine learning. Pre spoločnosť, ktorá používa matematické metódy a metódy AI / ML na...

Máte vo firemných stretnutiach chaos? Česká firma našla riešenie, teraz s aplikáciou dobývajú svet

Vyvíjajú ju v Českej republike, pracujú na nej aj hendikepovaní kolegovia a používajú ju firmy v rôznych krajinách sveta....

Ondrej Kubovič – Digitálna bezpečnosť a riziká na internete

Tentokrát sme sa porozprávali s Ondrejom Kubovičom, špecialistom v spoločnosti ESET na populárnu tému digitálnej bezpečnosti. Ondrej nám uviedol...

Slovenskí tvorcovia hier dosiahli v roku 2020 rekordný obrat 72 miliónov EUR, zamestnávali 870 ľudí

Slovenský herný priemysel nezastavila ani pandémia, v roku 2020 opäť výrazne rástol. Podľa štatistík Slovak Game Developers Association prekonal...

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