快捷搜索:

开源自动测试框架Tellurium的使用

Tellurium自动测试框架是一款针对web利用、基于UI模块的自动测试平台。UI模块是由一组复合的UI工具以嵌套的形式组成,比如,Google的搜索UI模块可以表示成:

ui.Container(uid: "GoogleSearchModule", clocator: [tag: "td"], group: "true"){

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"])

}

Tellurium框架还定义了一套全新的领域特定说话来进行web测试,比如对付Google搜索模块,你可以应用下面的DSL来完成一次搜索测试:

type "GoogleSearchModule.Input", "Tellurium test"

click "GoogleSearchModule.Search"

waitForPageToLoad 30000

今朝Tellurium已经宣布0.6.0版本,InfoQ中文站就Tellurium的方方面面,特地邮件采访了Tellurium的开创人方剑老师:

1、请先容一下您自己,以及所从事的事情?

我的名字是方剑,曾经在上海读书和事情多年。2000年在美国佐治亚理工(Georgia Institute ofTechnology)肄业。卒业后在一家美国公司做软件开拓事情,从事企业级利用(EnterpriseApplications)开拓,主要认真办事器端框架的设计和开拓,商业利用办事(Business Services)的开拓,和一些软件规范的拟订。此外,我还有很强的人工智能和谋略机收集方面的钻研背景。 2、您开始做Tellurium这样一个自动化测试框架,是基于如何的斟酌呢?我看到有特色的两点是应用UI module-based这样的描述块来定义待测的UI,以及应用DSL来表述测试代码,还有哪些与以往框架不合的设计思惟,缘起是什么呢?

在2007年,我们公司开始留意到Selenium测试框架。因为我们用敏捷开拓措施(Agiledevelopment),在Scrum步队中,每小我的角色开始变得多样性了。我有个事情(Task)便是用Selenium去测试我们的一个利用法度榜样(是用Dojo Javascript框架写的)。应该说在当时,Selenium是一个创始性的框架,假如用他们的复制和重播模式(recordandreplay)很轻易孕育发生测试脚本。但一旦我开始用Selenium,我发明它照样有一些毛病和不便之处。主要测试脚本是对代码的更新很脆弱(Fragile)。 然则在一个敏捷开拓的情况下,一样平常都有阶段性的用户吸收测试(User AcceptanceTest),因为法度榜样不停更新,Selenium测试脚本的掩护就变成一个很头痛的问题。而且,对付很多企业级利用,复制和重播模式本身就不太适用,比喻我们有很多半据格(DataGrid),它的内容本身便是动态的。其他的问题包括Selenium测试脚本不是布局化的,你可以看到处有XPath,这更增添了掩护的艰苦。是以,我们抉择开拓一个在Selenium之上的框架来办理这些问题。我做的第一个版本是经由过程Spring框架和物体工厂(ObjectFactory)来孕育发生UI元素(Element),使得框架能把UI元素的表达和测试代码分开,自动处置惩罚Javascript事故,并在必然程度上能处置惩罚动态网页内容。

因为这个框架用XML来设置设置设备摆设摆设UI元素,应用起来并不是很方便。在2008年,我用Groovy重写了全部框架并变成一个开源项目(opensource project)。新的版本主要有三个大年夜的改变。首先是采纳UIModule(UI模块)描述块来定义待测的UI。这样做的好处是系统自动天生运行时的Locator,纵然你改变了此中的一些元素,框架本身会临盆新的Locator来适应这种改变。而且框架偏重一个聚拢的元素,而不是单个元素,这样使得我们可以使用元素之间的关系来赞助我们定位他们在DOM中的位置。此外,这样也增添了重用性,比如,我们可以定义一些TelluriumWidget,在你的测试代码中可以直接定义这个Widget,而不必要从新定义一个个的单个元素。第二个大年夜的变更是用DSL来写测试代码。这样增添了表达性使得用户很轻易写和掩护测试代码。Tellurium测试代码可以用Java, Groovy,或纯DSL脚原先写。Tellurium本身也支持JUnit和TestNG测试框架。另一个大年夜的变更是开始用UI模板(UItemplates)来表述动态网页内容,例如数据格(Data Grid)。这样使得Ajax利用法度榜样的测试变得可行和轻易。 3、 Tellurium主要有那些子项目构成?

Tellurium主如果由Tellurium Core, Tellurium Engine, TelluriumWidget Extensions, 和Tellurium UI Module Plugin(TrUMP)子项目构成。TelluriumCore主如果处置惩罚DSL和动态天生Locator. Tellurium Engine是测试驱动模块,今朝照样使用Selenium Core.Tellurium Widget Extensions包括一些DOJO和ExtJSJavascript框架的可重用Widget模块。这些Widget被编译成一个jar文件方便用户调用。TrUMP是一个Firefoxplugin来自动天生UI Module。

别的,Tellurium还供给两个参考子项目(Reference Projects),分手为JUnit和TestNG项目,来给用户示范若何创建Tellurium测试项目和若何应用Tellurium的各类功能。

除此之外,Tellurium还供给了Tellurium Maven Archetypes,使得用户可以用一个Maven敕令就可以创建自己的Tellurium测试项目。 4、先容一下Tellurium的代码供献者们吧?

