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

Roman Hesteric  /  27. 05. 2008, 09:24

Séria článkov o open-source nástroji na automatizované testovanie webových aplikácií - Canoo WebTest. Štruktúra a syntax. WebTest rekordér.

Canoo WebTest - štruktúra testovacieho projektu

 

Štruktúra demo projektu vytvorená utilitou WebTest-u z predchádzajúcej kapitoly zobrazená vo vývojovom prostredí Eclipse vyzerá nasledovne.

Prvý testovací projekt v Eclipse - perspektíva XML:

wt_projekt

 

  • definitions – obsahuje definičné xml súbory, ktoré tvoria jednotlivé testovacie scenáre
  • dtd – obsahuje "document type definition" súbor pre jednotlivé testy v adresári tests
  • includes – obsahuje include súbory, spoločné pre všetky testy [include súbory vo formátoch XML, alebo TXT]
  • results – obsahuje výsledky spustených testov [XML, HTML]. Súhrnný report je uložený v “index.html
  • tests – obsahuje spúšťacie ANT-skripty, ktoré využívajú xml-definície z adresára definitions

 

Canoo WebTest - syntax

 

Projekt WebTest obsahuje viac ako 100 testovacích krokov, ktoré sú dokonale popísané v dokumentácii, ktorú môžete stiahnuť počas inštalácie, alebo je k dispozícii vždy aktuálna verzia – manuál na webe

 

Testovacie kroky sú rozdelené do niekoľkých kategórií:

  • Všeobecné

        <invoke ... />
        <clickLink... />
        ...

  • Formuláre

        <setInputField... />
        <setRadioButton... />
        <setCheckBox... />
        <clickButton... />
        ...

  • Verifikácia

        <verifyTitle... />
        <verifyXPath... />
        <verifyInputField .. />
        ...

  • PDF

        <pdfDecryptDocument... />
        <pdfVerifyField... />
        <pdfVerifyText... />
        ...

  • Excel

        <excelFindRow... />
        <excelVerifyCellValue... />
        ...

  • Email

        <emailSetConfig... />
        <emailStoreMessageId... />
        ...


