Hacking Selenium @ JSConf

Preview:

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#huggins

Citation preview

Hacking Selenium

Jason Huggins@jhuggins

hugs@saucelabs.comseleniumhq.org | p13y.com

JSConf - 25 April 2009

[ ]

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/

Recommended