2009. október 30., péntek

WATIR

Hello Mindenki

most egy kis szoftvertechnológiai oktatás következik!
Már régóta foglalkoztat a gondolat, hogy a szoftvereket, amiket évek óta írogatunk tucatnyi kollegámmal bent az otp-ben, bizony nem nem csak "kézzel", vagyis kattintgatással gépeléssel kéne tesztelni, hanem ún. automatizált tesztelő eszközzel.

Ez annyit tesz, hogy egy erre felkészített program "szimulálja" a felhasználói interakciókat: "mozgatja" az egeret, "leüti" a billentyűket. Persze a megfelelő sorrendben a megfelelő billentyűket, és ezt egy "tesztelési forgatókönyv" (tesztelő script) vezérli. A tesztelési forgatókönyvet viszont már emberi erővel kell elkészíteni (és ez nem is olyan gyorsan meg, sajnos...)
A tesztelési forgatókönyvben tetszőleges helyre ún. "ellenőrzési pontok" helyezhetők, ahol a teszt leellenőrzni, hogy pl megjelent-e a képernyőn egy adott üzenet, aminek meg kéne, és ha nem, akkor a teszt hibát jelez.

Igazából, ha az ember belegondol, ez már egészen vad dolog, hiszen arról van szó, hogy egy program tesztel egy másik programot!
Áááááá!

De ennek megvan a maga hatalmas előnye, sőt, előnyei:
  • a "tesztforgatókönyvet" csak egyszer kell elkészíteni, aztán bárhányszor lefuttatható, és nem kell újra meg újra kézzel végigtesztelni mindent (amit persze az ember általában nem is tesz meg teljes körűen, mert lehetetlen mindent mindig letesztelni)
  • ha a szoftver egyik pontján módosítunk valamit, akkor a korábban elkészített tesztforgatókönyvek újrafuttatásával könnyen meg lehet bizonyosodni, hogy vajon elrontottunk-e valahol valamit? Ezáltal sokkal nagyobb a biztonságérzete az embernek, mások bátrabban tudnak belenyúlni az én programomba, ha szükséges, stb.
  • A tesztforgatókönyv tulajdonképpen dokumentációként is használható, hiszen benne van (a korábban említett "ellenőrzési pontokon"), hogy milyen interakcióra milyen válasznak kell érkeznie. (Ez a már évekkel ezelőtt megírt szoftver módosításakor lehet érdekes, amikor már mindenki csak homályosan emlékszik, hogy pontosan - ez fontos kitétel - mit kell csinálnia a programnak...)
Épp most próbáltam ki egy ilyen automatizált tesztelő eszközt, a neve WATIR

itt a weblapja: www.watir.com
tökingyen van (szinte hihetetlen a "mai" világban...)

És leszedtem egy példa tesztforgatókönyvet is, ami a google keresőmotorját "teszteli", persze ez csak egy egyszerű példa.

Itt a forgatókönyv szövege, lejjebb meg a futtatási eredmény:

# Please, when you update this file, update also http://wiki.openqa.org/display/WTR/Example+Test+Case

#-------------------------------------------------------------#
# Demo test for the Watir controller.
#
# Purpose: to demonstrate the following Watir functionality:
# * entering text into a text field,
# * clicking a button,
# * checking to see if a page contains text.
# Test will search Google for the "pickaxe" Ruby book.
#-------------------------------------------------------------#

# the Watir controller
require "watir"

# set a variable
test_site = "http://www.google.com"

# open a browser
browser = Watir::Browser.new

# print some comments
puts "Beginning of test: Google search."

puts " Step 1: go to the test site: " + test_site
browser.goto test_site

puts " Step 2: enter 'pickaxe' in the search text field."
browser.text_field(:name, "q").set "pickaxe" # "q" is the name of the search field

puts " Step 3: click the 'Google Search' button."
browser.button(:name, "btnG").click # "btnG" is the name of the Search button

puts " Expected Result:"
puts " A Google page with results should be shown. 'Programming Ruby' should be high on the list."

puts " Actual Result:"
if browser.text.include? "Programming Ruby"
puts " Test Passed. Found the test string: 'Programming Ruby'. Actual Results match Expected Results."
else
puts " Test Failed! Could not find: 'Programming Ruby'."
end

browser.close

puts "End of test: Google search."

Itt az eredmény:

c:\ruby\tests>ruby example.rb
Beginning of test: Google search.
Step 1: go to the test site: http://www.google.com
Step 2: enter 'pickaxe' in the search text field.
Step 3: click the 'Google Search' button.
Expected Result:
A Google page with results should be shown. 'Programming Ruby' should be high
on the list.
Actual Result:
Test Passed. Found the test string: 'Programming Ruby'. Actual Results match E
xpected Results.
End of test: Google search.

Ennyit mára a tudomány és technika újdonságaiból, aludjatok jól, álmodjatok szépeket, jó éjszakát, gyekerek!

:)

2 megjegyzés:

  1. watir-t nem ismerem, de javaslom lesd meg a Selenium -ot. Firefox-ra van egy plugin-ja, ami felveszi, amit nyomkodsz, es utana le tudod jatszani.

    VálaszTörlés