我主如果认真Tellurium的整体设计和很大年夜一部分的代码编程。除我之外,现在还有四个来自美国和英国的队友(teammembers)。Vivek Mongolu主要认真TrUMP的UI设计和实现。MattSenter主要认真Maven支持,包括代码的编译,宣布,和Maven Repository的掩护。HaroonRasheed参加了Tellurium参考项目(Tellurium Reference Projects)的开拓,SeleniumGrid的支持和其他的掩护事情。MikhailKoryak参于了TrUMP的开拓事情,他是jQuery方面的专家,认真Tellurium的jQuery支持。现在介入TelluriumEngine的开拓。 5、你懂得在自动化测试对象这个领域,有着哪些和Tellurium类似的竞争对手吗?比如ThoughtWorks的Twist?与它们比拟,Tellurium的上风在什么地方?有什么劣势吗?

Tellurium脱胎于Selenium,它的主要竞争对手照样Selenium,终究Selenium已经推广好几年了。要用户用一个新的框架是要花必然的光阴的。此外CanooWebTest也是一个对照盛行的网页测试框架(Framework)。然则Tellurium照样有它本身的上风的,如UIModule的观点,鲁棒性好,可重用性好,表达性好(Expressiveness)。用Tellurium写的测试代码的布局性好,对照轻易掩护。

终究Tellurium照样一个新的框架,到现在只有一年多的开拓光阴。有些特色还有待成熟。此外,Tellurium要用到Groovy动态说话,只管用户并不必然必要懂得Groovy才可用Tellurium,但因为Groovy比拟较较新,以是不少人照样有疑豫的。

ThoughtWorks的Twist基础上是Selenium + GSpec, 便是在Selenium之上增添了行径测试(BehaviorDrivenTest)的DSL。着实我很早就斟酌到对行径测试的支持,但精力有限,Tellurium今朝还没有这方面的实现。将来会增添的,可以和EasyB框架结合来支持行径测试,或直接实现对行径测试的支持。 6、现在Tellurium的利用环境是如何的?来自应用者的应声若何?

现在已经有不少Tellurium用户,主要来自美国,印度和欧洲。因为Tellurium本身的特色,如易用,可掩护性好,新的功能如对jQuerySelector的支持,应用者的反映还不错。以致有的用户在自己的公司里给同事作Tellurium的培训。当然,Tellurium还很年青,而且前一段光阴因为举世性经济危急的影响,我们对Tellurium的推广还做得很不敷。今后会加大年夜对Tellurium的推广。7、Tellurium在社区采纳了哪些要领和开拓者们进行交互呢?

我们有自己的用户组Tellurium user group,用户提出问题每每能很快地获得解答。我们也有LinkedIn用户组让用户之间能更好地交流。此外我们还鼓励用户参加Tellurium的设计评论争论和推广。我们会每年从用户中推荐出一个最生动用户(most active user)和一个最有代价用户(most valuableuser)。Tellurium将来会设推广队(EvangelismTeam),假如某人对Tellurium做了很多推广事情,他/她也可以成为Tellurium正式成员(team member)。8、Tellurium未来的成长有如何的筹划吗?有计划推出中文的社区及文档吗?

只管Tellurium和Selenium在观点上有很大年夜的不合,不停到Tellurium 0.6.0,我们照样依附Selenium Core作为底层的测试驱动Engine. Tellurium0.7.0将成为Tellurium成长史上的一个紧张里程碑,我们将开拓自己的测试驱动Engine使得Tellurium能更好,更有效地支持UIModule,同时可以进行UI Module的缓存(Caching)以增添其可用性和前进测试速率。并可对UIModule进行部分匹配以增添其鲁棒性。在新的Tellurium Engine的支持下,Telluriumwidget将变得更轻易,更实用,和更有效。其他的成长筹划包括TrUMP的改进,行径测试(Behavior DrivenTest)的支持,功能测试(functional test)的增强支持, 和IDE的支持。

终究我来自中国,当然盼望获得更多的来自自己国家的用户的介入和支持。现在我们已经开通中文社区和文档项目,会有相关的中文文档徐徐添加进来,我们也热烈迎接更多海内的开拓者能加入进来,赞助支持和推广Tellurium,感谢。 9、能给海内的用户一个快速的开始吗?怎么立即感想熏染到Tellurium带来的好处?

我们供给了一份中文版的Tellurium QuickStart,还有一个短小的演示:十分钟感想熏染Tellurium(10minutes to Tellurium)。它包括使用Tellurium Mavenarchetype去建立一个新的Tellurium测试项目,再用 Tellurium Firefox pluginTrUMP去自动天生一个UI Module,然后再写自己的Tellurium测试代码。

假如用户不认识Maven, 他可以下载Tellurium参考项目(Tellurium Reference Project)。这个项目是我们用来测试Tellurium项目网页的。包括了各类例子,可以直接运行。 更多有关Tellurium的信息,请参考DZone上的相关资料和Tellurium的Wiki。敬请等候Tellurium在InfoQ中文站的更多技巧文章。

您可能还会对下面的文章感兴趣: