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 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"
… klikneme na kartičku „Details”
… klikneme na “Copy to file”
Úvodná obrazovka wizard na export certifikátu
Vyberieme “Base-64_encoded_X.509(.CER)”
… a certifikát uložíme na disk [napr: c:b64encx509_cpp.cer]
… export certifikátu bol úspešný
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 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:
potom môžeme použiť PropertyTable, napríklad:
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:
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:
Nabudúce:
Copyright © 2002 - 2013 inet.sk, s. r. o. | Všetky práva vyhradené | Neprešlo jazykovou úpravou | ISSN 1336-1899
Využívame kvalitný webhosting za rozumnú cenu od Inet.sk