Sei sulla pagina 1di 16

WEB TESTING WITH SELENIUM AND JUNIT

David Ross Drake - SDET

06/21/11

What is Selenium?
Selenium Portable software testing framework for web applications Selenium Selenium Selenium Selenium IDE Client Drivers RC Grid

06/21/11

Why use Selenium?


Why automated testing? Speed Repeatability Reliability Cost Requalification (security patches) Verisimilitude (vs HTMLUnit)

06/21/11

DEMONSTRATION: SELENIUM IDE


Recording and playing back a test with Selenium IDE

06/21/11

Selenium Locators
id fastest method name link dom css xpath slowest method

06/21/11

DEMONSTRATION: EXPORTING TESTS


Exporting tests from Selenium IDE into JUnit and running using Selenium RC

06/21/11

Selenium RC

Image: www.seleniumhq.org

06/21/11

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

06/21/11

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 >= 5) { fail("timeout waiting for event); } try { if (selenium.isVisible(id)) { break; } } catch (Exception e) {} Thread.sleep(1000); } }

06/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)

06/21/11

11

Selenium 2
Advantages No Selenium RC installation Disadvantages No final version released (summer 2011) Limited backwards compatibility

Cross-domain testing capabilities Object-oriented API

Smaller number of supported browsers

Mobile browser testing

06/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

06/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

06/21/11

14

Cloud-based testing in Sauce Labs

Image: www.saucelabs.com

06/21/11

15

DEMONSTRATION: SAUCE LABS


Running tests using Sauce Labs and viewing the results

06/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

Potrebbero piacerti anche