hacking selenium @ jsconf
DESCRIPTION
An overview and history of the Selenium web application testing tool, by Selenium's creator Jason Huggins. Presented on April 25, 2009 at JSConf in Arlington, Virginia.http://jsconf2009.com/speakers.html#hugginsTRANSCRIPT
1 - Why Selenium?
Browser Wars II
3
6, 7 & 8
9.61.0
2, 3
Add-onsBrowser configsLanguages/locales
3, 4 beta
Test Automation
Source: - F.O.X.: http://www.flickr.com/photos/kv/499219/
Dynamic HTML - Ajax
End-to-end Workflows
Large tests
Any browser - Any platform
Selenium Cumulative Downloads
9
10
Firms with: 100+ downloads January – October 2008
2 - Why not Selenium ?
Speed
Source: http://desertpastor.typepad.com/paradoxology/Slow%205.jpg
Flash, Java Applets, Silverlight, PDF
Source: http://goldberg.berkeley.edu/art/big-images/doi-box-hi-res.jpg
Anything outside the JavaScript sandbox
Source: http://lug.mtu.edu/wiki/images/2/27/SANDBOX.jpg
Small tests
3 - A brief history of Selenium
ThoughtWorks Time & Expense
Source: - Neal Ford: http://nealford.com/downloads/conferences/2006_nfjs_canonical/Neal_Ford-Testing_with_Selenium-slides.pdf
First Attempt - JWebUnit
• Simulates the browser• Can’t handle browser-specific bugs• Can’t handle JavaScript in the DOM
Second Attempt - DriftWood
• Mozilla extension (never published)• Pro:
– Drove a real browser, so it could handle JavaScript UI features
• Con:– Not for IE or Safari :-( – XML Syntax for tests. Yuck!
Third Attempt - JsUnit
• Pro:– Can test JavaScript in the browser!– Works in Mozilla/Firefox, IE, and Safari!
• Con:– Emphasis on single-page unit test (no
page-to-page workflows)– Couldn’t see what it was doing
It’s Green, but what did it really work?
Fourth Attempt - FIT (part 1)
• Pro:– More readable tests– Emphasis on functional testing
Example FIT test
Fourth Attempt - FIT (part 2)
Con:• Wasn’t available for the “JavaScript
platform” yet• Limited list of “actions” in the API
Action Fixture picture
Forking FIT
• Selenium initially was an attempt to implement “FIT for web browsers”
• Ended up forking:– Wanted to see what the browser was doing– Wanted a richer API
4 - Side Note: What’s with the name?
“antidote for mecury poisoning”
“results - selenium”
Selenium and mercury detox
5 - Selenium Core
Selenium Core (TestRunner)
6 - Selenium IDE
Selenium IDE for Firefox
7 - SeleniumRemote Control
Selenium Remote Control
Source: - http://www.dkimages.com/discover/previews/824/5100491.JPG
Selenium Remote Control
8 - Selenium Grid
Selenium Grid
Source: - http://factoryjoe.com/blog/wp-content/uploads/2006/10/pods.jpg
17
Which is faster? (1 server, sequential tasks)
Time
Servers
1
2
3
4
40
18
Which is faster? (4 servers, parallel tasks)
Time
Servers
1
2
3
4
p13y.com
Source: - http://www.flickr.com/photos/onetreehillstudios/2958752337/