Your SlideShare is downloading. ×
0
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Selenium
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Selenium

14,215

Published on

Published in: Technology
3 Comments
9 Likes
Statistics
Notes
No Downloads
Views
Total Views
14,215
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
1,070
Comments
3
Likes
9
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Automated Web Testing with Selenium <ul><ul><li>Deepak Mittal </li></ul></ul><ul><ul><li>Dec 15, 2007 </li></ul></ul>
  • 2. Agenda <ul><li>Introduction to Selenium </li></ul><ul><li>Quick Demo </li></ul><ul><li>Different ways of using Selenium </li></ul><ul><li>Best practices with using Selenium </li></ul><ul><li>Questions &amp; Feedback </li></ul>
  • 3. Quick Poll <ul><li>Do you do Web Testing? </li></ul><ul><li>Do you do automated Web Testing? </li></ul><ul><li>Do you need to support &amp; test your web-app on multiple browsers? </li></ul><ul><li>Which automated web-testing frameworks do you use? </li></ul>
  • 4. What is Selenium? <ul><li>A JavaScript based </li></ul><ul><li>Open Source </li></ul><ul><li>Web testing tool </li></ul><ul><li>That supports testing Web 2.0 applications </li></ul><ul><li>On multiple browsers </li></ul><ul><li>And multiple Operating Systems </li></ul>
  • 5. What is Selenium <ul><li>Acceptance Testing tool for web-apps </li></ul><ul><li>Tests run directly in browser </li></ul><ul><li>Implemented entirely using browser technologies - </li></ul><ul><ul><ul><li>JavaScript </li></ul></ul></ul><ul><ul><ul><li>DHTML </li></ul></ul></ul><ul><ul><ul><li>Frames </li></ul></ul></ul>
  • 6. Origins of Selenium <ul><li>Developed by ThoughtWorks to test new time and expenses system </li></ul><ul><li>Selenium is the key mineral to protect body from mercury toxicity </li></ul><ul><li>http://www.openqa.org/selenium </li></ul>
  • 7. Selenium Modes <ul><li>Test Runner Mode </li></ul><ul><ul><ul><li>test cases in HTML tables </li></ul></ul></ul><ul><li>Record-Playback mode (Selenium IDE)‏ </li></ul><ul><li>Selenium Remote Control (RC) Mode </li></ul><ul><ul><ul><li>test-cases in your language of choice </li></ul></ul></ul>
  • 8. Selenium Modes <ul><li>Test Runner Mode </li></ul><ul><ul><ul><li>test cases in HTML tables </li></ul></ul></ul><ul><li>Record-Playback mode (Selenium IDE)‏ </li></ul><ul><li>Selenium Remote Control (RC) Mode </li></ul><ul><ul><ul><li>test-cases in your language of choice </li></ul></ul></ul>
  • 9. Test Runner Mode
  • 10. Selenium HTML Tests <ul><li>Selenium tests are HTML files </li></ul><ul><li>Selenium interacts with the DOM served to browser </li></ul><ul><li>Selenium is agnostic of server side technology </li></ul><ul><li>Selenium HTML language is called Selenese </li></ul>
  • 11. Selenese <ul><li>Selenium declarative DSL : Selenese </li></ul><ul><li>Selenium understands two types of HTML files (which have simple HTML tables): </li></ul><ul><ul><ul><ul><li>Tests </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Test Suites </li></ul></ul></ul></ul><ul><li>Every test is contained within a test suite </li></ul><ul><li>Point TestRunner.html at the test suite to run it </li></ul>
  • 12. Format of a Selenium Test <ul><li>HTML Table with 3 columns </li></ul><ul><ul><ul><ul><li>First Column: Selenium command </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Second Column: Target of command </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Third Column: Optional parameter </li></ul></ul></ul></ul>
  • 13. Selenium Concepts <ul><li>Element Locators : specify HTML elements </li></ul><ul><li>Patterns : for pattern matching values </li></ul><ul><li>Action : manipulate app state </li></ul><ul><li>Accessors : store results in variables </li></ul><ul><li>Assertion : verify that the app is in a certain state </li></ul>
  • 14. Test Runner Demo <ul><li>See Demo suite </li></ul><ul><li>Look at tests bundled with Selenium </li></ul><ul><li>Running selenium test in slow and fast mode </li></ul>
  • 15. Problems with HTML Tests <ul><li>Selenium is sensitive to the format of the table </li></ul><ul><li>No separation of concern </li></ul><ul><li>Duplication is a major issue </li></ul><ul><li>Tests need to be deployed with AUT (Application under Test)‏ </li></ul>
  • 16. Selenium Modes <ul><li>Test Runner Mode </li></ul><ul><ul><ul><li>test cases in HTML tables </li></ul></ul></ul><ul><li>Record-Playback mode (Selenium IDE)‏ </li></ul><ul><li>Selenium Remote Control (RC) Mode </li></ul><ul><ul><ul><li>test-cases in your language of choice </li></ul></ul></ul>
  • 17. Selenium IDE <ul><li>Very useful tool for beginners </li></ul><ul><li>Firefox extension which allows record/play testing paradigm </li></ul><ul><li>Automates commands, but asserts must be entered by hand </li></ul><ul><li>Creates the simplest possible Locator </li></ul><ul><li>Based on Selenese </li></ul>
  • 18. Selenium IDE Demo <ul><li>Look at firefox extension </li></ul><ul><li>Look at various possible commands </li></ul><ul><li>Record a test on AUT and play-back </li></ul><ul><li>Save the test at HTML file </li></ul><ul><li>Export the test as Java / Ruby </li></ul>
  • 19. Selenium Modes <ul><li>Test Runner Mode </li></ul><ul><ul><ul><li>test cases in HTML tables </li></ul></ul></ul><ul><li>Record-Playback mode (Selenium IDE)‏ </li></ul><ul><li>Selenium Remote Control (RC) Mode </li></ul><ul><ul><ul><li>test-cases in your language of choice </li></ul></ul></ul>
  • 20. Selenium RC Mode
  • 21. Selenium RC Mode Demo <ul><li>Run selenium server </li></ul><ul><li>Look at sample tests </li></ul>
  • 22. Maintaining Selenium Tests <ul><li>Test code is just like production code </li></ul><ul><li>Needs re-factoring, abstraction </li></ul><ul><li>API for the application </li></ul><ul><li>Can build tests from API building blocks </li></ul><ul><li>Try to maintain meaning – in test names, variable names, comments, and suite organization </li></ul>
  • 23. Selenium with Continuous Integration <ul><li>Run Selenium tests as part of the build </li></ul><ul><li>Can generate HTML reports, published to entire team </li></ul><ul><li>Helps catch bugs ASAP </li></ul>
  • 24. Ajax Support <ul><li>Selenium supports testing Web 2.0 applications </li></ul><ul><li>Monitor the DOM for completion of Async calls </li></ul><ul><li>waitForCondition(script, timeout)‏ </li></ul>
  • 25. Useful Selenium Tools <ul><li>Chris Pederick&apos;s Web Developer toolbar </li></ul><ul><li>XPather </li></ul><ul><li>Firebug </li></ul><ul><li>Xpath Checker </li></ul>
  • 26. Selenium Best Practices <ul><li>Use Ids wherever possible (xpaths make the tests brittle)‏ </li></ul><ul><li>Use data-driven tests. Use a JSP/PHP page to generate tests </li></ul><ul><li>In order to generate unique Ids, use timestamp </li></ul><ul><li>Use the right level of granularity </li></ul>
  • 27. What have we not covered? <ul><li>Continuous Integration set-ups </li></ul><ul><li>Creating screencasts using Selenium </li></ul><ul><li>Testing of Ajax applications </li></ul><ul><li>Selenium Commands in detail </li></ul><ul><li>User Extensions </li></ul><ul><li>Using Python/Ruby/C# ... </li></ul>
  • 28. Selenium Limitations <ul><li>Slow when testing all the edge cases </li></ul><ul><li>Slow for testing fine-grained features – set-up and tear-down are called for each test </li></ul>
  • 29. Selenium Strengths <ul><li>For testing Ajax applications </li></ul><ul><li>Multiple browsers </li></ul><ul><li>Test full-stack </li></ul>
  • 30. Interesting Possibilities <ul><li>Delivering Selenium Screencast as Documentation to end-users </li></ul><ul><li>Creating a report with screenshots </li></ul><ul><li>A Server having VMWare images of various OS/browser and each submitting a report back </li></ul>
  • 31. Summary <ul><li>Selenium is a testing framework for Web Applications </li></ul><ul><li>Drivers allow web testing in language of choice </li></ul><ul><li>Test scripts are code: need maintenance, re-factoring </li></ul>
  • 32. Summary <ul><li>Can be used on Developer machines </li></ul><ul><li>Most valuable when used with CI set-up </li></ul><ul><li>Can be used to make screen casts </li></ul><ul><li>Tests run on real browser – most people use it to test their JavaScript works predictably on all browsers </li></ul>
  • 33. Summary <ul><li>Can be used for unit-testing, regression testing, smoke-testing, integration and acceptance testing </li></ul>
  • 34. References / Attribution <ul><li>Neal Ford&apos;s presentation on Selenium </li></ul><ul><li>Selenium site </li></ul><ul><ul><li>This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 License http://creativecommons.org/licenses/by-nc-sa/3.0/ </li></ul></ul>
  • 35. Feedback <ul><ul><li>[email_address] </li></ul></ul>

×