WEB TESTING WITH SELENIUM AND JUNIT - PowerPoint PPT Presentation

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

play fullscreen
1 / 16
WEB TESTING WITH SELENIUM AND JUNIT
368 Views
Download Presentation
quon-cash
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