Čo sa zmenilo vo svete nástrojov na automatické testovanie webových aplikácií od tohto leta. Novinky a vylepšenia.
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>
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.
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