基於Python的測試框架

Buildbot:基於Python的持續集成測試框架
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這個版本來搭建的。
要求:

Python 版本:2.7
官方手冊中要求的是2.6或2.7,不能使用其他的版本
Twisted 版本:11.0.0及以上
sqlite3 版本:3.7.0及以上
Jinja2 版本:2.1及以上
SQLAlchemy 版本:0.8.0及以上
SQLAlchemy-Migrate 版本:0.9.0及以上
Python-Dateutil 版本1.5及以上
Autobahn0.10.0及以上
windows下還需要安裝Pywin32支持

  建議安裝pip,由於buildbot版本更新以及python的更新,一些依賴可能並沒有在官方文檔裏面顯示出來,使用pip能使我們的安裝更便捷一些

3.2 buildmaster環境搭建
環境:VMware Workstation
系統:winXP

安裝Python
  雙擊.msi,一路next即可。安裝完成之後需要在環境變量path中加入Python路徑
install Twisted
安裝 (解壓進入此目錄,下同)
$sudo python setup.py install 
1
安裝 zope.interface
安裝命令:
$python setup.py build  
$sudo python setup.py install 
1
2
安裝 buildbot(依賴Twisted和Python)(本例是在XP下建立master,Ubuntu下建立slave)
安裝
$python setup.py build  
$sudo python setup.py install
1
2
如果有安裝出現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 
1
2
3
建立buildbot master
在終端中執行如下命令:
$buildbot create-master buildbot_master 
1
該命令會在當前目錄下生成buildbot_master目錄,且該目錄下有一個配置文件爲master.cfg.sample

1). 在啓動之前,可以測試下配置文件。
終端下執行如下命令:

$cd buildbot_master              
$mv master.cfg.sample master.cfg 
$buildbot checkconfig master.cfg 
1
2
3
正確則:Config file is good!

2).啓動、停止

$cd buildbot_master
$buildbot start ./  
$buildbot stop ./  
1
2
3
  到這裏,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
1
2
3
4
5
6
7
之後打開我們的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服務器,對我們的代碼進行監控、測試。
--------------------- 
作者:Tilane 
來源:CSDN 
原文:https://blog.csdn.net/LSMEGR/article/details/53618045 
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章