Skočiť na obsah Skočiť na menu

Inet.sk - internetový denník

internetový denník

Automatické testovanie webových aplikácií - quo vadis, časť III.

Čo sa zmenilo vo svete nástrojov na automatické testovanie webových aplikácií od tohto leta. Novinky a vylepšenia.


Neštandardné testy

To, čo nejde otestovať štandardne, otestujeme naprogramovaním vlastnej testovacej logiky. Na špecifické prípady, ktoré sa nedajú jednoznačne otestovať pomocou štandardných prostriedkov canoo WebTest, je určený špeciálny testovací krok - scriptStep.

 

ScriptStep poskytuje možnosť napísať vlastný skriptovací kód, ktorý otestuje správnosť údajov na webe v niektorom zo skriptovacích jazykov. Tento jazyk však musí byť podporovaný "BSF (Bean Scripting Framework)". Napríklad JavaScript, Python [buď s použitím Jython alebo JPython)] ,Tcl ([pomocou Jacl)] NetRexx, XSLT štýly, Java [pomocou BeanShell] ,JRuby, Groovy, ObjectScript a JudoScript.


BSF (Bean Scripting Framework) je sada Java tried, ktoré poskytujú podporu v rámci skriptovacieho jazyka a prístup k Java objektom a metódam zo skriptovacích jazykov. Toto je dosiahnuté poskytnutím API, ktoré umožňuje volať skriptovací jazyk zvnútra Javy.

Canoo WebTest obsahuje všetky potrebné súbory na podporu Groovy a JavaScript-u. Pre ostatné jazyky je potrebné stiahnutie príslušných súborov. Spravidla sa však jedná len o jeden jar súbor, ktorý je potrebné skopírovať do  webtest-classpath.

Ale dosť teórie, poďme si ukázať na čo je to všetko dobré. Na použite vlastného scriptStep-u si predstavme imaginárnu stránku, na ktorej je objednávka s položkami nákupu.

 

 

Teraz si predstavme test, ktorého úlohou je otestovanie správnosti zobrazených údajov. Konkrétne či v treťom stĺpci "Množstvo" je skutočne súčin prvého stĺpca "Množstvo" a stĺpca "Jednotková cena". Ďalej, či sú súčty v riadku "Total" naozaj správnymi súčtami jednotlivých položiek.

 

Na takýto test použijeme scriptStep - ktorého kód napíšeme v skriptovacom jazyku javascript:

 

<webtest name="scriptStep: testuje spravnost dat zobrazenych na objednavke">

    <steps>

        <invoke description="url stranky s objednavkou" url="test-1.html"/>

        <scriptStep description="spocitaj mnozstva a ceny" language="javascript">

            calc_qty = 0;

            calc_price = 0;

            items = document.getHtmlElementsByAttribute('tr', 'class', 'lineitem').iterator();

            while (items.hasNext()) {

                table_cells = items.next().getHtmlElementsByTagName('td');

                qty = parseInt(table_cells.get(1).asText());

                unit_price = parseInt(table_cells.get(2).asText());

                total_line_price = parseInt(table_cells.get(3).asText());

                calc_qty += qty; calc_price += total_line_price;

                if (qty * unit_price != total_line_price) {

                    step.setWebtestProperty('calc_error_found', 'true');

                }

            }

            step.setWebtestProperty('calc_qty', calc_qty);

            step.setWebtestProperty('calc_price', calc_price);

        </scriptStep>

        <not>

            <verifyProperty name="calc_error_found" text="true"/>

        </not>

        <verifyXPath description="kontrola celkoveho mnozstva"

            xpath="//tr[@class='total']/td[2]" text="#{calc_qty}"/>

        <verifyXPath description="kontrola celkovej ceny"     

            xpath="//tr[@class='total']/td[4]" text="#{calc_price}"/>

    </steps>

</webtest>

 

Teraz ale skúsime niečo dosť špeciálne. Predstavme si stránku, na ktorej je číslo. Test má zistiť, či je toto číslo z fibonacciho postupnosti.

 

Na takýto test použijeme scriptStep - ktorého kód napíšeme v skriptovacom jazyku ruby:

 

<target name="testFibonacciRuby">

  <webtest name="scriptStepManualTests: ruby test cisla">

    <steps>

      <invoke description="url stranky" url="test-2.html"/>

      <storeXPath description="extrahuj cislo na testovanie"

        xpath="//span[@id='fibonacci']/text()"

        property="number"/>

      <scriptStep description="skontroluj, ci je cislo z fibonacciho postupnosti" language="ruby">

          <![CDATA[

            def isFib(n)

              a, b = 0, 1

              a, b = b, a + b while b < n

              return n == 0 || b == n

            end

            $bsf.lookupBean("step").setWebtestProperty("found", "true") if isFib(#{number})

          ]]>

      </scriptStep>

      <verifyProperty name="found" text="true" />

    </steps>

  </webtest>

</target>

 

Myslím, že zavedením scriptStep-u sa ohromne zvýšila sila WebTestu. Každopádne je teraz umožnené tvorcom testovacích scenárov, aby mohli otestovať naozaj nevšedné "features", ktoré sa môžu objavovať na testovaných weboch.

 

Je Vaša doména voľná?

Platená reklama

Textová reklama

Ako začať podnikať na internete? Nechajte si poradiť. Aký má byť obsah kvalitne www stránky? Tvorba www stránok, Tvorba webu, Redakčný systém - CMS, Prieskumy o nakupovaní na internete, Pôžičky
Kompletné informácie o Kika Banská Bystrica | Čo takto navštíviť Viedeň? | Zaujímavé informácie priamo od zdroja

Newsletter


Copyright © 2002 - 2012 Inet.sk, s. r. o.Všetky práva vyhradenéNeprešlo jazykovou úpravouISSN 1336-1899

Využívame kvalitný webhosting za rozumnú cenu od Webhosting Inet.sk


Bilancia skrývky Fotokniha Fotografie Osobnosti.sk