JavaScript集成測試工具Test Swarm發(fā)布
jQuery JavaScript程序庫的創(chuàng)建者John Resig發(fā)布了Test Swarm,該平臺用于對客戶端JavaScript進行分布式的持續(xù)集成測試。由于對傳統(tǒng)JavaScript測試環(huán)境(無法擴展)深感失望,John的新項目(目前還是私有的alpha版)旨在為眾多的開發(fā)者和社區(qū)提供一個用以測試瀏覽器的系統(tǒng)。
正如John所述,在各種不同的瀏覽器中測試jQuery難度非常大:
我們力求在jQuery項目中支持所有主流瀏覽器的當前版本、***發(fā)布版以及即將發(fā)布的每日構(gòu)建版/beta版(我們根據(jù)用戶升級瀏覽器的頻率對這些支持標準進行了一些平衡——Safari與Opera用戶的升級頻率非常高)。
在本文發(fā)布時一共包含12個瀏覽器。
◆Internet Explorer 6、7、8。(不包括8中的7模式)
◆Firefox 2、3及每日構(gòu)建版
◆Safari 3.2、4
◆Opera 9.6、10
◆Chrome 1、2
當然了,這只是Windows平臺上的,還不包括OS X及Linux。對于jQuery項目我們采取了明智的策略,通常只在一種平臺上進行測試,但理想情況下還需要在所有平臺上測試Firefox、Safari及Opera(這三個是跨平臺的瀏覽器)。***的結(jié)果是在每一次提交前后我們都要在12個獨立的瀏覽器上運行10個獨立的測試套件。跨瀏覽器的JavaScript測試的可伸縮性還不行。
如果測試需要與用戶進行交互,那么這對于jQuery乃至任何大量使用JavaScript的Web應用來說都是糟糕透頂?shù)氖虑榱恕?/P>
一些測試套件(如Yahoo UI、jQuery UI及Selenium)可以對用戶交互進行自動化(你可以編寫類似于“點擊按鈕”這樣的測試)。大多數(shù)情況下這能滿足我們的要求,但所有這些僅僅是對實際用戶交互的一種模擬。沒有什么東西可以與讓人手工運行一些容易重現(xiàn)(并且可驗證)的測試相提并論。
這是***的可伸縮性問題。用自動化的測試套件乘以想要運行的測試個數(shù),手工在12個瀏覽器中運行100個測試簡直是天方夜譚。一定還有更好的辦法,因為很明顯:跨瀏覽器的JavaScript測試的可伸縮性還不行。
像Selenium Grid這樣的解決方案有幾個限制:
據(jù)我所知,Selenium Grid需要用Selenium來運行測試。目前還沒有哪個主流的JavaScript程序庫使用了Selenium(這么做的代價也不小)。
它無法測試非桌面機。每個服務(wù)器都必須運行一個后臺程序來處理眾多任務(wù),這樣移動設(shè)備就不行了。
它無法測試未知的瀏覽器。每個瀏覽器都需要特殊的回調(diào)代碼以讓Selenium加載瀏覽器,這樣未知的瀏覽器(如IE 8、Opera 10、Firefox Nightly及Chrome)可能就沒法運行了。
最重要的是:Selenium Grid要求你擁有大量機器來運行測試,這不太可行,尤其是在分布式的開源JavaScript開發(fā)下更是如此。因此我們需要更加行之有效的解決方案。
John提出的解決方案Test Swarm基于JavaScript客戶端,該客戶端會持續(xù)不斷地向中央服務(wù)器發(fā)出連接請求以運行測試。服務(wù)器收集測試套件并將其發(fā)送到各自的客戶端上:
以下是我設(shè)想的Test Swarm的工作方式:開源的JavaScript程序庫將測試套件提交到中央服務(wù)器上,同時用戶也會參與進來。程序庫的用戶需要在其日常的工作中額外開兩個瀏覽器窗口來輔助我們的工作,這樣他們會感覺到也在參與著項目(其實就是這樣!)。
程序庫還可以將手工測試發(fā)給用戶。新的手工測試到來時會通知用戶(通過聲音提示?),這樣他們就能迅速執(zhí)行了。
用戶提供的這些幫助也不是無償?shù)模何覀兛梢越y(tǒng)計參與最積極的用戶,然后對前幾名進行嘉獎(T恤、杯子、書等等)。
相關(guān)信息
Test Swarm基于何種協(xié)議?
基于MIT協(xié)議(服務(wù)器端采用PHP和MySQL,客戶端是一些簡單的JavaScript)。
除了框架所有者以外,你認為它對于其他組織有何價值?
我認為這對于其他組織和廠商都大有裨益。下面是我設(shè)想的成長計劃:
首先開放給主流的JavaScript程序庫(他們已經(jīng)建立好了測試套件和測試體制)。
接下來開放給其他開源的JavaScript項目。
然后開放給其他組織,只要這些組織允許匿名用戶運行其測試就行。
當然通過這些步驟,任何組織都可以輕松下載服務(wù)器軟件并運行自己的swarm實例——無需通過主要的Test Swarm服務(wù)器的測試。
在最初的聲明中,John還提到了Test Swarm的“corporate”版:
Test Swarm的“corporate”版已經(jīng)引起了很多人的興趣。目前對此還沒有什么計劃(除了以開源的形式發(fā)布該軟件),我倒是想留點空間以便將來的擴展(或許用戶會因手工測試而得到一些報酬——就像Mechanical Turk測試JavaScript那樣——我不知道,但確定的是其成長空間很大)。
如果對Test Swarm感興趣可以索取其alpha版。
【編輯推薦】