使用Robot Framework實現多平臺自動化測試

基於Robot Framework、Jenkins、Appium、Selenium、Requests、AutoIt等開源框架和技術,成功打造了通用自動化測試持續集成管理平臺(以下簡稱“平臺”),顯著提高了測試質量和測試用例的執行效率。

1. 設計目標

(1) 平臺通用且支持不同類型的自動化測試。平臺框架輕量、開放、靈活,有強大豐富的測試庫,全面支撐PC桌面應用(如核心櫃檯和網上交易系統)、Web應用(如商城網廳)、APP應用(如手機證券)、接口(如櫃檯周邊接口)、數據庫(如Oracle)等自動化測試,便於後續持續測試開發和集中統一管理。

(2) 平臺支持自動化測試全流程。平臺展示界面統一、清晰、簡潔,覆蓋測試用例設計、測試腳本開發、測試執行、測試報告生成等流程。通過對測試流程實現統一管理,降低測試人員使用平臺的門檻。

(3) 平臺具有良好的擴展性、易維護性。平臺支持協同工作、分佈式測試執行,能與版本管理工具、軟件缺陷管理系統、企業郵件系統等集成,同時在項目不斷迭代的過程中,自動化測試腳本能彈性調整和代碼複用。

2. 架構設計

平臺採用組件化的思想和分層架構,可分爲4層,每一層都實現特定的功能,並提供接口給其它層調用:

圖1 平臺架構設計

(1) 最底層是被測系統,主要明確被測對象的形態。平臺支持APP、Web和PC應用測試,以及接口、數據庫等測試。

(2) 往上是測試庫。平臺除提供如進程、字符串、集合、截圖處理等基礎測試庫外,還提供Web、APP、接口等專用測試的擴展測試庫,以支持不同的被測系統選擇相應的測試庫。

(3) 中間是測試框架,其作用包括用例管理、測試數據管理、測試運行、測試報告等。

(4) 最上面則是持續構建層,負責任務、機器、排隊等控制和調度,自動完成整個測試作業過程。

3. 平臺實現

在自動化框架選型上,我們選擇Robot Framework(以下簡稱“RF”)作爲自動化測試平臺的核心底層框架,Jenkins作爲持續集成與任務調度平臺,同時選擇AppiumLibrary、Selenium2Library、RequestsLibrary、AutoItLibrary等作爲擴展測試庫,以應對不同的測試需求。

(1)RF框架

RF是一款功能豐富並且擴展性強的開源自動化測試框架,主要用於輪次較多的迴歸測試。框架通過關鍵字的組合形成測試邏輯,最終通過各個底層測試庫與被測系統交互,完成測試工作。RF框架爲APP、Web、接口、數據庫測試等提供了標準的底層關鍵字API,測試人員只需在這些關鍵字的基礎上開發自定義腳本,即可滿足自身測試的要求。

 

 

圖2 RF架構圖

(2)AppiumLibrary

Appium是一個開源、跨多平臺多語言的測試框架,相比其它框架,它支持iOS和Android平臺上的原生、Web和混合應用自動化測試,可在平臺間重用代碼,編寫測試腳本和運行測試時不需要對源碼重新編譯,在腳本的編寫和實現上對編程語言沒有太多要求,測試更輕量靈活。AppiumLibrary是RF框架基於Appium的第三方擴展應用程序測試庫,可支持券商手機證券APP自動化測試開發。

 

 

圖3 Appium架構圖

(3)Selenium2Library

Selenium是爲了實現多平臺Web應用程序測試而專門設計的自動化測試工具套件,具有可擴展、跨平臺、多瀏覽器支持等特性。Selenium 2集成了WebDriver,WebDriver通過原生瀏覽器支持或者瀏覽器擴展直接控制瀏覽器,測試人員可根據不同的平臺、不同瀏覽器選擇不同的WebDriver去執行測試。Selenium2Library是RF框架基於Selenium2的Web測試庫,可支持券商商城、網廳等Web應用自動化測試開發。

 

 

圖4 WebDriver架構圖

(4)RequestsLibrary

接口測試一般用於多系統間交互開發,或擁有多個子系統的應用系統開發的測試。Requests是用Python語言編寫,基於urllib,採用Apache2 Licensed開源協議的HTTP庫,可滿足 HTTP接口測試需求。RequestsLibrary是RF框架下的API測試庫,可支持券商IFS或其它自定義開發接口自動化測試開發。

(5)AutoIt桌面應用測試

AutoIt是一款用於對Windows GUI進行自動化操作的軟件,它可以模擬鍵盤按鍵,、鼠標移動以及窗口或控件的操作來實現自動化任務。AutoItLibrary是RF框架基於AutoIt的Win32桌面應用測試庫,可支持券商核心櫃檯、網上交易等桌面應用系統自動化測試開發。

 

 

