您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源功能測(cè)試工具 > Selenium
Selenium Grid: 并行的Web測(cè)試
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/1/23 13:52:49 ] 推薦標(biāo)簽:

很多敏捷團(tuán)隊(duì)已經(jīng)使用了Selenium和Watir等 工具進(jìn)行驗(yàn)收測(cè)試或用戶接口測(cè)試。這些工具通過驅(qū)動(dòng)Web瀏覽器的方式反映用戶體驗(yàn),并且為測(cè)試那些使用DHTML和Ajax構(gòu)建的動(dòng)態(tài)接口提供強(qiáng)力支持。然而,隨著更多的團(tuán)隊(duì)采納類似的工具,他們發(fā)現(xiàn),運(yùn)行這一整套瀏覽器驅(qū)動(dòng)的Web接口測(cè)試會(huì)花費(fèi)很長(zhǎng)時(shí)間,而導(dǎo)致構(gòu)建太慢。敏捷團(tuán)隊(duì)可能不得不在全 面測(cè)試和構(gòu)建速度之間做出艱難的選擇。使用Selenium的用戶中,有人通過使用Selemium-RC運(yùn)行多個(gè)測(cè)試,也有人將測(cè)試分配給多個(gè) Selemium-RC運(yùn)行測(cè)試,但幫助有限。雖然對(duì)于少量并行是有效的,但對(duì)于大量并行卻無(wú)能為力。Selenium用戶現(xiàn)在有了另一種選擇:Selenium Grid。

Selenium Grid是Selenium的一個(gè)擴(kuò)展,也是免費(fèi)且開源的(Apache License 2.0)。它把管理一小撮Selenium-RC實(shí)例的事情和為了運(yùn)行一個(gè)測(cè)試而連接一個(gè)Selenium實(shí)際的事情分開了。實(shí)際上,Selenium Grid是提供了一個(gè)hub,象個(gè)用于控制測(cè)試的遠(yuǎn)程控制器,但是是顯式地將測(cè)試請(qǐng)求發(fā)送到一個(gè)或多個(gè)機(jī)器上的某個(gè)有效的Selenium-RC實(shí)例上。 這個(gè)Selenium Hub負(fù)責(zé)以下這些事情:

    將一個(gè)SeleniumRC顯式地分配給一個(gè)具體的測(cè)試
    限制在每個(gè)RC大并發(fā)測(cè)試數(shù)
    將測(cè)試屏蔽在一個(gè)實(shí)際的網(wǎng)格結(jié)構(gòu)之外。

使用Selenium Gird時(shí),Selenium測(cè)試可以通過名稱選擇具體環(huán)境的實(shí)例,例如某個(gè)測(cè)試可以運(yùn)行在Windows XP系統(tǒng)的IE7上,而其它實(shí)例卻指定運(yùn)行在Ubuntu的Firefox 1.5之上。

更重要的是,它允許組織構(gòu)建一個(gè)復(fù)雜的包含多種必要的測(cè)試環(huán)境的測(cè)試機(jī)群,并在其上并行運(yùn)行一個(gè)或多個(gè)項(xiàng)目的測(cè)試。這將在測(cè)試方面有顯著的提高,終減少每個(gè)項(xiàng)目所需要的基礎(chǔ)設(shè)施。某些大型組織對(duì)這一點(diǎn)認(rèn)識(shí)的為深刻(比如Google在用相似的方法),但即使是對(duì)于單個(gè)項(xiàng)目的單個(gè)機(jī)器也是有價(jià)值的。

Selenium-RC 近已經(jīng)大幅度地改進(jìn)了性能,包括在單一線程的環(huán)境下。但是,多機(jī)器多線程測(cè)試對(duì)于長(zhǎng)時(shí)間測(cè)試來(lái)說(shuō)還是有相當(dāng)大的益處的。利用足夠的測(cè)試處理能力和測(cè)試的獨(dú)立性,對(duì)于減少長(zhǎng)測(cè)試的時(shí)間是可行的。

雖然這些測(cè)試可以不必知道自己是在單機(jī)上順序運(yùn)行還是運(yùn)行于整個(gè)機(jī)群,但Selenium Grid卻不負(fù)責(zé)這些測(cè)試的并行執(zhí)行,這些是由TestNG,Parallel JUnit和DeepTest for Ruby等完成的。

InfoQ采訪了Selenium Grid的團(tuán)隊(duì)成員,并問及并行執(zhí)行測(cè)試可能對(duì)Selenium測(cè)試用例的影響:

    我們討論過隔離性,以及開發(fā)Grid之前所面臨的問題。我們想現(xiàn)在把這個(gè)擔(dān)子交給寫測(cè)試的人,讓他們來(lái)設(shè)計(jì)測(cè)試用例,以確保它們之間不會(huì)相互影響。當(dāng) 然,這個(gè)問題在Gird產(chǎn)生之前已經(jīng)存在了。你不想讓你的Selenium受其執(zhí)行順序的影響,那在每個(gè)測(cè)試執(zhí)行之前要做一些數(shù)據(jù)初始化工作,執(zhí)行這后 再清理掉。然而,這不是一個(gè)優(yōu)雅的解決方案。理想情況下,你的Selenium test好只了解這個(gè)應(yīng)用的前端,但實(shí)際上,通過暴露一點(diǎn)數(shù)據(jù)給測(cè)試,會(huì)使針對(duì)具體的Scenarios寫測(cè)試比較快且方便,而且由于只要較少的導(dǎo)航頁(yè) 可達(dá)到被測(cè)試頁(yè),運(yùn)行時(shí)間會(huì)較少。嗯,看來(lái)有一點(diǎn)兒道理啦!但是不管怎么樣,我們還是希望Grid能夠支持這兩種方式,不久前我們找到了一些方法可以在 數(shù)據(jù)庫(kù)層隔離這些測(cè)試。雖然還只算是alpha版,但它可能會(huì)成為Grid的一部分,也可有是一個(gè)獨(dú)立的項(xiàng)目。

在談到Selenium Grid的未來(lái)時(shí),開發(fā)團(tuán)隊(duì)認(rèn)為以下特性中的內(nèi)容終會(huì)成為Selenium Grid的一部分:

    一個(gè)更完善的管理控制臺(tái)
    成為Windows服務(wù)(以及solaris,Linux等操作系統(tǒng)的等價(jià)物)
    屏保功能(桌面電腦在閑置時(shí)可以加入Grid)
    為用Amazon's EC2 (Electronic Compute Cloud)基礎(chǔ)設(shè)施作為Selenium測(cè)試機(jī)群提供支持

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