Tellurium Core 0.5.0 and the reference projects are available now

Tellurium is a UI module based web automated testing framework. The UI module is a collection of UI elements you group together. Usually, the UI module represents a composite UI object in the format of nested basic UI elements. The UI module makes it possible to build UI elements' locators at runtime. Thus, Tellurium does object to locator mapping (OLM) automatically at run time so that you can define UI objects simply by their attributes and write your selenium tests just like writing JUnit tests. The framework also uses the Group Locating Concept (GLC) to exploit information inside a collection of UI components to help finding their locators, Tellurium is more robust, flexible, modularized, easier to maintain and refactor compared with the locator-based Selenium testing framework.

The Tellurium framework is written in Groovy and Java, it is built on top of Selenium at the current stage. The test cases can be written in Java, Groovy, or pure DSL.

The following are the main features for Tellurium:

1) Tellurium is not a "record and replay" style testing framework, but UI module based. That is to say, you should define your UI module first. Based on your UI module, you can write as many tests as you like just like writing JUnit tests. Tellurium also makes it possible for users to write Tellurium tests when they start coding.

2) Tellurium has a very expressive way to define UiIModules and write tests. For example, in Selenium you have to write the following contrived expressions (take Google start page as an example):

selenium.type("//input[@title='Google Search']", input)
selenium.click(""//input[@name='btnG' and @type='submit']")

In Tellurium, you can define the UI module as:

ui.Container(uid: "google_start_page", clocator: [tag: "td"], group: "true"){
InputBox(uid: "searchbox", clocator: [title: "Google Search"])
SubmitButton(uid: "googlesearch", clocator: [name: "btnG", value: "Google Search"])
}

Then in your tests, you simple use

type "google_start_page.searchbox", input
click "google_start_page.googlesearch"

3) Tellurium is compatible with Selenium's locators, you can still use XPath like "//input[@title='Google Search']" in your UI module, but Tellurium provides you additional advantage to use "google_start_page.searchbox" style syntax to refer to the UI object instead of putting the XPath expressions everywhere.

4) Tellurium recommends you to use composite locator, i.e., use UI object attributes instead of XPath to define the UI. For example, in the above example, you specify an InputBox object with its attribute "title" to be "Google Search". Once you define UI attributes, Tellurium will automatically create the runtime locator for you. In this way, the UI module matches better with your UI markup languages such as JSP and ASP.

5) Tellurium exploits the "Group Locating" concept to treat a group of UI Objects as a whole instead of individual ones. In the above example, by specifying the "group" attribute to be "true", Tellurium will try to locate the UI objects in the DOM using all information from the Container, InputBox, and SubmitButton. This can help a lot to find the UI locators. For most case, the information inside the group of UI objects is enough to locate all of them. That is to say, your UI module only depends on attributes inside of itself, not any UI outside. As a result, make it not sensitive to changes of outside UIs and very robust.

6) Tellurium provides many predefined UI objects for you to use directly, such as Button, CheckBox, InputBox, Selector, TextBox, and Table. In the meanwhile, it also provides you the capability to write your own custom UI objects. Furthermore, Tellurium provides you a set of predefined widget objects for the Dojo Javascript framework.

7) Tellurium provides UI templates so that you can use one template to represent many identical UI elements or variable/dynamic size of UI elements at runtime. 

8) Tellurium supports Domain Specific Language (DSL) for Web testing and you can even write all your tests in pure DSL scripts.

9) Tellurium comes with the "Data Driven Testing" feature so that you can use an input file to drive your predefined tests. One such example file is listed as follows:

##Data for test "checkBookList"
##TEST | CATEGORY | SIZE
checkBookList|Fiction|8
checkBookList|Fiction|3

##Data for test "getGCHStatus"
##TEST | LABEL | Row Number | Column Number
getGCHStatus |Example project labels:| 3 | 6
getGCHStatus |Example project| 3 | 6

Where the TEST column defines your test name and the rest columns are either input data or expected results. Tellurium automatically binds the input data to variables defined in your test script and run the tests you specified in the input file. The test results will be recorded by a test listener and output in different formats, for example, an XML file.

From version 0.5.0, Tellurium is split into multiple subprojects including Core, JUnit reference, TestNG reference, Dojo Widget, and TrUMP (a firefox plugin to automatically generate UI modules). Tellurium Core 0.5.0 and the two reference projects were released on Dec 3rd and are available now. The main new features in Tellurium Core 0.5.0 include

  1. Add CSV format for Data Driven Testing
  2. Add Support for Window and Frame
  3. Add UI Object attribute "respond" for Javascript events
  4. Add capturing screen option when error happens
  5. Bug fixes and enhancements
  6. Add Maven support

In the reference projects, we use the Tellurium project web site as an example to illustrate how to write real-world Tellurium tests. The two sub-projects are tellurium-junit-java and tellurium-testng-java and they are almost the same. The only difference is that tellurium-junit-java uses JUnit 4 and tellurium-testng-java uses TestNG. The reference projects illustrate the following usages of Tellurium:

  1. How to create your own Tellurium testing project using tellurium jar files.
  2. How to create your own UI Objects and wire them into Tellurium core
  3. How to create UI module files in Groovy
  4. How to create JUnit/TestNG tellurium testing files in Java
  5. How to create and run DSL scripts
  6. How to create Tellurium Data Driven tests
  7. How to configure Tellurium with the configuration file TelluriumConfig.groovy

Please go to Tellurium project site to download the latest artifacts
http://code.google.com/p/aost/downloads/list

If you have any problems, questions or comments, please post them on Tellurium user group at
http://groups.google.com/group/tellurium-users

Thanks,
Tellurium Team

Location: 
http://code.google.com/p/aost/
0

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

john.jian.fang replied on Fri, 2008/12/05 - 2:13pm

The Guide for the Reference Project is here:

http://code.google.com/p/aost/wiki/ReferenceProjectGuide

Other resource such as introduction, tutorial, FAQ, and user guide are here:

http://code.google.com/p/aost/w/list

 

Thanks,

Jian

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.