Test Automation for Web Applications
Many, perhaps most, software applications today are written as
web-based applications to be run in an Internet browser. The effectiveness of
testing these applications varies widely among companies and organizations. In
an era of highly interactive and responsive software processes where many
organizations are using some form of Agile methodology, test automation is
frequently becoming a requirement for software projects. Test automation is
often the answer. Test automation means using a software tool to run repeatable
tests against the application to be tested. For regression testing this
provides that responsiveness.
There are many advantages to test automation. Most are related to
the repeatability of the tests and the speed at which the tests can be executed.
There are a number of commercial and open source tools available for assisting
with the development of test automation. Selenium is possibly the most
widely-used open source solution. This user’s guide will assist both new and
experienced Selenium users in learning effective techniques in building test
automation for web applications.
This user’s guide introduces Selenium, teaches its features, and
presents commonly used best practices accumulated from the Selenium community.
Many examples are provided. Also, technical information on the internal
structure of Selenium and recommended uses of Selenium are provided.
Test automation has specific advantages for improving the
long-term efficiency of a software team’s testing processes. Test automation
supports:
- Frequent regression testing
- Rapid feedback to developers
- Virtually unlimited iterations of test case execution
- Support for Agile and extreme development methodologies
- Disciplined documentation of test cases
- Customized defect reporting
- Finding defects missed by manual testing
To Automate or Not to Automate?
Is automation always advantageous? When should one decide to
automate test cases?
It is not always advantageous to automate test
cases. There are times when manual testing may be more appropriate. For
instance, if the application’s user interface will change considerably in the
near future, then any automation might need to be rewritten anyway. Also,
sometimes there simply is not enough time to build test automation. For the
short term, manual testing may be more effective. If an application has a very
tight deadline, there is currently no test automation available, and it’s
imperative that the testing get done within that time frame, then manual
testing is the best solution.
Introducing Selenium
Selenium is a set of different software tools each with a
different approach to supporting test automation. Most Selenium QA Engineers
focus on the one or two tools that most meet the needs of their project,
however learning all the tools will give you many different options for
approaching different test automation problems. The entire suite of tools
results in a rich set of testing functions specifically geared to the needs of
testing of web applications of all types. These operations are highly flexible,
allowing many options for locating UI elements and comparing expected test
results against actual application behavior. One of Selenium’s key features is
the support for executing one’s tests on multiple browser platforms.
Selenium’s Tool Suite
Selenium is composed of multiple software tools. Each has a
specific role.
Selenium 2 (aka.
Selenium Webdriver)
Selenium 2 is the future direction of the project and the newest
addition to the Selenium toolkit. This brand new automation tool provides all
sorts of awesome features, including a more cohesive and object oriented API as
well as an answer to the limitations of the old implementation.
Both the Selenium and WebDriver developers agreed that both tools
have advantages and that merging the two projects would make a much more robust
automation tool.
Selenium 2.0 is the product of that effort. It supports the
WebDriver API and underlying technology, along with the Selenium 1 technology
underneath the WebDriver API for maximum flexibility in porting your tests. In
addition, Selenium 2 still runs Selenium 1’s Selenium RC interface for
backwards compatibility.
Selenium 1 (aka.
Selenium RC or Remote Control)
As you can read brief history in www.seleniumcoe.com,Selenium RC
was the main Selenium project for a long time, before the WebDriver/Selenium
merge brought up Selenium 2, the newest and more powerful tool.
Selenium 1 is still actively supported (mostly in maintenance
mode) and provides some features that may not be available in Selenium 2 for a
while, including support for several languages (Java, Javascript, Ruby, PHP,
Python, Perl and C#) and support for almost every browser out there.
Selenium IDE
Selenium IDE (Integrated Development Environment) is a prototyping
tool for building test scripts. It is a Firefox plugin and provides an easy-to-use
interface for developing automated tests. Selenium IDE has a recording feature,
which records user actions as they are performed and then exports them as a
reusable script in one of many programming languages that can be later
executed.
Selenium-Grid
Selenium-Grid allows the Selenium RC solution to scale for large
test suites and for test suites that must be run in multiple environments.
Selenium Grid allows you to run your tests in parallel, that is, different
tests can be run at the same time on different remote machines. This has two
advantages. First, if you have a large test suite, or a slow-running test
suite, you can boost its performance substantially by using Selenium Grid to
divide your test suite to run different tests at the same time using those
different machines. Also, if you must run your test suite on multiple environments
you can have different remote machines supporting and running your tests in
them at the same time. In each case Selenium Grid greatly improves the time it
takes to run your suite by making use of parallel processing.
Choosing Your Selenium Tool
Many people get started with Selenium IDE. If you are not already
experienced with a programming or scripting language you can use Selenium IDE
to get familiar with Selenium commands. Using the IDE you can create simple
tests quickly, sometimes within seconds.
We don’t, however, recommend you do all your test automation using
Selenium IDE. To effectively use Selenium you will need to build and run your
tests using either Selenium 2 or Selenium 1 in conjunction with one of the
supported programming languages. Which one you choose depends on you.
At the time of writing the Selenium developers are planning on the
Selenium-WebDriver API being the future direction for Selenium. Selenium 1 is
provided for backwards compatibility. Still, both have strengths and weaknesses
which are discussed in the corresponding chapters of this document.
We recommend those who are completely new to Selenium to read
through these sections. However, for those who are adopting Selenium for the
first time, and therefore building a new test suite from scratch, you will
probably want to go with Selenium 2 since this is the portion of Selenium that
will continue to be supported in the future.
Supported Browsers and Platforms
In Selenium 2.0, the supported browsers vary depending on whether
you are using Selenium-WebDriver or Selenium-RC.
Selenium-WebDriver
Selenium-WebDriver supports the following browsers along with the
operating systems these browsers are compatible with.
- Google Chrome 12.0.712.0+
- Internet Explorer 6, 7, 8, 9 - 32 and 64-bit where applicable
- Firefox 3.0, 3.5, 3.6, 4.0, 5.0, 6, 7
- Opera 11.5+
- HtmlUnit 2.9
- Android – 2.3+ for phones and tablets (devices & emulators)
- iOS 3+ for phones (devices & emulators) and 3.2+ for tablets (devices & emulators)
Note: At the time of writing there is an emulator bug with Android
2.3 that prevents the driver from working properly on device emulators.
However, it works fine on tablet emulators and real devices.
Selenium 1.0 and
Selenium-RC.
This is the old, support platform for Selenium 1.0. It should
still apply to the Selenium 2.0 release of Selenium-RC.
|
Browser
|
Selenium
IDE
|
Selenium
1 (RC)
|
Operating
Systems
|
|
Firefox
3.x
|
Record
and playback tests
|
Start
browser, run tests
|
Windows,
Linux, Mac
|
|
Firefox
3
|
Record
and playback tests
|
Start
browser, run tests
|
Windows,
Linux, Mac
|
|
Firefox
2
|
Record
and playback tests
|
Start
browser, run tests
|
Windows,
Linux, Mac
|
|
IE
8
|
Test
execution only via Selenium RC*
|
Start
browser, run tests
|
Windows
|
|
IE
7
|
Test
execution only via Selenium RC*
|
Start
browser, run tests
|
Windows
|
|
IE
6
|
Test
execution only via Selenium RC*
|
Start
browser, run tests
|
Windows
|
|
Safari
4
|
Test
execution only via Selenium RC
|
Start
browser, run tests
|
Windows,
Mac
|
|
Safari
3
|
Test
execution only via Selenium RC
|
Start
browser, run tests
|
Windows,
Mac
|
|
Safari
2
|
Test
execution only via Selenium RC
|
Start
browser, run tests
|
Windows,
Mac
|
|
Opera
10
|
Test
execution only via Selenium RC
|
Start
browser, run tests
|
Windows,
Linux, Mac
|
|
Opera
9
|
Test
execution only via Selenium RC
|
Start
browser, run tests
|
Windows,
Linux, Mac
|
|
Opera
8
|
Test
execution only via Selenium RC
|
Start
browser, run tests
|
Windows,
Linux, Mac
|
|
Google
Chrome
|
Test
execution only via Selenium RC
|
Start
browser, run tests
|
Windows,
Linux, Mac
|
|
Others
|
Test
execution only via Selenium RC
|
Partial
support possible**
|
As
applicable
|
* Tests developed on Firefox via Selenium IDE can be executed on
any other supported browser via a simple Selenium RC command line.
** Selenium RC server can start any executable, but depending on
browser security settings there may be technical limitations that would limit
certain features.
Flexibility and Extensibility
You’ll find that Selenium is highly flexible. There are many ways
you can add functionality to both Selenium test scripts and Selenium’s
framework to customize your test automation. This is perhaps Selenium’s
greatest strength when compared with other automation tools. These
customizations are described in various places throughout this document. In
addition, since Selenium is Open Source, the sourcecode can always be
downloaded and modified.
Introduces Selenium IDE and
describes how to use it to build test scripts. using the Selenium Integrated
Development Environment. If you are not experienced in programming, but still
hoping to learn test automation this is where you should start and you’ll find
you can create quite a few automated tests with Selenium IDE. Also, if you are
experienced in programming, this chapter may still interest you in that you can
use Selenium IDE to do rapid prototyping of your tests. This section also
demonstrates how your test script can be “exported” to a programming language
for adding more advanced capabilities not supported by Selenium IDE.
Explains how to develop an
automated test program using Selenium 2.
Explains how to develop an
automated test program using the Selenium RC API. Many examples are presented
in both programming languages and scripting languages. Also, the installation and
setup of Selenium RC is covered here. The various modes, or configurations,
that Selenium RC supports are described, along with their trade-offs and
limitations. An architecture diagram is provided to help illustrate these
points. Solutions to common problems frequently difficult for new Sel-R users
are described here, for instance, handling Security Certificates, https
requests, pop-ups, and the opening of new windows.
This chapter presents
programming techniques for use with Selenium-WebDriver and Selenium RC. We also
demonstrate techniques commonly asked about in the user forum such as how to
design setup and teardown functions, how to implement data-driven tests (tests
where one can vary the data between test passes) and other methods of
programming common test automation tasks.
No comments:
Post a Comment