Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

Mastering Test Automation: How to Use Selenium Successfully

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Hier ansehen

1 von 90 Anzeige

Mastering Test Automation: How to Use Selenium Successfully

Herunterladen, um offline zu lesen

** WATCH FULL WEBINAR RECORDING HERE: https://youtu.be/06H-6hjyyvI **

What is Selenium? Why should you use it? And how do you use it successfully?
In this webinar, Automation expert Dave Haeffner answers these questions as he steps through the why, how, and what of Selenium.

Dave also discusses how to start from nothing and build out a well factored, maintainable, resilient, fast and scalable set of tests. These tests will not only work well, but across all of the browsers you care about, while exercising relevant functionality that matters to your business.

Watch this webinar and learn how to:

* Decompose an existing web application to identify what to test
* Pick the best language for you and your team
* Write maintainable and reusable Selenium tests that will be cross-browser compatible and performant
* Dramatically improve your test coverage with automated visual testing
* Build an integrated feedback loop to automate test runs and find issues fast

** WATCH FULL WEBINAR RECORDING HERE: https://youtu.be/06H-6hjyyvI **

What is Selenium? Why should you use it? And how do you use it successfully?
In this webinar, Automation expert Dave Haeffner answers these questions as he steps through the why, how, and what of Selenium.

Dave also discusses how to start from nothing and build out a well factored, maintainable, resilient, fast and scalable set of tests. These tests will not only work well, but across all of the browsers you care about, while exercising relevant functionality that matters to your business.

Watch this webinar and learn how to:

* Decompose an existing web application to identify what to test
* Pick the best language for you and your team
* Write maintainable and reusable Selenium tests that will be cross-browser compatible and performant
* Dramatically improve your test coverage with automated visual testing
* Build an integrated feedback loop to automate test runs and find issues fast

Anzeige
Anzeige

Weitere Verwandte Inhalte

Diashows für Sie (20)

Andere mochten auch (15)

Anzeige

Ähnlich wie Mastering Test Automation: How to Use Selenium Successfully (20)

Weitere von Applitools (20)

Anzeige

Aktuellste (20)

