2. Agenda
• What is Automation Testing?
• Getting Familiar with ‘Selenium’.
• Selenese – Heart Of Selenium
• Digging Into Selenium Components.
• Record with Selenium IDE
• Code with Selenium RC.
• Integrate with Junit Framework – A Visual delight!
• Scale with Selenium Grid
• Myths and Realities
• Where are we heading To??
• Open House!!
4. The Testing Process: Automation
Testing & Manual Testing!!
• Manual Testing – is • Automation testing - is
defined as developing defined as developing
and executing tests that and executing tests that
rely primarily on direct can run unattended,
human interaction comparing the actual to
throughout the entire test expected results and
case, especially in terms logging status.
of evaluating correctness
and ascertaining test
status.
5. Win-Win With Automation!
• Virtually unlimited iterations of test case
execution.
• Reduces effort spent in regressing old features.
• Emulate exact user behaviors thus verifies an
end to end business process. This gives us
more confidence in the quality of the
application.
• Catch Regressions in frequently changing code
and mainstream scenarios.
• Aids in testing a large test matrix.
• Disciplined documentation of test cases.
6. Some Myths n Realities About
Test Automation!!
• Myth: Automation replaces testers.
Reality: Manual Testing can never be eliminated.
• Myth: Automation training is a lengthy process.
Reality: Learning curve can be reduced by
following a correct methodology..
• Myth: Automation tool is difficult to use.
Reality: With adequate training the testers can be
easily migrated to any new testing tool.
• Myth: A single tester can easily perform a dual role
of manual and automation.
Reality: A set of resources dedicated only to test
automation is imperative for avoiding dilemma
situations.
8. Selenium...
• Is a suite of tools to automate web application testing.
• Tests run directly in a browser, just as real users do.
• Works by simulating user actions such as mouse clicks
and key presses.
• Runs in many browsers and operating systems.
• Can be controlled by many programming languages and
testing frameworks.
9. Selenium Tests..
• Browser compatibility testing.
– Test your application to see if it works correctly on
different browsers and operating systems. The same
script can run on any supported Selenium platform.
• System functional testing.
– Create regression tests to verify application
functionality and user acceptance.
10. Selenese – Heart of Selenium!
• Selenium commands, aka selenese, are the set of commands that run your
tests.
• Selenese commands consists of':
• Actions
• Accessors
• Assertions
• Element Locators
• Patterns
• Each command call is one line in the test table of the form:
11. Selenese Components – Actions!
• Actions are commands that generally manipulate the state of the
application. They do things like "click this link" and "select that
option". If an Action fails, or has an error, the execution of the current
test is stopped. Examples of Actions include:
• check - check a checkbox
• click - click a link, button, image, etc
• open - opens a URL in the browser
• select - selects a value from a drop-down
• submit - submits a form
• type - types a value in to a textfield/textarea
12. Selenese Component – Assertions!
• Assertions verify that the state of the application
conforms to what is expected.
• All Selenium Assertions can be used in 3 modes: "assert",
"verify", and "waitFor“.
• Examples include "make sure the page title is X" and
"verify that this checkbox is checked".
• assertTrue, assertEquals, waitForPageToLoad,
verifyTextPresent.
13. Selenium Component – Element Locators!
• Element Locators tell Selenium which HTML element a command
refers to.
• Many commands require an Element Locator as the "target" attribute.
• Element Locators primarily fall under 3 categories: identifier, dom,
xpath.
• Examples:
– Identifier: sel.type(“<textFieldId>”, “Enter Some Text”);
– Dom: sel.select(“document.forms['myForm'].myDropdown”,
“label=Select This Item”);
– XPATH: sel.click(“//img[@alt='The image alt text'] “);
14. Selenese Component – Patterns!
• Patterns are used for various reasons, e.g. to
specify the expected value of an input field, or
identify a select option.
• Selenium supports various types of patterns.
• Examples of Patterns include glob, regexp, exact.
15. Selenium IDE Selenium RC
Flavors Of Selenium!
Selenium Grid
17. Selenium IDE – The Recording
Tool!
• Selenium-IDE is the Integrated Development Environment for
building Selenium test cases.
• Firefox plug-in that helps with recording Selenium scripts. Keeps
account of user actions as they are performed and stores them as a
reusable script to play back.
• Recorded script are shown in easily readable table format in IDE.
• Key feature: Record
Traces what the user does
Identifies clicks, key selections
Generates script to re-enact what is recorded
19. IDE Striking features
Record, edit, and debug tests.
Intelligent field selection uses IDs, names, or XPath as needed.
Uses Base URL to Run Test Cases in Different Domains.
Can export tests in HTML, Java, Ruby, and more.
Execute Selenium-IDE Tests on Different Browsers using
Selenium RC.
20. What IDE Does Not Have?
• Selenium-IDE is a Firefox only add-on. Dependency on Selenium RC to run
against other browsers.
• Scripts written using IDE follow a linear execution and lack any
programming logic.
• Difficulty in automating scenarios like:
– Performing search multiple times (iteration logic).
– Data Driven Testing (read different data set from external files each time).
– Handling for unexpected behaviors like element not found (Error Handling)
– Registration process where in registered email address is to be retrieved from
database. (Database Interactins)
22. Selenium RC – The Code
Master!
• Selenium Remote Control (RC) is :
a test tool that allows you to write automated web application UI tests
in any high level programming language
against any HTTP website
using any mainstream JavaScript-enabled browser.
• While leveraging the full power of programming languages
(iterations, conditional logic, error recovery), the tests can be written
for virtually anything like read and write external files, make queries
to a database, send emails with test reports and so on..
24. RC Component - Selenium
• Same Origin Policy: A site’s content can never be accessible by a script from other site. This policy
Server
implies that Selenium Core (JavaScript program, a set of JavaScript functions, which interprets and
executes Selenium commands using the browser’s built-in JavaScript interpreter) must be placed in
the same origin as the AUT i.e. the same url.
• Selenium RC Server is an alternative to allow testers to use Selenium to test sites without deploying
their JS code. Hence is a solution to XSS (Cross Site Scripting and security concerns).
• The Selenium Server acts as a client-configured HTTP proxy, that stands in between the browser
and the AUT:
– Client Configured: The client browser is launched with a configuration profile that has set
localhost:4444 as HTTP proxy such that any HTTP request/response will pass through the
Selenium Server.
– HTTP Proxy: Acts as a web server that delivers the AUT to the browser. Being a proxy gives it
the ability to mask the whole AUT under a fictional URL (embedding Selenium Core and its
Java Script tests, delivering them as if they are coming from the same origin.)
25. RC Component - Client Libraries!
• A Selenium client library provides a programming interface, i.e., a set
of functions, which run Selenium commands from your program.
• It takes a Selenium command and passes it to the Selenium Server for
processing a specific action or test against the AUT.
• It then receives the result of that command and passes it back to the
test program.
• Selenium-IDE can directly translate its Selenium commands into a
client-driver’s API function calls.
• Client libraries are available in all of: HTML, Java, C#, Perl, PHP,
Python, and Ruby.
27. What happens When A Test Runs (II)
• The client/driver establishes a connection with the selenium-RC server.
• Selenium-RC server launches a browser with an URL that will load Selenium-Core in
the web page.
• Selenium-Core gets the first instruction from the client/driver (via another HTTP
request made to the Selenium-RC Server).
• Selenium-Core acts on that first instruction, typically opening a page of the AUT.
• The browser receives the open request and asks for the website’s content to the
Selenium-RC server (set as the HTTP proxy for the browser to use).
• Selenium-RC server communicates with the Web server asking for the page and once
it receives it, it sends the page to the browser masking the origin to look like the page
comes from the same server as Selenium-Core (this allows Selenium-Core to comply
with the Same Origin Policy).
• The browser receives the web page and renders it in the window reserved for it.
28. Integrate With JUNIT Framework -
Lets See Ourselves!
• Once you’ve chosen a language to work with, you
simply need to:
Install the Selenium-RC Server.
Set up a programming project using a language
specific client driver.
• Here we rely on Java’s JUNIT framework to see it
all working.
31. Issues With Selenium RC??
• The Selenium remote control is quite slow at driving
the browser.
• You can only run a limited number of concurrent tests
on the same remote control before seriously impacting
its stability.
• Automation of pages involving AJAX is tedious.
• XPATH heavy, sensitive to design change.
33. Selenium Grid – Scale It Up!
• Run your tests in parallel heterogeneous
environments.
• Dramatically speeds up end-to-end web testing.
• Distribute your tests on multiple machines.