35
Automated Web Testing with Selenium Deepak Mittal Dec 15, 2007

Automated Web Testing With Selenium

Embed Size (px)

DESCRIPTION

Automated Web Testing With Selenium

Citation preview

Page 1: Automated Web Testing With Selenium

Automated Web Testingwith

SeleniumDeepak MittalDec 15, 2007

Page 2: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Agenda• Introduction to Selenium• Quick Demo• Different ways of using Selenium• Best practices with using Selenium• Questions & Feedback

Page 3: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Quick Poll• Do you do Web Testing?• Do you do automated Web Testing?• Do you need to support & test your web­

app on multiple browsers?• Which automated web­testing frameworks 

do you use?

Page 4: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

What is Selenium?

• A JavaScript based• Open Source• Web testing tool• That supports testing Web 2.0 applications• On multiple browsers• And multiple Operating Systems

Page 5: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

What is Selenium• Acceptance Testing tool for web­apps

• Tests run directly in browser

• Implemented entirely using browser technologies ­ 

• JavaScript• DHTML• Frames

Page 6: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Origins of Selenium

• Developed by ThoughtWorks to test new time and expenses system

• Selenium is the key mineral to protect body from mercury toxicity

• http://www.openqa.org/selenium

Page 7: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Selenium Modes

• Test Runner Mode• test cases in HTML tables

• Record­Playback mode (Selenium IDE)• Selenium Remote Control (RC) Mode

• test­cases in your language of choice

Page 8: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Selenium Modes

• Test Runner Mode• test cases in HTML tables

• Record­Playback mode (Selenium IDE)• Selenium Remote Control (RC) Mode

• test­cases in your language of choice

Page 9: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Test Runner Mode

Page 10: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Selenium HTML Tests

• Selenium tests are HTML files• Selenium interacts with the DOM served to 

browser• Selenium is agnostic of server side 

technology• Selenium HTML language is called 

Selenese

Page 11: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Selenese• Selenium declarative DSL : Selenese• Selenium understands two types of HTML 

files (which have simple HTML tables):–Tests–Test Suites

• Every test is contained within a test suite• Point TestRunner.html at the test suite to 

run it

Page 12: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Format of a Selenium Test

• HTML Table with 3 columns –First Column: Selenium command–Second Column: Target of command–Third Column: Optional parameter

Page 13: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Selenium Concepts

• Element Locators : specify HTML elements• Patterns : for pattern matching values• Action : manipulate app state• Accessors : store results in variables• Assertion : verify that the app is in a certain 

state

Page 14: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Test Runner Demo

• See Demo suite• Look at tests bundled with Selenium• Running selenium test in slow and fast 

mode

Page 15: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Problems with HTML Tests

• Selenium is sensitive to the format of the table

• No separation of concern• Duplication is a major issue• Tests need to be deployed with AUT 

(Application under Test)

Page 16: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Selenium Modes

• Test Runner Mode• test cases in HTML tables

• Record­Playback mode (Selenium IDE)• Selenium Remote Control (RC) Mode

• test­cases in your language of choice

Page 17: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Selenium IDE

• Very useful tool for beginners• Firefox extension which allows record/play 

testing paradigm• Automates commands, but asserts must be 

entered by hand• Creates the simplest possible Locator• Based on Selenese

Page 18: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Selenium IDE Demo

• Look at firefox extension• Look at various possible commands• Record a test on AUT and play­back• Save the test at HTML file• Export the test as Java / Ruby

Page 19: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Selenium Modes

• Test Runner Mode• test cases in HTML tables

• Record­Playback mode (Selenium IDE)• Selenium Remote Control (RC) Mode

• test­cases in your language of choice

Page 20: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Selenium RC Mode

Page 21: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Selenium RC Mode Demo• Run selenium server• Look at sample tests

Page 22: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Maintaining Selenium Tests

• Test code is just like production code• Needs re­factoring, abstraction• API for the application• Can build tests from API building blocks• Try to maintain meaning – in test names, 

variable names, comments, and suite organization

Page 23: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Selenium with Continuous Integration

• Run Selenium tests as part of the build• Can generate HTML reports, published to 

entire team• Helps catch bugs ASAP

Page 24: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Ajax Support

• Selenium supports testing Web 2.0 applications

• Monitor the DOM for completion of Async calls

• waitForCondition(script, timeout)

Page 25: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Useful Selenium Tools

• Chris Pederick's Web Developer toolbar• XPather• Firebug• Xpath Checker

Page 26: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Selenium Best Practices

• Use Ids wherever possible (xpaths make the tests brittle)

• Use data­driven tests. Use a JSP/PHP page to generate tests

• In order to generate unique Ids, use timestamp

• Use the right level of granularity

Page 27: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

What have we not covered?

• Continuous Integration set­ups• Creating screencasts using Selenium• Testing of Ajax applications• Selenium Commands in detail• User Extensions• Using Python/Ruby/C# ...

Page 28: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Selenium Limitations

• Slow when testing all the edge cases• Slow for testing fine­grained features – set­

up and tear­down are called for each test

Page 29: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Selenium Strengths

• For testing Ajax applications• Multiple browsers• Test full­stack

Page 30: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Interesting Possibilities

• Delivering Selenium Screencast as Documentation to end­users

• Creating a report with screenshots • A Server having VMWare images of various 

OS/browser and each submitting a report back

Page 31: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Summary

• Selenium is a testing framework for Web Applications

• Drivers allow web testing in language of choice

• Test scripts are code: need maintenance, re­factoring

Page 32: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Summary

• Can be used on Developer machines• Most valuable when used with CI set­up• Can be used to make screen casts• Tests run on real browser – most people 

use it to test their JavaScript works predictably on all browsers

Page 33: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Summary

• Can be used for unit­testing, regression testing, smoke­testing, integration and acceptance testing

Page 34: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

References / Attribution

• Neal Ford's presentation on Selenium• Selenium site

                This work is licensed under the Creative Commons Attribution­Noncommercial­Share Alike 3.0 License              http://creativecommons.org/licenses/by­nc­sa/3.0/

Page 35: Automated Web Testing With Selenium

  http://www.IntelliGrape.com

Feedback

<dmittal> AT <IntelliGrape.com>