Mastering Test Automation: How to Use Selenium Successfully

  1. 1. How To Use Selenium, Successfully by Dave Haeffner, @TourDeDave
  2. 2. http://www.wpclipart.com/geography/features/chasm.png.html
  3. 3. http://en.wikipedia.org/wiki/Optimal_solutions_for_Rubik's_Cube
  4. 4. Write business valuable tests that are reusable, maintainable and resilient across all relevant browsers. Then package and scale them for you & your team.
  5. 5. Selenium Overview • What it is — the Reader’s Digest version • What it is and is not good at • IDE vs. Local vs. Remote • Slow, brittle, and hard to maintain?
  6. 6. Step 1 Define a Test Strategy
  7. 7. Test Strategy 1. How does your business make money? 2. What features of your application are being used? 3. What browsers are your users using? 4. What things have broken in the app before? Outcome: - What features to test - Which browsers to care about
  8. 8. Step 2 Pick a Programming Language
  9. 9. Programming Language • Same language as the app? • Who will own it? • Build a framework or use an existing one? • http://se.tips/seleniumframeworks
  10. 10. Step 3 Use Selenium fundamentals
  11. 11. Selenium Fundamentals • Mimics human action • Uses a few common actions • Works with “locators” Locators tell Selenium which HTML element to interact with
  12. 12. Common Actions • get(); • findElement(); • click(); //or submit(); • sendKeys(); • isDisplayed();
  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
  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
  16. 16. 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)
  17. 17. Locator Strategies • Class • CSS selectors • ID • Link Text • Partial Link Text • Tag Name • XPath CSS vs XPath http://se.tips/seleniumbenchmarks http://se.tips/cssxpathexamples
  18. 18. Finding Quality Locators • Inspect the page • Verify your selection • e.g., FirePath or FireFinder • http://se.tips/verifyinglocators • e.g., JavaScript console with $$(‘’); or $(‘’); • Learn through gaming • http://se.tips/locatorgame • Conversation
  19. 19. Step 4 Write your first test
  20. 20. Good Test Anatomy • Write 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
  21. 21. A Login Example 1. Visit the login form 2. Find the login form’s username field and input text 3. Find the login form’s password field and input text 4. Find the submit button and click it 1. or, find the form and submit it
  22. 22. http://the-internet.herokuapp.com/login
  23. 23. Now to find an assertion 1. Login 2. Inspect the page 3. Find a locator 4. Verify it 5. Add it to the test
  24. 24. A much better assertion
  25. 25. Automated Visual Testing Primer • Check that an application’s UI appears correctly • Can also be used to verify content • Hundreds of assertions for a few lines of code • Open-source libraries, baseline image comparison, and inherent challenges http://se.tips/visual-testing-getting-started
  26. 26. In pom.xml
  27. 27. Exception Handling • org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"css selector","selector":".flash.error"} • Most common ones you’ll run into: 
 NoSuchElement and StaleElementReferenceError • A list of all WebDriver exceptions: 
 http://se.tips/se-exceptions-java
  28. 28. Exception Handling cont’d http://se.tips/se-exceptions-howto
  29. 29. Step 5 Write reusable and maintainable test code
  30. 30. Page Objects
  31. 31. Application Under Test Test 1 Test 2 Test 3 Test 4 Test 5Test 1 Test 2 Test 3 Test 4 Test 5 Need to update EVERY test :-(
  32. 32. Page Object(s) Application Under Test Test 1 Test 2 Test 3 Test 4 Test 5 Need to update JUST the page object :-D
  33. 33. Let’s look at a page object for login
  34. 34. And here’s what the test looks like when using it
  35. 35. Page object helpers: http://se.tips/po-html-elements http://se.tips/po-page-factory
  36. 36. Base Page Object a.k.a. Selenium Wrapper Utility Class etc.
  37. 37. Selenium Commands Page Object 1 Page Object 2 Page Object 3 Page Object 4 Page Object 5
  38. 38. Base Page Object Page Object 1 Page Object 2 Page Object 3 Page Object 4 Page Object 5 Selenium Commands • Global reuse • More readable • Insulates you from Selenium API changes http://se.tips/se-upgrade
  39. 39. Let’s take a look at a Base Page Object
  40. 40. And here it is implemented
  41. 41. How everything fits together Test TestTest Page Object Page Object Base Page Object Tests use page objects Page objects inherit the base page (utility) class The base page object wraps your Selenium commands
  42. 42. Step 6 Make your tests resilient
  43. 43. Waiting
  44. 44. Thread.sleep(); Implicit wait Explicit waits
  45. 45. Thread.sleep(); Implicit wait Explicit waits
  46. 46. Thread.sleep(); Implicit wait Explicit waits http://se.tips/se-waiting
  47. 47. Explicit Waits • Specify an amount of time, and an action • Selenium will try repeatedly until either: • The action is completed, or • The amount of time specified has been reached (and throw a timeout exception)
  48. 48. In the Base page object
  49. 49. In the DynamicLoading page object
  50. 50. Browser Timing Considerations
  51. 51. Step 7 Prep for use
  52. 52. Test Harness • Simple organizational structure • Central setup and teardown • Configurable at run-time (with sensible defaults) • Reporting & Logging • Parallelization • Test Grouping
  53. 53. Folder structure
  54. 54. Central setup/teardown More on JUnit Rules: http://bit.ly/junit-rules
  55. 55. Simple config with defaults Import config where it’s needed (e.g., base test, etc.)
  56. 56. Reporting & Logging • Machine readable
 e.g., JUnit XML • Human readable
 e.g., screenshots, failure message, stack trace Fantastic Test Report Tool http://bit.ly/se-reporter (Allure Framework)
  57. 57. Parallelization • In code • Through your test runner • Through your Continuous Integration (CI) server #protip Enforce random order execution of tests (turnkey in mvn-surefire) Recommended approach: http://bit.ly/mvn-surefire
  58. 58. Test Grouping • Metadata (a.k.a. Categories) • Enables “test packs” • Some category ideas • defect • shallow & deep • release or story number More info: bit.ly/junit-categories
  59. 59. Step 8 Add in cross-browser execution
  60. 60. Locally http://se.tips/se-chromedriver http://se.tips/se-firefoxdriver http://se.tips/se-iedriver http://bit.ly/edge-driver http://se.tips/se-safaridriver
  61. 61. Chrome
  62. 62. Grid Grid Hub Browser Tests All done with the Selenium Standalone Server Just requires additional runtime flags Grid Node Grid Node Grid Node Browser Browser
  63. 63. Grid Hub Node(s)
  64. 64. Grid • http://se.tips/grid-getting-started • http://se.tips/se-grid-extras • http://se.tips/se-grid-scaler
  65. 65. Sauce Labs Sauce Labs Browser Tests http://se.tips/sauce-getting-started http://se.tips/sauce-with-applitools
  66. 66. Step 9 Build an automated feedback loop
  67. 67. Feedback loops • The goal: Find failures early and often • Done with continuous integration and notifications • Notifications
 - remote: Email, chat, SMS
 - in-person: audio/visual indicators
  68. 68. Code Committed Unit/Integ. (pass?) Deploy to autom. test server (success?) Run automated tests (pass?) Deploy to next env. yes yes yes Notify team if no Code Promotion Bonus points: stop the line
  69. 69. Simple CI configuration 1. Create a Job 2. Pull In Your Test Code 3. Set up Build Triggers 4. Configure Build steps 5. Configure Test Reports 6. Set up Notifications 7. Run Tests & View The Results 8. High-five your neighbor
  70. 70. Step 10 Find information on your own http://se.tips/selenium-resources
  71. 71. Steps to solve the puzzle 1. Define a Test Strategy 2. Pick a programming language 3. Use Selenium Fundamentals 4. Write Your First Test 5. Write re-usable and maintainable test code 6. Make your tests resilient 7. Package your tests into a framework 8. Add in cross-browser execution 9. Build an automated feedback loop 10. Find information on your own
  72. 72. Write business valuable tests that are reusable, maintainable and resilient across all relevant browsers. Then package them and scale them for you & your team.
  73. 73. –Dave Haeffner “You may think your puzzle is unique. But really, everyone is trying to solve the same puzzle. Yours is just configured differently — and it’s solvable”
  74. 74. 1. Sign up for a free Applitools Eyes account http://se.tips/applitools-free-account 2. Run your first visual test 3. Email webinars@applitools.com 4. Sport your new “Visually Perfect” Tee FREE t-shirt give-away FREE sample of my book • First 6 chapters available at https://seleniumguidebook.com/#sample • Available in Java and Ruby • JavaScript, C#, and Python coming SOON!

×