某互聯網后台自動化組合測試框架RF+Sikuli+Python腳本
http://www.jianshu.com/p/b3e204c8651a
一、**RobotFramework 1.**工具介紹:
Robotframework在測試中作為組織測試用例和BDD關鍵字的平台,主要使用RIDE進行管理,它不是一個工具,而僅僅是一個框架,使用Python進行開發,同時支持WEB測試(Selenium)、Java GUI 測試,啟動線程、終端、SSH等、支持BDD模式,相關的框架組織結構如下:

安裝目錄結構如下:

2.**用例腳本組織:**
針對Selenium, RobotFrameWork有第三方庫:selenium2library,支持目前主流的頁面元素,使用關鍵字的組織方式,能夠幫助我們更快的組織用例,下圖是小區無憂的部分自動化腳本:

說明:
MySuite下為各個用例
用例又被拆分為很多流程:Flow.txt
用例流程又被拆分為更細的步驟:例如圖片中的add_banner_step、 add_msg_data_step、Login_step
3. **用例分層:**
組織用例à用例流程à用例步驟,用例使用分層實現,並且僅僅調用關鍵字進行組織,這樣將各個PAGE的事件和元素之封裝在各自的步驟中,如果界面元素有任何改動,便於維護和更新,減少變動帶來的影響。(至於界面元素怎么定位,請GOOGLE相關的Selenium2的相關知識,另外需要重點說的是,如果沒有經驗的話,最好自己使用Python寫一些相關的代碼,不要直接就上RIDE,你可以使用Python+Selenium2+unittest框架)
4.**數據分層:**
使用EXCEL組織測試數據,將測試數據獨立出來,這里用到了自己編寫的Python腳本,具體用法如下:
引入自定義的腳本,作為Library,在F5關鍵字中能夠識別:

使用關鍵字,定義各個Excel和定位Sheet,根據字段名獲取Sheet的字段名,以傳參的方式調用數據:

Excel定義的位置:

具體的Excel內容:

這樣實現了數據的分層,以后,需要在數據層修改數據,直接表格修改就可。
5.BDD**模式:
用例也支持BDD模式的組織方式,如圖:

二、**Python
因為RobotFrameWork是使用Python開發的,所以使用Python作為擴展的主要腳本語言,主要目的是擴展滿足相關項目的測試要求的腳本,例如,上面所提到的對Excel讀取數據的擴展腳本:

會遇到的可能的問題:中文識別問題,目前來說,由於Python本身的局限,我們測試的軟件基本是中文,所以有可能會遇到中文UNICODE問題,對於這個問題,一般是這樣解決:
在python的Lib\site-packages文件夾下新建一個sitecustomize.py,內容:# -- coding: utf-8 --import sysreload(sys)sys.setdefaultencoding('utf-8')
如果遇到個別無法徹底轉換的如下處理:

三、**Sikuli
Sikuli的引進,其實比較糾結,因為對於小區無憂中會不會比較多的使用不規范的控件和過多的模態窗口(模態窗口問題還好解決,可以通過異步JS和Selenium2的Handle方法基本解決)是一個未決的問題。Sikuli是非RobotFrameWork的官方工具,所以需要使用遠程Library的方式進行調用:
組織目錄:


啟動遠程庫:

Ride中導入遠程庫:

定義Sikuli截取的圖片的路徑:

使用Sikuli遠程庫方法:

對應操作的控件:

四、持續集成**
使用jenkins進行持續集成,jenkins本身提供了RobotFrameWork的插件,只要定義好相關的參數就可以了,運行通過命令行的方式進行,不會依賴平台。
