Download
slide1 n.
Skip this Video
Loading SlideShow in 5 Seconds..
WEB TESTING WITH SELENIUM AND JUNIT PowerPoint Presentation
Download Presentation
WEB TESTING WITH SELENIUM AND JUNIT

WEB TESTING WITH SELENIUM AND JUNIT

397 Views Download Presentation
Download Presentation

WEB TESTING WITH SELENIUM AND JUNIT

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. WEB TESTING WITH SELENIUM AND JUNIT David Ross Drake - SDET

  2. 06/21/11 2 What is Selenium? Selenium • Portable software testing framework for web applications • Selenium IDE • Selenium Client Drivers • Selenium RC • Selenium Grid

  3. 06/21/11 3 Why use Selenium? Why automated testing? • Speed • Repeatability • Reliability • Cost • Requalification (security patches) • Verisimilitude (vs HTMLUnit)

  4. 06/21/11 4 DEMONSTRATION: SELENIUM IDE Recording and playing back a test with Selenium IDE

  5. 06/21/11 5 Selenium Locators • id – fastest method • name • link • dom • css • xpath – slowest method

  6. 06/21/11 6 DEMONSTRATION: EXPORTING TESTS Exporting tests from Selenium IDE into JUnit and running using Selenium RC

  7. 06/21/11 7 Selenium RC Image: www.seleniumhq.org

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

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

  10. 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)

  11. 06/21/11 11 Selenium 2

  12. 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 at once • Use cloud-based testing services

  13. 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

  14. 06/21/11 14 Cloud-based testing in Sauce Labs Image: www.saucelabs.com

  15. 06/21/11 15 DEMONSTRATION: SAUCE LABS Running tests using Sauce Labs and viewing the results

  16. 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