Testovanie webových aplikácií použitím Canoo WebTest, časť VI.

Roman Hesteric  /  10. 06. 2008, 10:03

Séria článkov o open-source nástroji na automatizované testovanie webových aplikácií - Canoo WebTest. Testovanie cez SSL. Data-drven testovanie.

Na konci V. časti som sľúbil, že v ďalšej časti si povieme niečo o testovaní webových aplikácií cez SSL [Secure Socket Layer - https://]. Tak teda začnime.

Canoo WebTest - testovanie aplikácií cez SSL

 

Canoo Webtest je Javovská aplikácia, ktorá "neverí" žiadnym developerským alebo testovacím certifikátom, ktoré sa používajú počas vývoja aplikácie. Takýto certifikát sa nazýva "self-signed" alebo tiež certifikát nepodpísaný certifikačnou agentúrou. Z tohoto dôvodu je preto potrebné na účely testovania aplikácií cez SSL nejakým spôsobom presvedčiť Javu, a teda aj Canoo WebTest klienta, aby dôveroval testovaciemu certifikátu a dovolil testovanie.

Začneme krokmi na vytvorenie “keystore” - úložiska, do ktorého potom importujeme testovací certifikát skopírovaný z testovaného servera. Potom stačí do riadku, ktorý spúšťa webtest, pridať cestu ku "keystore" s importovaným certifikátom, ktorému už bude testovací klient dôverovať.

 

V internetovom browseri [ukážka je z IE 7.0 ] klikneme na "View certificates"
SSL1

… klikneme na kartičku „Details”

SSL2

… klikneme na “Copy to file”

SSL3

Úvodná obrazovka wizard na export certifikátu

SSL4

Vyberieme “Base-64_encoded_X.509(.CER)”

SSL5


… a certifikát uložíme na disk [napr: c:b64encx509_cpp.cer]

SSL6

… export certifikátu bol úspešný

SSL7

 

Teraz vytvoríme “keystore”, použijeme nasledujúce príkazy:

 

/java_home/bin/keytool -genkey –alias roman -keyalg RSA -keysize 1024 –keypass ****** -keystore my_keystore.jks -storepass ******

 

… a importujeme uložený certifikát:

 

/java_home/bin/keytool -import -alias cpp -keystore my_keystore.jks -file "C:b64encx509_cpp.cer"

 

Potom do volania webtest.bat pridáme cestu ku keystoru do ktorého sme importovali certifikát zo servera.

 

start webtest.bat -f build.xml -Djavax.net.ssl.trustStore=webtest/certs/my_keystore.jks

 

Príklad prístupu k aplikácii cez SSL.

konfigurácia Canoo WebTest klienta:

<config
  host="${host}"
  port="${config.port}"
  protocol="${config.protocol}"

  basepath="${config.basepath}"       
  summary="${summary}"
  saveresponse="${saveresponse}"
  haltonfailure="${haltonfailure}"
  haltonerror="${haltonerror}" 
/>

 

build.xml :

.
.
<property name="haltonfailure" value="false"/>
<property name="haltonerror" value="false"/>
<property name="saveresponse" value="true"/>
<property name="summary" value="true"/>
<property name="config.port" value="443"/>
<property name="config.protocol" value="https"/>
.
.

 

Na koniec kapitoly ešte jeden tip, ktorým sa dá úplne "obísť" SSL certifikát [poškodený/už neplatný].

Ak pred prvý test-step napíšeme:

<groovy>step.context.webClient.useInsecureSSL=true</groovy>

čím nastavíme, aby Canoo WebTest klient použil aj "nebezpečný" certifikát, test pobeží napriek invalidnému alebo poškodenému certifikátu.

 

Canoo WebTest - data driven test

 

Canoo Webtest implementácia Data-driven testu vychádza z ANT-tasku  „PropertyTable“, ktorý volá nested-vnorené elementy toľko krát, koľko riadkov obsahuje tabuľka so vstupnými dátami.


Predstavme si tabuľku, ktorá obsahuje dáta:

a b c
11 12 13
21 22 23

... a ANT-taks s echom:

<echo message="${a} ${b} ${c}"/>


potom môžeme použiť PropertyTable, napríklad:

<propertytable ...>
     <echo message="${a} ${b} ${c}"/>
</propertytable>


a výstupom teda bude:

 

echo
 11 12 13
echo
 21 22 23

 

Tabuľka z nášho príkladu môže byť v rôznych formátoch – okrem iného aj vo formáte MS-Excel, ktorý je podľa môjho názoru ideálny ako „interface“ medzi testovacím skriptom a externými dátami. Tieto totiž môžu pripravovať analytici a testeri, ktorí nemusia poznať testovacie skripty používajúce tieto dáta. Testovací skript vo forme formálneho zápisu testovacích krokov za svojho behu číta dáta z excellovského súboru a používa ich vo forme premenných v testovacom skripte.

Predstavme si teda nasledujúcu tabuľku:

datadriven-source

a testovací skript ktorý postupne zaregistruje autorov Canoo Webtestu na imaginárnom registračnom webe:

 

 <dataDriven tableContainer="simple.xls">

  <webtest  name="Register ${FirstName} ${LastName}">

   <echo message="registering ${FirstName} ${LastName}"/>

    … goto register page …

    <setInputField forLabel="First name" value="${FirstName}"/>

    <setInputField forLabel="Last name" value="${LastName}"/>

    <clickButton label="Register"/>

    <verifyText text="${FirstName} ${LastName} has been registered"/>

  </webtest>

</dataDriven >

 

Výstup imaginárneho data-driven testu:

[echo] registering Denis N. Antonioli
[echo] registering Dierk König
[echo] registering Marc Guillemot
[echo] registering Paul King
[echo] registering Tomi Schütz

 

Veľkou výhodou data driven testov je okrem formátu vstupných dát, ktorý bude iste akceptovateľný širokým okruhom testerov a analytikov, aj jeho možnosť simulácie reálneho dátového prostredia, v ktorom bude aplikácia nasadená. Táto výhoda sa dá veľmi dobre využiť pri záťažových – stres testoch. Ak budete skúmať chovanie aplikácie počas stres testov, ktoré paralelne posielajú na server množstvá dotazov, určite čiastočne overíte chovanie aplikácie v extrémnych situáciách. Nie je to však vždy reálnym obrazom chovania aplikácie v produkčnom prostredí. Lepšie je vyvolať reálne extrémnu situáciu kombináciou paralelne bežiacich stres testov, pričom každý z nich bude "data driven" a bude simulovať reálne zaťaženie aplikácie pomocou reálnych dát. Tento spôsob bude určite lepšie odzrkadľovať realitu prostredia ako len niekoľkotisícové paralelné cykly obsahujúce vždy rovnaké dáta.

 

Tip: nastavenie memory [závisí od RAM počítača, na ktorom beží testovací klient] pred použitím data driven testov s obsahom veľkého množstva riadkov [>10000].  /canoo_home/bin/webtest.bat

set JAVA_OPTS=-Xms256M -Xmx800M

 

ScreenCast - demo data driven testu je k dispozícii tu:

dd screen cast

 

 

Nabudúce:

  • Canoo WebTest  - testovanie webových aplikácií so stránkami obsahujúcimi javaScriptové dialógy

Neprehliadnite: