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