1 相關(guān)說明
1.1 背景簡(jiǎn)介
隨著一個(gè)產(chǎn)品的自動(dòng)化
工作不斷深入,自動(dòng)化的case積累數(shù)量持續(xù)增長(zhǎng),絕大部分毫無依賴關(guān)系的case由于串行運(yùn)行,
測(cè)試執(zhí)行時(shí)間達(dá)到小時(shí)界別,且不易于優(yōu)化。另外,ci運(yùn)行時(shí)所需機(jī)器資源的搶占互斥,運(yùn)行機(jī)器的不穩(wěn)定等問題也逐漸擴(kuò)大。
Hadoop分布式測(cè)試執(zhí)行方案正是為了解決以上問題而產(chǎn)生,通過分布式執(zhí)行,可以達(dá)到并行運(yùn)行,提高執(zhí)行效率的目的;另外,hadoop提供調(diào)度,重試等機(jī)制功能,可以提供給用戶一個(gè)相對(duì)透明的計(jì)算資源池,減少用戶對(duì)機(jī)器運(yùn)行環(huán)境的依賴。
1.2 分布式平臺(tái)的選擇
本方案采用hadoop來作為分布式平臺(tái)。首先是Hadoop是一個(gè)開源項(xiàng)目,有非常好的技術(shù)支持,二就是hadoop有成熟的分布式調(diào)度算法,可以很好的利用每臺(tái)機(jī)器的cpu和內(nèi)存資源,達(dá)到計(jì)算資源最優(yōu)分配,三就是hadoop程序易于編寫,便于維護(hù)。
1.3 名詞解釋
:apache基金會(huì)的開源分布式框架。
Mapreduce :hadoop的計(jì)算模型,由map任務(wù)和reduce任務(wù)組成。
Jobtracker :hadoop計(jì)算系統(tǒng)的總控。
Tasktracker :hadoop計(jì)算系統(tǒng)的子節(jié)點(diǎn)。
Slot(槽位) :tasktracker的最小計(jì)算分配單元,一個(gè)槽位可以對(duì)應(yīng)一個(gè)map任務(wù),一個(gè)機(jī)器啟動(dòng)一個(gè)tasktracker,槽位的話按照機(jī)器的cpu核數(shù)來分配,一般是”核數(shù)-1”。
2.1 傳統(tǒng)的單機(jī)測(cè)試執(zhí)行流程
一般的單機(jī)測(cè)試流程分為5步,如下圖所示:
1、lib庫安裝。包括測(cè)試框架的lib庫安裝以及基于該測(cè)試框架的產(chǎn)品業(yè)務(wù)層lib。
3、case下載。從svn或者case庫獲取需要執(zhí)行的case。
4、case運(yùn)行。
5、發(fā)送報(bào)告。
單機(jī)測(cè)試執(zhí)行的優(yōu)點(diǎn)在于邏輯簡(jiǎn)單,易于實(shí)現(xiàn),缺點(diǎn)就是case要串行執(zhí)行,無法有效里有機(jī)器的cpu和內(nèi)存資源。舉個(gè)例子,現(xiàn)在有一個(gè)8核16G的測(cè)試機(jī),每個(gè)case的平均cpu使用率為10%,內(nèi)存消耗1G,在這樣的情況,一般可以做到至少6個(gè)case并行化,優(yōu)化效率是不言而喻的。
2.2 從單機(jī)測(cè)試到分布式測(cè)試執(zhí)行的邏輯
有了以上的五個(gè)步驟及相關(guān)分析,我們考慮其中可以并行執(zhí)行來進(jìn)行優(yōu)化的就是測(cè)試執(zhí)行這塊了,其他lib庫安裝,測(cè)試環(huán)境安裝等都基本是最小單元,不易切分了。
所以從單機(jī)到分布式主要是Case執(zhí)行集合的一個(gè)拆分。所以簡(jiǎn)單說,單機(jī)和分布式的區(qū)別就是case輸入集合有變“而已,其他單機(jī)的測(cè)試執(zhí)行過程基本不變。對(duì)于測(cè)試工程師來說,這個(gè)過程是透明的,只是執(zhí)行case的環(huán)境從單機(jī)切換到多機(jī)。
下圖簡(jiǎn)要的表示了case從單機(jī)到多機(jī)的變化(6位的數(shù)字是caseid)。