首页 / 软件开发 / JAVA / Tellurium自动化测试框架介绍
Tellurium自动化测试框架介绍2010-12-30 infoq 张凯峰译Tellurium自动化测试框架是由方剑在2007年6月创建的用于测试Web应用的框架,并在2008年6月移步到Google Code成为一个开源项目。它会定期发布版本,当前版本号是0.7.0。项目的核心已经历时两年,并繁衍出了多个子项目,包括:UDL、Core、Engine、Widget扩展、 Maven Archetype、Trump、Tellurium IDE、TelluriumWorks以及参考项目。这个框架是从Selenium框架发展而来,但又具有不同的测试理念。大多数Web测试框架,比如Selenium,主要致力于单独的UI元素。而Tellurium恰好相反,它把多个UI元素看作一个Widget整体,并将其称作UI module。拿Google搜索的UI做个例子,这个界面用Tellurium表示成如下这样:ui.Container(uid: "GoogleSearchModule",clocator: [tag: "td"]){
InputBox(uid: "Input",clocator: [title: "Google Search"])
SubmitButton(uid: "Search",clocator: [name: "btnG",value: "Google
Search"])
SubmitButton(uid: "ImFeelingLucky",clocator: [value: "I"m Feeling
Lucky"])
}正如你在例子中看到的,UI module是嵌套的UI元素、tag以及attribute的集合。Tellurium在采用了UI module之后,更具表述性,对变化的响应也更加智能化。同时它也可以很容易地表示动态Web内容,并易于维护。这个框架由以下组件组成:Trump——一个Firefox插件,全称是Tellurium UI Module Plugin,它可以在用户选择待测Web页面上的UI元素后,自动生成UI module。Tellurium IDE——另外一个Firefox插件,可以记录用户操作,并生成Tellurium测试脚本,包括UI module的定义、用户的动作以及断言。测试脚本是用Groovy写成的。TelluriumWorks——一个单独的Java Swing应用,用于编辑和运行Tellurium测试脚本。另外还在开发一个针对IntelliJ IDEA的IDE插件。JavaScript Widget Extensions——针对流行JavaScript框架的扩展,比如Dojo和jQuery UI。这样用户就可以在项目中引用发布的Tellurium jar文件,并在UI module定义中,把UI widget当作一个普通的Tellurium对象。特性主要特性包括:UI module清楚地表示了待测的UI。在Tellurium的测试代码中,并没有直接使用定位器(locator)。而是使用uid对象来引用UI元素,从而更具表现力。比如:type "GoogleSearchModule.Input","Tellurium test"
click "GoogleSearchModule.Search"使用UI属性而不是固定的定位器来描述UI。实际的定位器将会在运行时生成。如果属性改变了,新的运行时定位器也会由框架自动重新生成。Tellurium从而可以按需自适应UI的变化。Tellurium 0.7.0中的Santa算法通过一次定位整个的UI module,从而进一步提高测试的智能性。此外还使用了UI module部分匹配机制,在一定程度上适应属性的变化。采用了Tellurium UI模板和Tellurium UID描述语言(UDL)来表示动态的web内容。框架实行UI module和测试代码的分离,从而有利于重构。比如,UI和对应的测试方法定义在分离的Groovy类中。这样,测试代码就和UI module解耦了。另外该框架还:使用抽象的UI对象来封装Web UI元素支持Widget以实现可重用性为UI定义、动作和测试提供一门DSL支持组定位,从而一次定位一组UI组件包括CSS选择器支持,以改善在IE中的测试速度提供定位器缓存和命令集来提高测试速度支持数据驱动测试