Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Dave Haeffner's Proven Method to Grading the Quality of Selenium Tests

3,161 views

Published on

** Watch Dave's full session recording here: https://youtu.be/IjGDxXCaDnE **

So you've written your fair share of Selenium tests.

Perhaps you've dabbled with Page Objects, Wait Strategies (aka Implicit and/or Explicit Waits), and you feel confident about your locators. Your test code might be in pretty good shape -- able to work reliably as time marches on and the application under test continues to evolve and your testing needs continue grow with it.

But how do you *know*? It's not like there is a quantitative way to measure this.

Or is there?

Watch Selenium expert Dave Haeffner as he steps through the core tenets of good test and page object design, locators, and a repeatable and quantitative approach for assessing your test code.

When you're done, you'll be able to see how your tests and page objects stack up, and what changes are needed to help them stand the test of time.

Published in: Technology
  • D0WNL0AD FULL ▶ ▶ ▶ ▶ http://1url.pw/p4AG8 ◀ ◀ ◀ ◀
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Dave Haeffner's Proven Method to Grading the Quality of Selenium Tests

  1. 1. How To Grade Your Selenium Tests
  2. 2. Let’s talk about tests
  3. 3. What Makes a Bad Test? • Fails For No Good Reason • Changes in AUT, Need to Update Multiple Tests • Slow • Unreliable • Hard to Understand and Maintain
  4. 4. What Makes a Good Test? • Written for BDD or xUnit test framework • Test one thing (atomic) • Each test can be run independently (autonomous) • Anyone can understand what it is doing • Group similar tests together • Centralized setup/teardown • Uses Page Objects
  5. 5. A Testing Rubric (Each test starts with 100 points, deduct as necessary) Item Belong in tests? Score Selenium Commands No -3 per (max of -9) Locators No -2 per (max of -8) Selenium setup/teardown* No -20 Hard-coded sleeps No -5 per (max of -20) Implicit wait calls No -10 Explicit Wait calls No -3 Conditionals No -5 (max of -20) Calls to Page Objects Yes N/A Assertion(s)* Yes N/A
  6. 6. Let’s talk about Page Objects
  7. 7. http://martinfowler.com/bliki/PageObject.html
  8. 8. What Makes a Bad PO? • Gigantic in size (e.g., hundreds or thousands of lines in code) • Contain overly complicated logic • Return not enough or too much information to the test (leaky abstraction) • Assertions happening in the PO instead of the test
  9. 9. What Makes a Good PO? • Contains State (e.g., locators) • Contains Behavior (e.g., methods to interact with the page) • Returns some information about the page (e.g., new page object, text from the page, a boolean result, etc. — never a WebElement) • Verifies page ready state as part of initialization
  10. 10. A Page Object Rubric (Each Page Object starts with 100, deduct points as necessary) Item Belong in POs? Score > 200 lines of code No -5 per 50 lines over Assertions No* -5 per (max of -20) Hard-coded sleeps No -5 per (max of -20) Implicit wait calls No -10 Explicit waits Yes N/A Verify page ready state* Yes -8 if not verifying an element Locators* Yes N/A http://se.tips/se-waiting-jim-evans
  11. 11. Let’s talk about locators
  12. 12. Locator Strategies • Class • CSS selectors • ID • Link Text • Partial Link Text • Tag Name • XPath Good locators are: • unique • descriptive • unlikely to change That rules a few of these out
  13. 13. Locator Strategies • Class • CSS selectors • ID • Link Text • Partial Link Text • Tag Name • XPath Good locators are: • unique • descriptive • unlikely to change That rules a few of these out
  14. 14. Locator Strategies • Class • CSS selectors • ID • Link Text • Partial Link Text • Tag Name • XPath Good locators are: • unique • descriptive • unlikely to change That rules a few of these out Start with IDs and Classes
  15. 15. Locator Strategies • Class • CSS selectors • ID • Link Text • Partial Link Text • Tag Name • XPath Good locators are: • unique • descriptive • unlikely to change That rules a few of these out Start with IDs and Classes Use CSS or XPath (with care)
  16. 16. Which is better CSS or XPath?
  17. 17. CSS vs. XPath Benchmarks http://se.tips/se-benchmarks
  18. 18. A Locator Rubric (Each locator gets a grade) Item Letter Grade E.g., Dynamic locators D- User account specific or tied to page render Tied to page layout D XPath: / / / CSS: > > >, etc. Text on the page C Link text, page copy Reasonable traversal B Parent to child w/in an element node Using semantic name B+ Input labels (name='username') Semantic ID A Unique, descriptive, unlikely to change Non-unique locator? -2 full letter grades
  19. 19. So…
  20. 20. What’s your testing GPA? Topic Weight Tests 20% Page Objects 30% Locators 50%
  21. 21. http://seleniumconf.co.uk http://se.tips/master-visual-testing

×