Selenium Web Application Testing

Published on February 2017 | Categories: Documents | Downloads: 45 | Comments: 0 | Views: 446
of 32
Download PDF   Embed   Report

Comments

Content

Selenium
Web Application Testing Maik Röder [email protected] http://www.ingeniweb.com

What is Selenium?
 

A test tool for web applications Selenium tests run directly in the browser
– Just like real users do – Browser plays back testing scripts – Uses JavaScript



Wide array of browsers and platforms supported
– Internet Explorer
• Windows

– Mozilla and Firefox
• Windows • Mac • Linux

– Safari
• Mac OS X

Web application testing
 

Two categories of test tools Tools that simulate browsers
– – – – implement HTTP request/response protocol some parse HTML into DOM examples: mechanize, webunit, PBP, Twill, MaxQ So called "Web protocol drivers"



Tools that automate browsers
– drive real browsers via JavaScript or COM calls – examples: Selenium, Pamie (IE), Jssh (Mozilla), Watir (Ruby/IE) – So called "Web browser drivers"

Selenium Demo

"TestRunner" mode


Static HTML, JavaScript, CSS and Test Suite deployed alongside the Application under Test (AUT) on the web server
– Both the application and Selenium on the same (arbitrary) web server

HTML Test Tables


Tests written as HTML tables
– similar to FitNesse



Driven Mode

Browser under the control of a process on the same machine
• Drivers available for Java, .Net, Ruby or Python

 

Leveraging a unit testing framework for functional testing Test Suite coded in Python (or another language)

Selenium Engine


Browser-Bot JavaScript engine
– Embedded in the Browser – Browser can be minimized during the tests



Engine drives the Browser
– Reads test tables written in Selenese – Executes Selenese commands – Accesses and runs Application under Test (AUT) in separate frame – Interacts with page elements – Runs tests or test suites automatically or interactively step by step – Keeps result statistics
• Optionally POST results back to server

HTML Test Tables


Simple HTML Page
– HTML Table rows contain the documentation and the commands

  

First row for documentation:
– <tr><td colspan="3">My Test</td></tr>

Further rows for Selenese commands:
– <td>COMMAND</td><td>TARGET</td><td>VALUE</td>

Two types of commands:
– Actions – Checks

Selenese Actions
    

manipulate the state of the application click, clickAndWait
– works on any clickable item

select, selectAndWait
– <select> widget

type, typeAndWait
– <input> or <textarea>

open (Don't overuse, as users rarely type a url in the browser)
– URL



Actions stop current test on failure or error

Selenese Checks
    

verify that the state of the application conforms to what is expected verifyLocation, assertLocation
– Location of the current page, e.g. "/Plone"

verifySelected, assertSelected
– Label of the selected option of a drop-down

verifyTextPresent, assertTextPresent
– Text appears somewhere on the page

Checks usually come in pairs:
– assert* checks
• Stop the test on failure

– Verify* checks
• Record failure and continues

Element Locators
 

Element Locators tell Selenium which HTML element a command refers to Identifier: Find element based on the id or name attribute of the element.
– example: TheElementId, TheElementName



DOM: Find element with built-in DOM traversal syntact of HTML
– example: document.forms['myForm'].myDropdown



Xpath: Locate Element using a defined Xpath expression
– example: //table[@id='table1']//tr[4]/td[2]

Variables
 

Selenium handles simple variables Commands:
– storeValue – storeText



Variables can be used in the target or value column:
– ${variableName}

Extending Selenium
  

No need to change core Selenium user-extension.js
– File gets loaded by Selenium if it exists

user-extension.js.sample
– contains demo code of how to write your own
• Action • Check • Locator Strategy

Test Development #1


Testing plan
– Contains all the test cases that need to be run – Should describe
• methodology used for testing • desired results



Testing Plan for "Simple Plone Search"
– Basic check for Plone Search – Only one example test case:
• 1. The user enters "Welcome to Plone" in search field • 2. The user clicks on search • 3. The results page contains "Welcome to Plone" text

Test Development #2


Open web browser with application under test
– View Source – Use DOM Inspector

Test Development #3


How to locate the search text field?
• Either by id: searchGadget or by name: SearchableText

Test Development #4


How to identify the search button to be pushed?
• //input[@value='Search']

Test Development #5


We should end up on the search template
• assert the location is "/Plone/search"

Test Development #6


What text needs to be checked?
• verify the text "Welcome to Plone" is present

Test Development #7


Write Test

Test Development #8


Run the Test

Zelenium


Zelenium is a Selenium Zope product
– By Tres Seaver – create TTW Selenium test suites inside the ZMI



Quick Start
– Install Zelenium / ExternalEditor products – Add Zuite instance – Populate with File instances
• content type: text/html • contain the test table table

– Point at filesystem using property


Resources:
– http://www.zope.org/Members/tseaver/Zelenium

PloneSelenium #1
  

Ingeniweb product Lets you define tests with a simple Python Script The goal is to move it into Plone
– Plone Roadmap #100 – Plone Sprint after EuroPython

 

Not a reimplementation of Zelenium
– Export to Zelenium to run static test suites

Not a reimplementation of Selenium for Plone by Jason Huggins
– PloneSelenium uses the Dispatcher and Interpreter

PloneSelenium #2


One Python Script per test
– Integrated development mode in a Plone configlet – Python programmers want the expressiveness of Python
• HTML table approach and Selenese command language limited

– Don't necessarily want to use Unit Testing framework to do some quick tests


Concentrates on one Test under development
– Tests are broken up into subtests
• SubTests have a title for better documentation • Restart subtests in development at a given point

– Import subtests from other test library by name – Exports to Zelenium once the test is stable

PloneSelenium #3


The “Simple Plone Search“ Test in Python Script

Plone Selenium #4

PloneSelenium #5


Install PloneSelenium from CVS
– http://ingeniweb.sourceforge.net/Products/PloneSeleni um/

  

Go to Selenium Configlet Add a functional test Edit the generated Python Script
– Created in portal_skins/custom – Contains the test boilerplate

  

Run the Test in development mode Register other tests in skin path
– have to be named "get" + mytestname + "ftests".py

Export Tests to Zelenium Test Suite

Selenium in Plone 2.2


Plone RoadMap #100:
– "Integrate Selenium for functional testing" – Planned for Plone 2.2



Plone Selenium Sprint
– Implement the initial testing plan – Two days after EuroPython 2005 – Sprint Wiki:
• http://wiki.python.org/moin/PloneSeleniumSprint

Resources
  

Selenium site
– http://selenium.thoughtworks.com

Zelenium product
– http://www.zope.org/Members/tseaver/Zelenium

PloneSelenium
– http://ingeniweb.sourceforge.net/Products/PloneSeleni um/

Credits


Some slides contain material from following presentation:
– "Agile Testing with Python Test Frameworks"
• Grig Gheorghiu • PyCon 2005, Washington D.C., March 22, 2005 • http://www.python.org/pycon/2005/papers/10/



I took some inspiration and wording from Tres Seaver's presentation:
– "Zelenium: Browser Testing for Zope"
• Tres Seaver • Fredericksburg Zope / Python Users' Group 2005/06/08 • http://palladion.com/home/tseaver/FXBGZPUGZelenium.sxi/file_view

Thanks for Listening!
  

Maik Röder
[email protected]

Ingeniweb
– http://www.ingeniweb.com

Ingeniweb Support
[email protected]

Sponsor Documents

Or use your account on DocShare.tips

Hide

Forgot your password?

Or register your new account on DocShare.tips

Hide

Lost your password? Please enter your email address. You will receive a link to create a new password.

Back to log-in

Close