In this article, we are going to discuss
the basics of Automation Testing, its benefits, Different components of
selenium web-driver and Selenium architecture.
What is Automation Testing?
Test Automation or Automation testing or is
a process of automating the manual process to test the application/system under
test. Automation testing involves use to a separate testing tool which lets you
create test scripts that can be executed repeatedly and doesn’t require any
manual intervention.
Benefits of Automation Testing
1. Supports execution of repeated test
cases
2. Aids in testing a large test
matrix
3. Enables parallel execution
4. Encourages unattended execution
5. Improves accuracy thereby reducing
human-generated errors
6. Saves time and money
What is Selenium
Selenium is one of the most popular
automated testing suites. Selenium is designed in a way to support and
encourage automation testing of functional aspects of web-based applications
and a wide range of browsers and platforms. Due to its existence in the
open-source community, it has become one of the most accepted tools amongst the
testing professionals.
Different components of Selenium
Selenium is not just a single tool or a
utility, rather a package of several testing tools and for the same reason, it
is referred to as a Suite. Each of these tools is designed to cater to different
testing and test environment requirements.
The suite package constitutes of the
following sets of tools:
Selenium Integrated Development
Environment (IDE) – Selenium IDE is a record and playback tool. It is distributed
as a Firefox Plugin.
Selenium Remote Control (RC) – Selenium RC is a server that
allows the user to create test scripts in the desired programming language. It
also allows executing test scripts within the large spectrum of browsers.
Selenium WebDriver – WebDriver is a different tool
altogether that has various advantages over Selenium RC. WebDriver directly
communicates with the web browser and uses its native compatibility to
automate.
Selenium Grid – Selenium Grid is used to distribute your test execution
on multiple platforms and environments concurrently.
Few of the major differences between all
these Selenium RC, Webdriver and Selenium Grid are:
Feature
|
Selenium
IDE
|
Selenium
RC
|
WebDriver
|
Browser
Compatibility
|
Selenium
IDE comes as a Firefox plugin; thus it supports only Firefox
|
Selenium
RC supports a varied range of versions of Mozilla Firefox, Google Chrome,
Internet Explorer and Opera
|
WebDriver
supports a varied range of versions of Mozilla Firefox, Google Chrome,
Internet Explorer and Opera. It also supports HtmlUnitDriver which is a GUI less or headless browser.
|
Record
and Playback
|
Selenium
IDE supports record and playback feature
|
Selenium
RC doesn't support record and playback feature
|
WebDriver
doesn't support record and playback feature
|
Server
Requirement
|
Selenium
IDE doesn't require any server to be started before executing the test script.
|
Selenium
RC requires the server to be started before executing the test scripts.
|
WebDriver
doesn't require any server to be started before executing the test scripts.
|
Architecture
|
Selenium
IDE is a Javascript-based framework
|
Selenium
RC is a JavaScript-based Framework
|
WebDriver
uses the browser's native compatibility with automation.
|
Object
Oriented
|
Selenium
IDE is not an object-oriented tool
|
Selenium
RC is semi object-oriented tool
|
WebDriver
is a purely object-oriented tool.
|
Dynamic
Finders (for locating web elements on a webpage)
|
Selenium
IDE doesn't support dynamic finders
|
Selenium
RC doesn't support dynamic finders
|
WebDriver
supports dynamic finders
|
Handling
Alerts, Navigations, Dropdowns
|
Selenium
IDE doesn't explicitly provide aids to handle alerts, navigations, dropdowns
|
Selenium
RC doesn't explicitly provide aids to handle alerts, navigations, dropdowns
|
WebDriver
offers a wide range of utilities and classes that helps in handling alerts,
navigations, and dropdowns efficiently and effectively.
|
WAP
(iPhone/Android) Testing
|
Selenium
IDE doesn't support testing of iPhone/Andriod applications
|
Selenium
RC doesn't support testing of iPhone/Andriod applications
|
WebDriver
is designed in a way to efficiently support testing of iPhone/Android
applications. The tool comes with a large range of drivers for WAP-based testing. For example, AndroidDriver, iPhoneDriver.
|
Listener
Support
|
Selenium
IDE doesn't support listeners
|
Selenium
RC doesn't support listeners
|
WebDriver
supports the implementation of Listeners.
|
Speed
|
Selenium
IDE is fast as it is plugged in with the web-browser that launches the test.
Thus, the IDE and browser communicates directly
|
Selenium
RC is slower than WebDriver as it doesn't communicate directly with the
browser; rather it sends selenese commands over to Selenium Core which in
turn communicates with the browser.
|
WebDriver
communicates directly with web browsers. Thus, making it much faster.
|
On a high
level we can say selenium Web-driver architecture consists of these four
layers:
1. Language binding:
To provide the
support for multiple programming languages multiple language binding has been
created like Java, Python, Ruby, etc.
2. Selenium Web driver:
2. Selenium Web driver:
To communicate
between multiple programming languages and browsers, Selenium web-driver API is
used. It follows all the OOPS concepts like inheritance, Polymorphism, etc.
3. Browser drivers:
3. Browser drivers:
Browser driver
is used to communicate with the browser without showing the internal
functionality or logic of the browser.
4. Browsers:
4. Browsers:
Selenium
supports multiple browsers such as Firefox, Chrome, IE, Safari, etc.
To understand architecture
in simple terms
รผ Whenever we execute a certain piece of code every statement in
the code will be converted into a URL with the help of selenium web-driver API.
รผ This URL then will be passed over to the browser driver.
รผ The client library like java, C# will convert the statements
into JSON format and further communicate with the web browser.
Thanks Ankur,
Reply