buildbot自動化測試工具安裝及快速入門
buildbot自動化測試工具
搭建一個完全自動化的buildbot伺服器相對來說比較麻煩,所以打算開幾條部落格來具體說明,我以git作為本次搭建測試自動化測試的例子, 由於本次自動化測試伺服器需要一臺buildmaster主機、兩臺buildslave(linux和windows)主機,所以本次搭建需要三臺虛擬機器
最近公司的專案中的測試用例越來越多,並且專案必須要在linux和Windows下執行,每次提交patch後,我們只測試提交patch的部分,而沒有對其他測試用例進行測試,為了防止由於提交patch而影響了其他功能,打算找一個自動化測試工具,在每次提交patch之後能夠對所有的功能和測試用例進行測試,於是在網上收集了一些資料之後決定使用buildbot作為公司的自動化測試工具。
一、BuildBot簡介
BuildBot是一個開源的基於python的持續整合系統,它能夠以下三種方式觸發相應的自動構建和測試執行,從而迅速的發現問題所在,同時指出造成這個錯誤的開發人員,當然我們還可以通過頁面直觀的瞭解到當前所有和master繫結的任務以及各種測試狀態。
- 監控程式碼管理庫的變化從而觸發構建測試任務
- 通過配置從而定時觸發構建測試任務
- 通過配置從而允許強制觸發構建測試任務
因為它有很多比較好的特點:
- 跨平臺:可以執行在各種平臺上,實現不同平臺上的測試
- 可以處理各種語言編寫的程式,例如C,Java,Python
- 環境要求低並且配置簡單:僅僅需要Python,和網路庫Twisted
- 結果的交付方式多,例如Email,webpage,IRC或者其他協議工具
- 通過子類繼承並重寫父類從而靈活的配置
- 很好的實現了分散式部署和整合工作
BuildBot用python寫的,該python程式只依賴python環境和Twisted(一個python網路框架),可以在很多平臺執行。 自動化構建一般包括自動下載原始碼,編譯,測試,打包。
二. buildbot工作原理
2.1系統架構
Buildbot包含一個服務端,一個或多個客戶端。以星形拓撲結構連線。需要配合GIT,SVN,CVS等相關版本工具使用。master可以給任意一個slave傳送命令,slave執行master傳送的命令並返回執行的結果。
來回傳送大量命令是不太合適的,可以在slave中寫出一個總的執行指令碼,而master傳送的命令只是啟動這個指令碼。
Buildbot的原理是git,SVN等原始碼伺服器上程式碼發生變化後,buildmaster(服務端)通知連線到它上的buildslave(客戶端)從git或SVN伺服器上自動下載原始碼,編譯,測試,打包。最後把各個buildslave的自動化構建的結果蒐集起來在web上展現,或通過email,IRC等方式通知相應的專案開發人員。
2.2測試狀態結構體系
master有一個總的status物件負責監控所有連線到自己的slave的連線狀態物件,通過這個連線物件獲得完整構建的狀態及層次結構。 在master.cfg配置檔案中,控制各個status物件,獲得每個slave的連線狀態,以前的構建資訊等,通過瀏覽器建立一個url呼叫html.Waterfall外掛的query-on-demand介面可以獲得Builder, Build, Step, and LogFile等各種請求資訊。 每一次的專案構建都可以產生一個status物件,可以通過MailNotifier每一次構建都建立一個郵件列表。
三、安裝
3.1 環境搭建
Buildbot所需要的Python依賴環境比較多,而且版本依賴比較嚴重,0.8.x和0.9.x中很多類的使用以及命名有很大區別本教程的master是以0.9.0b7這個版本來搭建的。 要求:
建議安裝pip,由於buildbot版本更新以及python的更新,一些依賴可能並沒有在官方文件裡面顯示出來,使用pip能使我們的安裝更便捷一些
3.2 buildmaster環境搭建
環境:VMware Workstation 系統:winXP
- 安裝Python 雙擊.msi,一路next即可。安裝完成之後需要在環境變數path中加入Python路徑
- install Twisted 安裝 (解壓進入此目錄,下同)
$sudo python setup.py install
- 安裝 zope.interface 安裝命令:
$python setup.py build
$sudo python setup.py install
- 安裝 buildbot(依賴Twisted和Python)(本例是在XP下建立master,Ubuntu下建立slave) 安裝
$python setup.py build
$sudo python setup.py install
如果有安裝出現Unable to find vcvarsall.bat的問題是沒有安裝Microsoft Visual C++ Compiler Package for Python 2.7的緣故,安裝之後還需要配置環境變數,然後需要修改登錄檔:
- 開啟登錄檔編輯器
- 配置 2.1. 如果你安裝的Python是32位的,則,建立如下項: HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\Setup\VC 2.2. 如果你安裝的Python是64位的,則,建立如下項: HKEY_CURRENT_USER\Software\Wow6432Node\Microsoft\VisualStudio\9.0\Setup\VC
- 並在此項下新建字串值:
- 名稱:productdir。
- 資料:vcvarsall.bat所在路徑。
- 注意:路徑中不包含最後的反斜槓。
- 檢測buildbot是否安裝成功 終端下執行如下命令:
$buildbot --version
Buildbot version: 0.9.1
Twisted version: 16.6.0
- 建立buildbot master 在終端中執行如下命令:
$buildbot create-master buildbot_master
該命令會在當前目錄下生成buildbot_master目錄,且該目錄下有一個配置檔案為master.cfg.sample
1). 在啟動之前,可以測試下配置檔案。 終端下執行如下命令:
$cd buildbot_master
$mv master.cfg.sample master.cfg
$buildbot checkconfig master.cfg
正確則:Config file is good!
2).啟動、停止
$cd buildbot_master
$buildbot start ./
$buildbot stop ./
到這裡,buildmaster比較麻煩的時候就來了,在這一章節我不詳細介紹master.cfg裡面的各種配置,而是讓大家能夠讓我們的master伺服器正常跑起來————在瀏覽器中可以訪問我們的buildbot。
- 執行buildmaster buildbot是在web頁面對我們的專案測試以及程式碼監控進行顯示,對於一個區域網下,只要我們能夠連線到這臺虛擬機器,我們就可以通過web頁面的形式來隨時瞭解我們的slave的連線以及程式碼的變化和以往的測試情況。 首先我們先要知道我們master主機的IP地址,在終端下執行如下命令:
$ipconfig
Ethernet adapter 本地連線:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 192.168.1.2
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.1.1
之後開啟我們的master.cfg檔案,找到c[‘buildbotURL’] 和c[‘www’] 這兩個屬性,修改他們的URL(本地主機的IP地址)和埠號。如下圖: 儲存我們的master.cfg檔案,然後用啟動命令啟動我們的buildbot。 在上一節我們啟動了buildmaster,細心的同學會發現在我們的buildmaster資料夾目錄下多出來了一個twistd.log日誌檔案,由於buildbot所依賴的外掛比較多,第一次執行不見得能成功。所以我們需要去twistd.log檔案檢視我們的buildbot是否啟動成功,如果不成功會在.log中找到我們的出錯資訊。 從這些錯誤資訊中我們可以得到我們想要的資訊,這個說明我們的buildbot缺少waterfall_view這個外掛,我們可以去buildbot官網上去下載安裝,安裝步驟如buildbot安裝步驟。 如果我們下載成功,我們可以再任意一臺可以ping通這臺虛擬機器的的電腦的瀏覽中輸入我們在配置資料夾裡面新增的url和埠號,就可以訪問的我們的buildbot。 這樣我們就吧我們的buildbot搭建成功了,在下一節,我會詳細介紹一下master.cfg配置,和buildslave的配置,搭建一個完整的buildbot伺服器,對我們的程式碼進行監控、測試。