圖5 Au3Info識別GUI對象示例

(6)Jenkins持續集成

Jenkins是一種開源的持續集成工具,它支持svn、Git等多種SCM配置管理工具,可根據項目要求設置定時構建(如每小時、每次間隔時間或每天晚上幾點鐘等)或觸發構建(如源代碼提交觸發),支持Shell腳本、Windows批處理、Ant構造等多種構建方法,從而滿足在不同操作系統上運行。Jenkins支持分佈式構建(類似於Selenium Grid),可實現多主機多任務並行執行。Jenkins還提供豐富的插件支持,安裝Robot Framework plugin插件後可執行RF自動化測試用例。

 

 

圖6 Jenkins+RF+AppiumLibrary自動化測試示例

三、平臺的創新點

1、平臺架構靈活、適應場景廣,滿足多種不同類型自動化測試

平臺基於輕量的RF開源框架,具有良好的擴展性,通過集成不同的開源擴展測試庫可滿足不同類型、不同平臺和應用的測試,如RF+AppiumLibrary可實現APP自動化測試,且可在iOS和Android之間重用代碼,只需要編寫出一個統一的測試腳本就可以運行在不同的平臺上,這種方式將極大提高自動化測試腳本的使用率,節省編寫和調試測試腳本的時間;RF+Selenium2Library則可實現Chrome、IE、Firefox等多瀏覽器下的Web應用程序自動化測試;RF+AutoItLibrary可實現一般Win32桌面應用程序自動化測試;RF+RequestsLibrary可實現接口自動化測試,等等。所以該平臺具有相當強的靈活性、兼容性和易用性,尤其適用於核心櫃檯、網上交易、手機證券等界面變化不大、軟件生命週期長,經常推出新版本的產品自動化測試。

2、平臺實現端到端自動化測試管理,一站式圖形展示信息

平臺支持用例管理、腳本開發調試、任務分佈式調度執行、測試報告呈現全流程。

 

 

圖7 平臺測試管理

 

 

圖8 測試日誌及報告

3、基於數據和關鍵字驅動的自動化測試,靈活應對被測試系統變更

平臺克服了傳統自動化框架錄製回放模式腳本高耦合性的缺點,具有高健壯性、高複用性和良好的維護性:

(1) 支持數據驅動模式,測試數據和腳本分離,測試數據變更無需修改腳本,提高了自動化測試腳本的可複用性。

(2) 實現界面元素統一管理,界面元素和測試腳本分離,應用程序界面變動只要修改失效的界面元素即可,無需大量修改腳本,提高了腳本的可維護性。

(3) 業務流程測試基於可以靈活組合的關鍵字腳本進行控制,通過增加關鍵字即可實現測試框架的功能擴展。

(4) 腳本結構釆用分層設計思想,將自動化測試腳本分成用例層、流程層、頁面元素層和變量集合層,方便實現高內聚、低耦合的測試腳本設計。

 

 

圖9分層自動化測試

四、平臺的實施效果

1、提高測試用例設計質量和業務場景的覆蓋度

東莞證券自動化測試項目自實施以來,用例粒度和覆蓋度得到了較大改善,手機APP交易、接口、Web(網廳/商城/有財貸)、核心櫃檯、網上交易的測試用例分別達到1645、153、76、569和1168個,用例規模平均增長近8倍,基本覆蓋所有交易類業務。平均自動化率達65%以上,極大提升了產品研發團隊的質量信心。

2、提升測試用例執行效率,加快產品投產速度

自動化測試提高了測試用例執行的效率和準確性,降低了生產應用系統的故障率。另外持續集成儘早地介入,減少了版本延遲發佈的可能性。以東莞證券手機APP交易自動化測試爲例,之前版本迭代週期是2-3個月,開展自動化測試後縮短至1個月;以往一輪15人天的手動測試改爲自動化執行後不到2人天。按平均每月迭代一次計算,全年可省近150人天的測試資源。如對接獨立的測試櫃檯(支持7*24執行)並增加多臺設備並行執行,自動化測試效率還可大幅提升;該項目已投入近20輪版本迭代測試,發現缺陷17個。

 

 

五、總結

東莞證券基於開源的RF框架從0到1建立起通用自動化測試體系,並在手機APP、核心櫃檯、網上交易、接口、商城、網廳等項目中落地,同時結合Jenkins實現自動化測試持續集成和分佈式構建,有效支撐了敏捷和快速迭代過程。限於篇幅,本文並未就APP、Web、桌面應用、接口等自動化測試開發方法展開詳細論述,而是提供一種建立通用自動化測試持續集成管理平臺的思路,希望對其他券商有一定的啓發和借鑑意義。

 

 

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