Sumanth Krishna. A
www.sumanthkrishna.com
Agenda
Introducing the topic
Discussion on Testing frameworks/tools and
it’s necessity Ruby Installations Architecture Testcases Scope
TAG CLOUD
ruby Apache Nginx assertions
install webserver FireWatir
temp-user
WATIR
goto html DOMweb-applications
opensourcetests
Assertions get_string firefox-addon
click hudson SVN COM open-source
IE gems
open-QA ruby regression loadrunner mercury
automatio deployment browers tools
Prerequisites
Can you believe you really don’t need any
What is WATIR?
open-source functional testing tool for
web-applications
Simulate the user actions (filling/submitting
forms…)
Drives Internet Explorer browser
FireWatir – for FireFox
Ruby based
Various assertions (content-based) Connects to databases
Reading data files
Why use WATIR?
Free
Powerful
Simple (easy to use and learn)
Excellent Support
Strongest Presence
Watir/Watin/Watij [Web Application Testing In
Ruby/.NET/Java ]
Huge resource of supporting tools –
Firewatir, Watir Recorder ++, Wet, Cubictest,
Is not?
Watir is not a record/playback tool.
However, there are several recorders “out
there”
WatirMaker
Watir WebRecorder
Webmetrics RIA Script Recorder (most recent
discussion…they are considering open sourcing their application)
Watir is not a link checker
However, you can easily write your own link
checker and customize it to your specific needs.
Watir is not a test case management tool.
However, you can write one in Ruby if
desired.
IE-WATIR
Web Application
Automation Interface
Use the OLE/COM Automation
interface to
Internet Explorer IE DOM Watir/Ruby
FF-FireWATIR
Web Application Automation Interface FF DOM FireWatir/Ruby JSShBrowser Support
IE COM
Test Script
Component 1
FF JSSH Apple Events V8 Debugger Dragonfly
Component 2 Component 3 Component 4
Installing: Windows
Install Ruby: Use the Ruby one-click installer for windows Install the latest gem watir (ruby packages are called gems)
gem install watir
And you find the following gems installing…
Successfully installed xml-simple-1.0.11 Successfully installed s4t-utils-1.0.4
Successfully installed builder-2.1.2
Successfully installed user-choices-1.1.6 Successfully installed commonwatir-1.6.2
Successfully installed firewatir-1.6.2 (to support Firefox) Successfully installed watir-1.6.2
Successfully installed win32-api-1.3.0-x86-mswin32-60 Successfully installed windows-api-0.3.0
Successfully installed rubyforge-1.0.2 10 gems installed
What Next?
Since we are here to test the
web-application
Navigate the browser?
Find elements on the page?
Interact with elements on the page? Check output on the page?
Create and use Methods? Create formal test cases?
Step by Step
Navigate to the browser
#Always Load the Watir library at the top of
your script
require ‘watir’
Start IE and navigate to a given/different
URL IE = Watir::IE.start(‘http://www.qvnatel.com’) IE.goto(“http://free-opensource.qvantel.net/mediawiki//index.php /Main_Page ”) IE.close
Finding <HTML> Elements
IE.frame(how, what) Frame
And many, many more (div, label, image, etc…)… IE.form(how, what) Form IE.link(how, what) HyperLink IE.radio(how, what) RadioButton IE.checkbox(how, what) CheckBox IE.select_list(how, what) DropDownList IE.button(how, what) Button IE.text_field(how, what) TextBox
Interacting with Elements
#Set the text field (or text area) specified
name specified value.
ie.text_field(:name,'name').set('value')
#Sets the select with to the specified value
ie.select_list(:name,'name').select('value')
#Click the button with the specified value
(label)
ie.button(:value,'value').click
#Clicks the link matching 'text'
ie.link(:text,'text').click
#Accessing elements in a "frame" or
"iframe"
ie.frame(:name,"someFrame").text_field(:na
Closer view
browser.button(
:value
, "Click Me").click
Checking Output
#Get the title of the page
ie.title
#Get all the text displayed on the page
ie.text
#Get all the HTML in the body of the page
ie.html
#Return true if ‘text’ is displayed on the page
Ruby advantage
Since WATIR is ruby based web application
testing framework, we can customize the script according to our needs.
Taking Ruby’s Object Oriented concepts,
create more dynamic/customized scripts
Use classes & methods effectively
Access even the database to validate the
Methods
#Here is an example method for logging into a web
application. Its two parameters are a user and password (both of which have defaults). It returns an instance of IE
def login(user=“test_admin”,password = “Password123”)
ie=Watir::IE.start(‘http://someURL.com/login’) ie.text_field(:name,/user/i).set(user) ie.text_field(:name,/password/i).set(password) ie.button(:value,/login/i).click return ie end
#Now we can easily login with the default user.. ie = login
#or with a unique user
Full Fledge Test Case
require 'test/unit' #includes Ruby's test case functionality
require ‘util’ #Assuming our login method is saved in util.rb
#Test cases are contained within classes which extend Ruby’s base test case class
class MyTest < Test::Unit::TestCase
def setup #Optional, will be run before each test method. @ie = login() #call our login function.
end
def test_some_link #Test methods must begin with "test_“ @ie.link(:text,”some_link”).click #click on some link #verify that the proper page loaded
assert(@ie.contains_text(“My Some Link Page”)) end
def teardown #Optional, will be run after each test method. @ie.close
end end
Installing: Ubuntu
Install Ruby:
sudo apt-get install ruby
Install the latest gem firewatir (ruby packages are called
gems)
sudo gem install firewatir
And you find the following gems installing…
Successfully installed xml-simple-1.0.11 Successfully installed s4t-utils-1.0.4
Successfully installed builder-2.1.2
Successfully installed user-choices-1.1.6 Successfully installed commonwatir-1.6.2 Successfully installed firewatir-1.6.2
Successfully installed rubyforge-1.0.2
7 gems installed (3gems to support IE/Windows environment are not
installed)
Tweaks/Tips
While working on Linux platform need to
specify
require “rubygems” at the top of test case
ff = FireWatir::Firefox.new
Start firefox in jssh mode
For Windows:
Close instances of firefox (if any)
Type “firefox.exe –p –jssh” in the “Run”
Scope
Using Watir for all web applications
Integrate it with Automation/Building
References
Watir
Wikipedia: http://en.wikipedia.org/wiki/Watir
Watir main site: http://wiki.openqa.org/display/WTR/
Watir user guide: wtr.rubyforge.org/watir_user_guide.html
Watir API: wtr.rubyforge.org/rdoc/index.html
Mailing List: rubyforge.org/mailman/listinfo/wtr-general
Project site: http://wiki.openqa.org/display/WTR/
User Contributions/examples:
http://wiki.openqa.org/display/WTR/Contributions
Watir FAQ: http://wiki.openqa.org/display/WTR/FAQ
Watir Recorder http://www.hanselman.com/blog/IntroducingWatirMakerRecordingForRubybasedWatir.aspx http://www.hanselman.com/blog/NewReleaseOfWatirMakerNowWatirRecorder. aspx FireWatir Source: http://code.google.com/p/firewatir/wiki/Firewatir Ruby
Ruby site: http://ruby-lang.org
Ruby docs: http://ruby-doc.org/
Thanks
tosumanthkrishna@gmail.com www.sumanthkrishna.com