Testovacie kroky WebTest-u majú jednoduchú syntax – ktorá je natoľko intuitívna, že je ľahko zrozumiteľná aj začínajúcim používateľom. V prípade potreby je používateľom k dispozícii archív mailing-listu na adrese: [http://lists.canoo.com/mailman/listinfo/webtest/]

 

Canoo WebTest - WebTest rekordér

 

WebTest rekordér je „nahrávač“ testovacích krokov do syntaxe WebTestu, alebo jazyka Groovy. Je k dispozícii ako plug-in pre prehliadač Mozilla FireFox. Vykonané kroky sa použijú v xml testovacích skriptoch, alebo testovacom kóde Groovy a slúžia na vytvorenie prvej kostry budúceho testovacieho scenára. Počas nahrávania je možné zachytenie nasledujúcich testovacích krokov:

  • invoke
  • clickLink
  • clickButton
  • setInputField
  • setSelectField
  • setCheckbox
  • setRadioButton
  • setFileField

a verifikačných krokov:

  • verifyTitle
  • verifyText
  • verifySelectField
  • verifyInputField
  • verifyTextArea

 

a využitie XPath Explorera:

  • Vynikajúci vizuálny nástroj na zápis XPath, ktorý je možné priamo použiť v testovacích xml skriptoch. Jeho výhodou je vizualizácia a plná kompatibilita s XPath evaluátorom použitým počas behu testu – Jaxen/Xalan.

Používanie WebTest rekordéra by som však obmedzil len na vytvorenie prvej kostry celého testovacieho scenára. Ako výborný začiatok. Každý takto získaný skript je ešte potrebné upraviť, aby sa dal v budúcnosti ľahko udržiavať spolu so zmenami testovanej aplikácie.

Ukážka nahrávania testovacej sekvencie pomocou FireFox pluginu-WebTest Rekordér:

webtest recorder

 

Ukážka využitia XPath Explorera vo WebTest Recorder-i (XPath na vyhľadanie buttona Submit na hlavnej stránke Canoo Webtestu – XPath: //input[@type='submit'] ):

web test recorder

 

Canoo WebTest - ako písať udržiavateľné testy [teória]

 

V tejto časti sa zameriam na použitie WebTest v praxi. Spomeniem zopár doporučení autorov WebTest-u a popíšem rôzne spôsoby nasadenia testov v praxi. Keďže každá aplikácia je „živý organizmus“, aj testovacie skripty na testovanie jej funkčnosti musia „žiť“ spolu s ňou. Pred začiatkom vytvárania testovacej infraštruktúry je dobré pamätať na nasledujúce doporučenia, ktoré vám umožnia ľahšiu údržbu testovacích skriptov v budúcnosti.

 

1. Špecifikujte, čo očakávate od testu, zadajte ciele testu.

 

Predstavte si obsah nasledujúcej webovej stránky:

Angebot

 

a nasledujúce testovacie kroky: 

<clickLink label=”Einkaufskorb” />
<clickLink label=”Ajax” />
<clickLink xpath=”//*[text() = 'Top Angebot']//a” />
<clickLink xpath=”//*[text() = '6.60']/following-sibling::a]” />

 

Každý z uvedených krokov WebTestu klikne na link, ale každý z týchto krokov testuje inú funkcionalitu. Linka „Einkaufskorb“ – zobrazí obsah nákupného košíka, „Ajax“ zase zobrazí obrázok tovaru, atď. Je preto potrebné pred začiatkom určiť, čo očakávame od jednotlivých kliknutí testovacieho robota na linky. Od kliknutia na „Nákupný košík“ budeme zrejme očakávať zobrazenie položiek, ktoré doň boli vložené predtým, od kliknutia na „Ajax“ zasa očakávame zobrazenie obrázka tovaru vo novom okne okne browsera.

 

2. Rozlišujte medzi normálnym a chybovým správaním sa aplikácie

Pri webových aplikáciách je niekedy zložité povedať, čo je normálne a čo chybové správanie. Ak napríklad portál pre výpočet ceny poistného nesprávne vypočíta poistné pre dieťa do 5 rokov - je to chyba, rovnako, ako situácia, keď pod náporom veľa požiadaviek generovaných počas stres-testov „spadne“ celý server. Je však potrebné rozlišovať medzi oboma popísanými prípadmi. V mojej praxi sa osvedčil spôsob, kedy sme do každej, nie chybovej stránky vkladali neviditeľný text, napríklad „page OK“ a po každom submite na server sme kontrolovali v jeho odpovedi existenciu tohto textu [verifyText]. Samozrejme, chybové stránky tento text neobsahovali. Odhalenie chybového správania aplikácie bolo preto jednoduchšie.

 

3. Pri písaní testovacích skriptov používajte pravidlá softvérového inžinierstva

Pri písanie testovacích skriptov využívajte tzv. štruktúrované testy, v ktorých používajte:

  • property súbory
  • XML-entity
  • Ant-makrá
  • Vlastné prispôsobenie testov
  • Jazyk Groovy na prispôsobenie a tvorbu vlastných,špecifických testovacích krokov

Na tvorbu aj v budúcnosti udržateľných testov je nevyhnutné rozumné použitie jazyka XPath. Ako príklad dobrého a zlého spôsobu použitia XPath môžu slúžiť nasledujúce príklady:

 

správne: //*[@id='total']
nesprávne: /html/body/div[2]/table[3]/tbody/tr[6]/td[4]


Absolútna XPath [/html/body/div[2]/table[3]/tbody/tr[6]/td[4]] môže totiž pri budúcich zmenách dizajnu stránok spôsobovať úplnú nefunkčnosť testov a bude zákonite viesť k nutnosti úprav testovacích skriptov.

 

Nabudúce:

  • Canoo WebTest - ako písať udržiavateľné testy [prax]
  • Canoo WebTest - smoke-test, stres-test

 

Neprehliadnite: