Title: WEB TESTING WITH SELENIUM AND JUNIT
1WEB TESTING WITH SELENIUM AND JUNIT
David Ross Drake - SDET
206/21/11
2
What is Selenium?
- Selenium
- Portable software testing framework for web
applications - Selenium IDE
- Selenium Client Drivers
- Selenium RC
- Selenium Grid
306/21/11
3
Why use Selenium?
- Why automated testing?
- Speed
- Repeatability
- Reliability
- Cost
- Requalification (security patches)
- Verisimilitude (vs HTMLUnit)
406/21/11
4
DEMONSTRATION SELENIUM IDE
Recording and playing back a test with Selenium
IDE
506/21/11
5
Selenium Locators
- id fastest method
- name
- link
- dom
- css
- xpath slowest method
606/21/11
6
DEMONSTRATION EXPORTING TESTS
Exporting tests from Selenium IDE into JUnit and
running using Selenium RC
706/21/11
7
Selenium RC
Image www.seleniumhq.org
806/21/11
8
Selenium Challenges
- Web app latency can cause tests to fail waiting
on page events - Tests tend to lock in web pages, slowing
iterative development - Selenium core is JavaScript based
- Not all browsers interpret the same way
- Can't perform cross-domain testing
- Testing secure connections is tricky, and often
browser specific - Execution is slow (compared to most unit tests)
- Formatting problems are untested
906/21/11
9
Handling Event Latency
Example An event is triggered on the page when a
user enters invalid data. public static void
waitForPageValidation(DefaultSelenium selenium,
String id) throws InterruptedException
for (int second 0 second) if
(second gt 5) fail("timeout waiting for
event) try
if (selenium.isVisible(id))
break
catch (Exception e)
Thread.sleep(1000)
1006/21/11
10
Managing Change
- Separate page content used in tests from actual
test logic. Most frequently used content - Page titles
- Field locators (ids, names)
1106/21/11
11
Selenium 2
Advantages Disadvantages
No Selenium RC installation No final version released (summer 2011)
Cross-domain testing capabilities Limited backwards compatibility
Object-oriented API Smaller number of supported browsers
Mobile browser testing
1206/21/11
12
Speeding Up Selenium
- Avoid xpath have id attributes for all tested
fields - Reuse browser sessions (although this can cause
subsequent tests to fail if the session fails) - Test local builds to reduce network latency
- Avoid using multi-page test flows for atomic
tests - Use parameterized tests to test multiple browsers
at once - Parallelize tests to run multiple test classes at
once - Use cloud-based testing services
1306/21/11
13
Testing Tools in Sauce Labs
- Sauce Scout Manual testing using dozens of
os/browser/version combinations - Sauce OnDemand Automated cloud-based testing
using a drop in replacement for selenium RC - Sauce Connect Tunneling utility for connecting
to an application under test behind a firewall - Sauce Builder Selenium IDE modified to run
tests using Sauce OnDemand
1406/21/11
14
Cloud-based testing in Sauce Labs
Image www.saucelabs.com
1506/21/11
15
DEMONSTRATION SAUCE LABS
Running tests using Sauce Labs and viewing the
results
1606/21/11
16
Additional Resources
- http//www.seleniumhq.com - selenium docs and
downloads - http//www.saucelabs.com - cloud-based selenium
testing. - http//cargo.codehaus.org - thin wrapper for java
containers - http//ce-games.blogger.com - links to this
presentation