230 likes | 674 Views
WEB TESTING WITH SELENIUM AND JUNIT. David Ross Drake - SDET. 06/21/11. 2. What is Selenium?. Selenium Portable software testing framework for web applications Selenium IDE Selenium Client Drivers Selenium RC Selenium Grid. 06/21/11. 3. Why use Selenium?. Why automated testing?
E N D
WEB TESTING WITH SELENIUM AND JUNIT David Ross Drake - SDET
06/21/11 2 What is Selenium? Selenium • Portable software testing framework for web applications • Selenium IDE • Selenium Client Drivers • Selenium RC • Selenium Grid
06/21/11 3 Why use Selenium? Why automated testing? • Speed • Repeatability • Reliability • Cost • Requalification (security patches) • Verisimilitude (vs HTMLUnit)
06/21/11 4 DEMONSTRATION: SELENIUM IDE Recording and playing back a test with Selenium IDE
06/21/11 5 Selenium Locators • id – fastest method • name • link • dom • css • xpath – slowest method
06/21/11 6 DEMONSTRATION: EXPORTING TESTS Exporting tests from Selenium IDE into JUnit and running using Selenium RC
06/21/11 7 Selenium RC Image: www.seleniumhq.org
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
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); } }
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
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
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