|
TelluriumCallForParticipation
What is TelluriumThe Tellurium Automated Testing Framework (Tellurium) is an automated testing framework for web applications. Tellurium grew up from the Selenium framework, but with a different testing concept. Starting from Tellurium 0.7.0, Tellurium added Tellurium Engine to replace the Selenium Core to better support Tellurium. Why Tellurium is NovelFor most existing web testing frameworks like Selenium, they mainly focus on individual UI elements as follows.
For example: selenium.click("//div[3]/input[@value='Create']");For Tellurium, we treated the whole UI elements as a widget and we call it a UI module.
We define the UI module as follows. ui.Form(uid: "Form", clocator: [tag: "form"]){
Div(uid: "User", clocator: [:]){
Selector(uid: "Sex", clocator: [:])
InputBox(uid: "Input", clocator: [tag: "input", type: "text", name: "j_username"])
}
Container(uid: "Finish", clocator: [tag: "tr"]){
SubmitButton(uid: "Submit", clocator: [tag: "input", type: "submit", value: "Login", name: "submit"])
}
}AdvantagesIf we think Selenium as the "C" language, Tellurium is like the "C++" language, which uses a different testing concept. There are couple advantages to describe the UI elements as a UI module. ExpressiveExpressive is obvious. For example, you can see clearly what the UI you are testing against. For the test code, you have DSL style test code such as: type "Form.User.Input", "John Fang" Robust to ChangesTest robust is always a big issue for Selenium. To solve this problem is one of the main motivations that Tellurium was created for. Tellurium uses UI attributes to describe UI instead of fixed locators. If we change the attributes, new runtime locators will be generated by the framework so that Tellurium can self-adapt to UI changes to some degree. The Santa algorithm in Tellurium new engine further improves the test robust by using UI partial matching. Represent Dynamic Web Content EasilyThe Tellurium UI templates are used to represent dynamic web content very easily. For example, Tellurium issue search result widget can be easily represented as follows. ui.Table(uid: "issueResult", clocator: [id: "resultstable", class: "results"], group: "true") {
//Define the header elements
UrlLink(uid: "{header: any} as ID", clocator: [text: "*ID"])
UrlLink(uid: "{header: any} as Type", clocator: [text: "*Type"])
UrlLink(uid: "{header: any} as Status", clocator: [text: "*Status"])
UrlLink(uid: "{header: any} as Priority", clocator: [text: "*Priority"])
UrlLink(uid: "{header: any} as Milestone", clocator: [text: "*Milestone"])
UrlLink(uid: "{header: any} as Owner", clocator: [text: "*Owner"])
UrlLink(uid: "{header: any} as Summary", clocator: [text: "*Summary + Labels"])
UrlLink(uid: "{header: any} as Extra", clocator: [text: "*..."])
//Define table body elements
//Column "Extra" are TextBoxs
TextBox(uid: "{row: all, column -> Extra}", clocator: [:])
//For the rest, they are UrlLinks
UrlLink(uid: "{row: all, column: all}", clocator: [:])
}Easy to MaintainTellurium emphasizes the decoupling of UI from test code. The structured test code makes Tellurium easier to maintain and refactor. Tellurium ProjectWe like to introduce the current status of the Tellurium project. HistoryTellurium was started in June 2007 as an internal project and became an open source project on Google Code in June 2008. We release on a regular basis and the latest release 0.7.0 will be out next month.
Team and CommunityTellurium Team consists of 4-5 active team members and couple more contributors. We have Tellurium user group and Tellurium developer group. Latest update information are available on http://twitter.com/TelluriumSource twitter. Tellurium also provides a community repository on GitHub so that anyone can fork Tellurium and contribute back to us. Tellurium wiki documents will be migrated to TelluriumSource.org, a domain owned by us. Tellurium Sub-projectsTellurium began as a small core project and quickly generated multiple sub-projects including: UDL, Core, Engine, Widget extensions, Maven Archetypes, and Trump sub-projects as shown in the following diagram.
How Tellurium WorksTellurium architecture is shown in the following diagram.
There are two major parts, i.e., the Tellurium Core, which does Java/Groovy object to runtime locator mapping, event handling, and command bundling. The Tellurium Engine is embedded inside the Selenium server and is a test driving engine for Tellurium. The two are connected by Selenium RC. Tellurium works in two mode. The first one is to work as a wrap of the Selenium framework.
That is to say, Tellurium core generates the runtime locator based on the attributes in a UI module and then pass the selenium calls to Selenium core with Tellurium extensions. Tellurium is evolving to its own test driving Engine and the work mode is different as shown in the following sequence diagram.
The Tellurium Core will convert the UI module into a JSON representation and pass it to Tellurium Engine for the first time when the UI module is used. The Tellurium Engine uses the Santa algorithm to locate the whole UI module and put it into a cache. For the sequent calls, the cached UI module will be used instead of locating them again. Another new features in Tellurium 0.7.0 is the Macro Command, which combine multiple commands into one batch and then send them to Tellurium engine in one call to reduce the round trip latency. For more new features in 0.7.0, please read What's New in Tellurium 0.7.0. Call for ParticipationDue to limited available resources in our Tellurium team, we need more people to join Tellurium community and more open source contributors to contribute to Tellurium to make it solid and a popular framework. Why Tellurium is Worthy for Your ContributionsFirst, Tellurium tackles the right problem for web automated testing, i.e., improve test robust and expressive and make tests easy to write and maintenance. Many users will be benefited by capabilities the framework provides. Second, Tellurium uses a set of very hot techniques such as Groovy for DSL, jQuery for Engine, Antlr 3 for UDL parser, and Maven for build. Third, Tellurium provides many interesting future directions as discussed in the next subsection. Tellurium Future DirectionsThere are couple very interesting future directions:
How can You Help USTellurium is still young and he needs your love, tender, and care. We welcome contributions in many different ways, for example,
As an open source contributor, you can contribute to Tellurium in two ways. First, you can fork Tellurium repository on GitHub and contribute back your bug fixes and new features. Please also join Tellurium developer group to discussion about any code changes to Tellurium. Alternatively, you can join Tellurium team and work as a core committer. To be a core committer, you must be active and have time to contribute to Tellurium on a regular basis. If you are interested, please contact Tellurium team (telluriumsource@gmail.com). Resources
|