您的位置:軟件測試 > 開源軟件測試 > 開源功能測試工具 > Selenium
開源自動測試框架Tellurium
作者:網(wǎng)絡轉(zhuǎn)載 發(fā)布時間:[ 2013/8/20 14:08:15 ] 推薦標簽:

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已經(jīng)發(fā)布0.6.0版本,InfoQ中文站Tellurium的方方面面,特地郵件采訪了Tellurium的創(chuàng)始人方劍先生:

1、請介紹一下您自己,以及所從事的工作?

    我的名字是方劍,曾經(jīng)在上海讀書和工作多年。2000年在美國佐治亞理工(Georgia Institute of Technology)求學。畢業(yè)后在一家美國公司做軟件開發(fā)工作,從事企業(yè)級應用(Enterprise Applications)開發(fā),主要負責服務器端框架的設計和開發(fā),商業(yè)應用服務(Business Services)的開發(fā), 和一些軟件規(guī)范的制定。此外,我還有很強的人工智能和計算機網(wǎng)絡方面的研究背景。

2、您開始做Tellurium這樣一個自動化測試框架,是基于怎樣的考慮呢?我看到有特色的兩點是使用UI module-based這樣的描述塊來定義待測的UI,以及使用DSL來表述測試代碼,還有哪些與以往框架不同的設計思想,緣起是什么呢?

    在2007年,我們公司開始注意到Selenium測試框架。由于我們用敏捷開發(fā)方法(Agile development),在Scrum隊伍中,每個人的角色開始變得多樣性了。我有個工作(Task)是用Selenium去測試我們的一個應用程序(是用Dojo Javascript框架寫的)。應該說在當時,Selenium是一個開創(chuàng)性的框架,如果用他們的復制和重播模式(record and replay)很容易產(chǎn)生測試腳本。但一旦我開始用Selenium,我發(fā)現(xiàn)它還是有一些缺點和不便之處。主要測試腳本是對代碼的更新很脆弱(Fragile)。 但是在一個敏捷開發(fā)的環(huán)境下,一般都有階段性的用戶接受測試(User Acceptance Test),由于程序一直更新,Selenium測試腳本的維護變成一個很頭痛的問題。而且,對于很多企業(yè)級應用,復制和重播模式本身不太適用,比喻我們有很多數(shù)據(jù)格(Data Grid),它的內(nèi)容本身是動態(tài)的。其他的問題包括Selenium測試腳本不是結(jié)構(gòu)化的,你可以看到處有XPath,這更增加了維護的困難。因此,我們決定開發(fā)一個在Selenium之上的框架來解決這些問題。我做的第一個版本是通過Spring框架和物體工廠(Object Factory)來產(chǎn)生UI元素(Element),使得框架能把UI元素的表達和測試代碼分開,自動處理Javascript事件,并在一定程度上能處理動態(tài)網(wǎng)頁內(nèi)容。

    由于這個框架用XML來配置UI元素,使用起來并不是很方便。在2008年,我用Groovy重寫了整個框架并變成一個開源項目(open source project)。新的版本主要有三個大的改變。首先是采用UI Module(UI模塊)描述塊來定義待測的UI。這樣做的好處是系統(tǒng)自動生成運行時的Locator,即使你改變了其中的一些元素,框架本身會生產(chǎn)新的 Locator來適應這種改變。而且框架側(cè)重一個集合的元素,而不是單個元素,這樣使得我們可以利用元素之間的關(guān)系來幫助我們定位他們在DOM中的位置。此外,這樣也增加了重用性,比如,我們可以定義一些Tellurium Widget,在你的測試代碼中可以直接定義這個Widget,而不需要重新定義一個個的單個元素。第二個大的變化是用DSL來寫測試代碼。這樣增加了表達性使得用戶很容易寫和維護測試代碼。Tellurium測試代碼可以用Java, Groovy, 或純DSL腳本來寫。Tellurium本身也支持JUnit和TestNG測試框架。另一個大的變化是開始用UI模板(UI templates)來表述動態(tài)網(wǎng)頁內(nèi)容,例如數(shù)據(jù)格(Data Grid)。這樣使得Ajax應用程序的測試變得可行和容易。

3、 Tellurium主要有那些子項目構(gòu)成?

    Tellurium主要是由Tellurium Core, Tellurium Engine, Tellurium Widget Extensions, 和Tellurium UI Module Plugin(TrUMP)子項目構(gòu)成。Tellurium Core主要是處理DSL和動態(tài)生成Locator. Tellurium Engine是測試驅(qū)動模塊,目前還是利用Selenium Core. Tellurium Widget Extensions包括一些DOJO和ExtJS Javascript框架的可重用Widget模塊。這些Widget被編譯成一個jar文件方便用戶調(diào)用。TrUMP是一個Firefox plugin來自動生成UI Module。

    另外,Tellurium還提供兩個參考子項目(Reference Projects),分別為JUnit和TestNG項目,來給用戶示范如何創(chuàng)建Tellurium測試項目和如何使用Tellurium的各種功能。

    除此之外,Tellurium還提供了Tellurium Maven Archetypes,使得用戶可以用一個Maven命令可以創(chuàng)建自己的Tellurium測試項目。

4、介紹一下Tellurium的代碼貢獻者們吧?

    我主要是負責Tellurium的整體設計和很大一部分的代碼編程。除我之外,現(xiàn)在還有四個來自美國和英國的隊友(team members)。Vivek Mongolu主要負責TrUMP的UI設計和實現(xiàn)。Matt Senter主要負責Maven支持,包括代碼的編譯,發(fā)布,和Maven Repository的維護。Haroon Rasheed參加了Tellurium參考項目(Tellurium Reference Projects)的開發(fā),Selenium Grid的支持和其他的維護工作。Mikhail Koryak參于了TrUMP的開發(fā)工作,他是jQuery方面的專家,負責Tellurium的jQuery支持。現(xiàn)在參與Tellurium Engine的開發(fā)。

上一頁12下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd