Difference between revisions of "Testing: Selenium: ZimbraSelenium Overview"

(Design)
Line 19: Line 19:
 
[http://en.wikipedia.org/wiki/Javadoc Javadoc] can be generated from the source code tree.  After building the software, run the "javadocs" target from ZimbraSelenium/build.xml.  A javadoc tree will be created in ZimbraSelenium/build/generated/javadocs.  Open index.html to view the javadocs.
 
[http://en.wikipedia.org/wiki/Javadoc Javadoc] can be generated from the source code tree.  After building the software, run the "javadocs" target from ZimbraSelenium/build.xml.  A javadoc tree will be created in ZimbraSelenium/build/generated/javadocs.  Open index.html to view the javadocs.
  
==Design==
+
==Project Layout==
  
 
===Project Structure===
 
===Project Structure===
Line 68: Line 68:
 
* projects.name.core: all non-test classes and non-ui classes are placed in the core package
 
* projects.name.core: all non-test classes and non-ui classes are placed in the core package
  
==Troubleshooting==
+
==Harness Design==
  
 +
===Business Logic===
 +
 +
The Selenium Harness is designed with a [http://en.wikipedia.org/wiki/Business_logic_layer Business Logic] layer that abstracts the GUI implementation from the Test Case [http://testng.org/doc/documentation-main.html#methods method].  With the abstraction layer, test case maintenance is reduced when the GUI implementation is changed.  For example, to compose a new mail, the test method code may look like:
 +
 +
 +
//// This is an example of a test method to compose a new mail
 +
 +
 +
// Create the application object
 +
Application app = new ZimbraAjaxClientApplication();
 +
 +
// Click the new button, get the compose page
 +
ComposePage compose = app.mailPage.toolbar(Button.NEW);
 +
 +
// Fill out the compose page
 +
compose.to = "foo@example.com";
 +
compose.subject = "itinerary";
 +
compose.body = "Meet me at the Zimbra Offices at 10:00 AM";
 +
 +
// Send the message
 +
compose.send();
 +
 +
 +
 +
The test case methods use general end-user steps - the 'business logic' that does not change in an email application.  The test case methods are not required to use any reference of the GUI implementation or selenium data (such as [http://release.seleniumhq.org/selenium-core/0.8.0/reference.html locators]).  The Application, ZimbraAjaxClientApplication, and ComposePage classes are defined in the test harness, and those classes contain the logic to drive the specified user actions.
 +
 +
For most basic test cases, it is suggested to use the test harness building blocks within the test methods.  However, a test method may be verifying a feature that is not defined in the test harness, and in those cases, the test methods should invoke lower level Selenium requests. 
 +
 +
===Test Method Structure===
 +
 +
Test methods normally use 3 steps:
 +
 +
# Data setup
 +
# GUI action
 +
# GUI or Data verification
 +
 +
In ''Data setup'', ...
 +
 +
In ''GUI action'', ...
 +
 +
In ''GUI or Data verification'', ...
 +
 +
 +
===Ajax Application Pages===
 +
 +
 +
====Login Page====
 +
 +
TBD
 +
 +
[[Image:ZimbraSeleniumProjectStructure.jpeg|thumb|right|200px|TBD]]
 +
 +
TBD
  
  

Revision as of 16:16, 17 November 2010

General Information

The Zimbra Selenium Harness is a system testing test harness for the Zimbra Web Clients. The Selenium harness uses Java, Selenium, and TestNG technologies to drive web client usage against the Zimbra server.

These Zimbra clients are tested by the Selenium Harness:

  • Ajax Client
  • HTML Client
  • Mobile Client
  • Admin Console
  • Desktop

Source Code

See Building ZimbraSelenium

Javadoc

Javadoc can be generated from the source code tree. After building the software, run the "javadocs" target from ZimbraSelenium/build.xml. A javadoc tree will be created in ZimbraSelenium/build/generated/javadocs. Open index.html to view the javadocs.

Project Layout

Project Structure

The following folders are located in the ZimbraSelenium java project.
Selenium Structure
  • conf: contains configuration files for how the harness executes
  • data: contains test data files, such as MIME files, ICS files.
  • jars: contains third party external jar files
  • src/bin: contains test scripts, such as perl scripts and shell scripts
  • src/java: contains java source code
  • build.xml: project ant build file

Java Structure

The following major packages are located in the ZimbraSelenium java project.

  • framework: basic java classes that apply to all testable clients
  • projects: java classes specific to the tested clients
  • staf: java classes that apply to integration with [STAF]

Framework

The framework package contains basic classes that apply to all testable clients.

"framework.core" contains the main execution method and Zimbra selenium classes.

"framework.items" contains classes that define basic Zimbra objects, such as Mail, Appointments, Contacts, Tasks, Tags, and Folders.

"framework.ui" contains abstract classes that define basic GUI objects, such as an Client Application, Application Page, Displayed Object, Form Object, Folder Tree Object.

"framework.util" contains utilities classes, such as injecting a MIME or creating a Zimbra Account.

Projects

Each web application is contained in a package in projects.

  • projects.admin: java classes specific to the Admin Console
  • projects.ajax: java classes specific to the Ajax client
  • projects.html: java classes specific to the HTML client
  • projects.mobile: java classes specific to the Mobile client
  • projects.desktop: java classes specific to the Desktop client

Each project contains 3 sub-packages:

  • projects.name.tests: all TestNG test classes are placed in "tests". Classes are further separated by functional areas within the package.
  • projects.name.ui: all abstract classes from "framework.ui" are placed in "ui".
  • projects.name.core: all non-test classes and non-ui classes are placed in the core package

Harness Design

Business Logic

The Selenium Harness is designed with a Business Logic layer that abstracts the GUI implementation from the Test Case method. With the abstraction layer, test case maintenance is reduced when the GUI implementation is changed. For example, to compose a new mail, the test method code may look like:


//// This is an example of a test method to compose a new mail


// Create the application object
Application app = new ZimbraAjaxClientApplication();

// Click the new button, get the compose page
ComposePage compose = app.mailPage.toolbar(Button.NEW);

// Fill out the compose page
compose.to = "foo@example.com";
compose.subject = "itinerary";
compose.body = "Meet me at the Zimbra Offices at 10:00 AM";

// Send the message
compose.send();


The test case methods use general end-user steps - the 'business logic' that does not change in an email application. The test case methods are not required to use any reference of the GUI implementation or selenium data (such as locators). The Application, ZimbraAjaxClientApplication, and ComposePage classes are defined in the test harness, and those classes contain the logic to drive the specified user actions.

For most basic test cases, it is suggested to use the test harness building blocks within the test methods. However, a test method may be verifying a feature that is not defined in the test harness, and in those cases, the test methods should invoke lower level Selenium requests.

Test Method Structure

Test methods normally use 3 steps:

  1. Data setup
  2. GUI action
  3. GUI or Data verification

In Data setup, ...

In GUI action, ...

In GUI or Data verification, ...


Ajax Application Pages

Login Page

TBD

TBD

TBD


Verified Against: unknown Date Created: 11/7/2007
Article ID: https://wiki.zimbra.com/index.php?title=Testing:_Selenium:_ZimbraSelenium_Overview Date Modified: 2010-11-17



Try Zimbra

Try Zimbra Collaboration with a 60-day free trial.
Get it now »

Want to get involved?

You can contribute in the Community, Wiki, Code, or development of Zimlets.
Find out more. »

Looking for a Video?

Visit our YouTube channel to get the latest webinars, technology news, product overviews, and so much more.
Go to the YouTube channel »

Jump to: navigation, search