隨着我行自動化測試實施範圍的不斷擴大,參與界面自動化測試的應用系統愈來愈多。我行的應用系統現階段多采用商用工具QTP(UFT)做爲執行工具來進行界面自動化測試,採購的QTP license是有限的,使得資源的競爭愈來愈激烈。將來,使用開源/免費的界面自動化測試代替QTP,是必然發展的趨勢。程序員
本文基於前期調研結果,對比分析了幾款業界主流的開源界面自動化測試工具,供自動化測試相關人員學習參考。web
關鍵字:開源、自動化測試、Selenium、UIAutomation數據庫
自動化測試由手工測試發展而來,在當前商業銀行「持續迭代、快速交付」的大背景下,自動化測試是必然趨勢。對於投產前的全量回歸測試和大量數據的業務邏輯覆蓋測試,自動化測試將大大的減小人力投入,提高測試效率,擴大測試覆蓋面,下降投產風險。編程
前期,我行界面自動化測試工具主要依賴QuickTest Professional(簡稱QTP,現已升級改名爲UFT)。該軟件具備價格昂貴、客戶端架構龐大、license有限、對部分C/S類應用(好比:BoEing客戶端、銀企通客戶端、海外分行OIBS客戶端等)支持不良等緣由,其被開源或免費的自動化測試工具取代是必然趨勢。segmentfault
前期,系統支持部組織調研了十餘款界面自動化測試工具,下面介紹幾種業界主流的開源/免費界面自動化測試工具。瀏覽器
Selenium是Throught Works公司開發的開源Web功能測試工具集,是當前web端系統最受歡迎的開源自動化測試工具之一。Selenium包含了測試的錄製(Selenium IDE),測試的並行處理(Selenium Grid),編寫與運行(Selenium Remote Control)。服務器
Selenium Grid主要架構圖如圖1所示,Selenium Grid主要包含兩個核心組件:Selenium Hub與Remote Control(簡稱RC,或Selenium RC)。Selenium hub負責分發測試用例給Selenium RC;Selenium RC負責調用瀏覽器驅動運行自動化測試腳本。架構
圖1 Selenium Grid架構圖框架
Selenium中定義了以下強大的描述元素的定位方法:編程語言
UIAutomation是微軟開發的界面自動化測試工具,是.NET Framework的組件之一,可進行C/S類應用的界面自動化測試。此自動化庫一開始就是爲可訪問性和UI測試自動化任務而專門設計的,使用UI自動化庫來測試運行支持.NET Framework的操做系統,例如Windows XP、Windows Vista、Windows 七、Windows Server 2003和Windows Server 2008等操做系統主機上的Win32應用程序、.NET Windows窗體應用程序和WPF應用程序。
在UIAutomation中,全部的窗體、控件都表現爲一個AutomationElement,AutomationElement中包含此控件或窗體的屬性,在實現自動化的過程當中,經過其相關屬性進行對控件自動化操做。全部顯示在桌面上的UI,其其實是一個UI Tree,根節點是Desktop。
在UIAutomation中,根節點表示爲AutomationElement RootElement。經過根節點,能夠經過窗體或控件的Process Id、Process Names或者Windows Name找到相應的子AutomationElement,例如Dialog、Button、TextBox、CheckBox等標準控件,經過控件所對應的Pattern進行相關的操做。
UIAutomation的體系結構如圖2所示:
圖2 UIAutomation的體系結構
Watir是基於Ruby庫的開源Web自動化測試工具,支持Firefox、Opera、IE等瀏覽器。Watir腳本以.rb爲文件擴展名,腳本頭應爲「require ‘watir’」,確保能夠訪問Watir工具。Watir腳本的運行模式是Watir-WebDriver,Watir-WebDriver是基於Ruby開發web驅動框架,支持全部的HTML元素。目前網上關於Watir的介紹資料較少。
在設計Watir自動化測試腳本時須要熟悉經常使用的Ruby腳本語法。Watir經常使用語法列舉以下:
Sahi是一款由印度公司Tyto Software開發的基於業務的開源Web自動化測試工具。Sahi運行爲一個代理服務器,並經過注入JavaScript來訪問Web頁面中的元素。Sahi支持HTTPS而且獨立於Web站點,簡單小巧卻功能強大。它相對於Selenium等自動化測試工具,在動態ID元素查找和隱式頁面等待處理等方面具備必定的優點。
Sahi簡單易用,可以很好地支持Ajax和Web2.0技術,同時適用於敏捷和瀑布兩種項目模式。Sahi自帶錄製功能,支持幾乎全部的瀏覽器,且對JS支持較好,具有頁面等待判斷機制、內置Java異常報告、支持Ajax等優點。尤爲值得一提的是,Sahi內置的智能頁面等待機制,可以自動判斷Ajax請求是否已經處理完畢,而後繼續下一步操做。而且這一點對於用戶是「隱式」的,不須要增長額外的代碼。
Sahi的工做原理大體分爲三步:錄製、精煉腳本和回放,具體步驟以下:
Katalon Studio是一款功能強大的測試自動化解決方案,適用於Web應用程序,支持Mobile、Web、API等類型的自動化測試。它基於Selenium和Appium框架構建,Katalon Studio利用這些解決方案實現集成軟件自動化。
Katalon Studio能夠集成到CI/CD流程中,而且能夠與QA流程中的流行工具配合使用,包括qTest,JIRA,Jenkins和Git。它還提供一個稱之爲Katalon Analytics的功能,這個功能能夠經過儀表板爲用戶提供測試執行報告的全面視圖,包括圖表、圖形和指標等。Katalon Studio能夠管理頁面元素、測試數據、測試案例、生成自動化測試報告等,覆蓋整個自動化測試流程及所需資產。Katalon Studio容許用戶自定義Method,Test Listeners、KeyWord,也能夠導入外部的jar包實現更爲複雜的功能,該工具的擴展性很強。
Robot Framework是由諾基亞-西門子基於Python開發的一套開源自動化測試工具,採用關鍵字驅動,並能夠經過Python或Java實現的測試庫進行擴展,用戶可使用與建立測試用例相同的語法從現有的關鍵字建立新的更高級別的關鍵字。
Robot Framework框架是跨平臺的,獨立於操做系統和應用程序。核心框架使用Python實現,支持Python2和Python3,而且還能夠在Jython(JVM),IronPython(.NET)和PyPy上運行。該框架有豐富的測試庫生態,由各類通用測試庫(包括內置庫、擴展庫和自定義庫)和工具組成,這些庫被做爲單獨的項目開發。
Robot Framework做爲一款跨平臺的通用的、與應用程序和技術無關的測試框架,具備一個高度模塊化的架構,具體的架構以下:
圖3 Robot Framework測試架構圖
該架構清晰的將測試工做分紅了4層:數據層、測試框架、測試庫或第三方測試工具、被測系統。Robot Framework起到了一個承上啓下的測試管理平臺,以測試庫和第三方工具驅動測試數據對被測系統開展自動化測試,整個測試過程Robot Framework不與被測系統有任何關聯。
這些工具都是開源/免費的界面自動化測試工具,咱們能夠根據須要對其進行二次開發與封裝,具備很強的靈活性。
以上工具都具備跨平臺性的特徵。
Selenium支持多種瀏覽器,支持Safari、Google、Chrome、Internet Explorer、Firefox等多種瀏覽器,能夠在Mac、Linux、Windows等多種操做系統上運行;
UIAutomation主要支持客戶端應用的錄製,對於web端的控件識別能力有限,不建議使用其實施B/S類應用的界面自動化測試。
Sahi一樣支持Safari、Google、Chrome、Internet Explorer、Firefox等多種瀏覽器,能夠在Windows、Linux等操做系統上運行;
Watir-WebDriver幾乎支持全部的瀏覽器,好比Chrome、Internet Explorer、Firefox等多種瀏覽器,可是不支持Safari,能夠在Mac、Linux、Windows等多操做系統上運行;
Katalon Studio支持Chrome、Internet Explorer、Firefox等多種瀏覽器,能夠在Mac、Linux、Windows等多操做系統上運行。
Robot Framework可經過集成插件支持多種瀏覽器,能夠在Mac、Linux、Windows等多操做系統上運行。
Selenium能夠直接的經過IDE進行錄製、回放等,下降了入門門檻,腳本的調試和維護須要必定的編程基礎;
UIAutomation可使用spy++或者inspect等工具獲取對象定位信息,再執行腳本編輯,入門門檻較高;
Watir要求測試人員必須懂基本的Ruby語法規則,須要使用命令行安裝,搭建集成環境複雜,入門門檻較高;
Sahi自帶錄製器,可經過點擊頁面來錄製腳本,並對腳本進行精煉,支持多種數據源,入門門檻中等;
Katalon Studio工具支持不一樣級別的測試人員使用。非程序員可使用Object Spy來記錄測試腳本。程序員能夠更加節省構建和維護腳本的時間,並基於工具提高擴展性,靈活實現所需功能;
Robot Framework須要測試人員本身編寫腳本,對於關鍵字測試驅動熟悉的測試人員相對容易上手,入門門檻較高。
Selenium支持多種編程語言,例如Java、PHP、Python、Ruby等。與其餘自動化測試相比,Selenium給予用戶自定義測試腳本的多種方式。
UIAutomation主要支持C#;Watir僅僅支持Ruby語言;Sahi主要支持Sahi script,同時還支持Java和Ruby;Katalon Studio支持Java和Groovy;Robot Framework支持Python、Java。相比較而言,Selenium支持多種編程語言,靈活性較強。
根據以上分析和對比,整理表1工具分析對比圖。
表 1 工具對比分析圖
綜上,在web端的錄製中Katalon Studio相對簡單易用,錄製腳本可視化強,案例編寫維護方便;Selenium支持腳本語言較多。而UIAutomation在客戶端的錄製上面比較成熟,定位信息準確。
本文對比總結了幾種開源/免費的界面自動化測試工具。
目前,我行自動化測試平臺(ATP)爲支持不一樣應用系統的界面自動化測試需求,已經封裝了QTP、Selenium、UIAutomation三款界面自動化測試工具,對用戶提供統一的描述語言,屏蔽了工具間的差別,下降了自動化測試的入門門檻,較好地的知足了項目使用需求。
後續,咱們會進一步增強對開源/免費自動化測試工具的研究,逐步下降對商用工具的依賴。根據實際使用需求,適時引入新的界面自動化測試工具,並進行二次封裝,知足不一樣類型應用系統的自動化測試需求,下降使用的難度,節省使用時間,提高測試效率。
來源:IDCF社區做者:農行 侯健琦 王喚宇