Introduction
QTP, RFT, Selenium, and Webdrive are a few examples
of the many commercial tools and open source frameworks for automated testing of
web applications. Sahi, a tool that's gaining popularity in
the realm of automated testing. Sahi is an open source tool that provides: powerful
abilities for recording and replaying across browsers; different language drivers for
writing test scripts (Java, Ruby); and support for AJAX and highly dynamic web
applications. Sahi also supports secure http and NT LAN Manager authentications.
About Sahi
Sahi has several powerful features:
Sahi controller (IDE)
Works across browsers and records scripts in two modes:
Sahi or Java format.
Robust object identification
Is independent of HTML structure. Its intuitive APIs, such as near and in
method, can help locate browser elements even if the page has only a minor
change, eliminating the requirement of XPaths (which can be hard to
understand).
Implicit waits
Eliminates dealing with wait implementation, even for AJAX and page loads.
Testers don't need to know the internals of an application.
Installation and configuration
To install and configure Sahi:
1. Download the latest build and unzip the file. Sahi
requires Java 1.5 or later.
2. Start Sahi's proxy server. The startup scripts are in
<sahi_root>\userdata\bin.
- For Windows: start_dashboard.bat
- For Linux: start_dashboad.sh
3. Enter start_sahi.bat/start_sahi.sh, which is required for silentexecution with the assistance of build tools such as Ant.
Note: For Internet Explorer (IE) only, you have to manually configure the
browser to use Sahi's proxy. Or, you can use the tools provided by Sahi to
set the browser's proxy while starting the Sahi proxy server. The proxy
host and port are localhost:9999. (The port can be modified through
<sahi_root>\config\sahi.properties.)
Look At Sahi Dashboard
Recording scripts in Java format
Sahi provides two out-of-the-box script formats: Sahi and Java. You can modify the
default option, which is Sahi, in <sahi_root>\config\sahi.properties. The Sahi format
is a Java script-like format, running only within the Sahi Java script engine. The
example in this article uses the more common Java format because the scripts can
easily integrate with other testing tools and frameworks for large testing projects.
The Java format involves a common Java code snippet that can be integrated with
tools such as Junit and TestNG.
To run a brief test:
1. Open the web application that you want to test. Press the ALT key and
double-click on the page. (Firefox 3 was used for demonstration.)
2. Select Record, as shown in Figure:
SNAP - Controller for recording:
selection, it will change to the Stop button.
3. Do some operations in the web application, and then select Stop. All the
steps you executed in the application are recorded, as shown in Figure:
SNAP - Recorded scripts by controller:
your operations are recording, you can insert some assertions if you want.
The tools also provide some options for insertions, but it is suggested you
add them manually.
Integration with Junit
JUnit, the unit testing framework, is very important in establishing your test-driven
development. In many cases, you can create test scripts in Junit format for
convenience and reporting. The previous example recorded test scripts in Java
format.
Requirements:
1. Eclipse
2. Junit jar
3. Sahi Jar
When creating a junit4 format test script, you have to initiate some variables required for the Sahi
environment. The example in this article extends BaseTestCase.java so that all
others test cases can be executed by extending this class.
The demo4sahi class extends the BaseTestCase class to implement all initiating
tasks related to the Sahi proxy and then verifies two points:
• If the email format is OK, you will get OK.
• If the email format is incorrect, you will get Error.
Listing 1 shows a typical test script in Junit4 format
Code Snippet :
To run the test scripts unattended, you need to implement all initialization and
finalization for the Sahi runtime. There are four basic initialization parts, as outlined
in Table:
BaseTestCase, as the parent class of all test scripts, will invoke the createConn
method during runtime, ahead of all other methods, so it can open the browser to
simulate the user's operations. Listing 2 shows some of the code for
BaseTestCase.
Listing 2. BaseTestCase
Advanced topics
In web application testing, it's very important to effectively identify an object. Unlike
many other testing tools, Sahi has some powerful APIs to locate objects in a web
page. Table 2 outlines a few examples.
SUMMARY
This article has explored Sahi, a tool for automating web application testing. Sahi is
an open source tool that allows recording and replaying across browsers. In this
article, you learned about different language drivers for writing test scripts. A sample
application and test case showed how to format scripts for Junit and how to test with
Apache Ant. Sahi's advanced APIs were also outlined.