潘曉利,劉永志
(1.河源職業技術學院電信學院,河源 517000;2.南京航天航空大學計算機科學與技術學院,南京 210016;3.宣城職業技術學院信息工程系,宣城 242000)
基于Web應用系統自動化技術的探索
潘曉利1,劉永志2,3
(1.河源職業技術學院電信學院,河源517000;2.南京航天航空大學計算機科學與技術學院,南京210016;3.宣城職業技術學院信息工程系,宣城242000)
近十幾年來,Web的發展十分迅速,技術演變也比較快,從靜態HTML到動態的ASP、JSP等再到近期流行的ajax、xml、openAPI、云,讓人眼花繚亂。自動化測試技術在這一階段也有長足的發展,涌現出不少優秀的產品,例如被HP收購的QTP、LoadRunner,IBM的RFT、開源界的Selenium等,各具特色。這些自動化測試工具對軟件的質量保障起著至關重要的作用,很大程度上提高了測試效率,擴大了測試覆蓋范圍,尤其是在可持續集成呼聲日高的今天,自動化測試已經成為了軟件開發中不可或缺的一環。
對Web系統或Web應用來說,可用的自動化工具比較多,商業產品、開源產品都有很豐富的選擇。但因為對JavaScript的支持、自定義控件的支持等原因,都不能做到開箱即用,需要加以整合、二次開發。
Watir,是近幾年比較流行的一個Web測試框架,以Ruby語言開發,提供IE瀏覽器驅動,以DOM形式分析頁面,對頁面對象通過屬性進行識別。因其簡單的學習曲線及功能足夠使用,用戶社區十分活躍,正在被越來越到的用戶采用。
AutoIt是一個Windows平臺上的批處理工具,簡單易用,隨著版本的演進,也成為了一種GUI自動化操作工具,提供類BASIC的腳本語言,利用模擬鍵盤、鼠標的動作來完成自動化任務。在Windows桌面應用上有很好的用戶基礎。
Cucumber是在RSpec基礎上發展出來的一個BDD框架,提供一種基于業務語言描述的測試用例寫法,通過將業務語言與自動化腳本映射進行自動化測試,提供對需求覆蓋的支持、對數據驅動測試的支持等。有較廣泛的用戶群。
傳統的Web自動化測試工具,大都還專注在頁面DOM對象識別方面,對新興技術例如AJAX等缺乏有效的支持。
常見工具無法單獨處理復雜Web頁面中存在的如下幾個問題:①Web頁面包含Flash,或Web頁面本身就是Flash;②Web頁面中使用了ActiveX插件;③Web頁面中包含自定義的JavaScript框架或對象;④Web系統大量使用AJAX技術。
本文基于上述背景,提出集成Watir、AutoIt、Cucumber作為自動化測試系統,具有靈活、可擴展的優勢。它利用Watir驅動瀏覽器模擬用戶行為動作,AutoIt處理activeX插件,Cucumber進行業務描述與測試腳本的匹配,通過plugin的方式引入對Flash對象的支持,以Page Object方式組織腳本。主要解決了UI對象變動導致的后續維護工作量大、Flash及AJAX缺乏必要支持等問題。
本自動化測試系統的架構圖如圖1所示,依次分為測試支撐層、測試描述層、測試管理層3層。測試支撐層主要以Watir框架、AutoIt的dll庫為主要組件,以plugin的方式引入對Flash、AJAX等的支持,以Page Object的方式進行封裝;測試描述層以Cucumber框架為基礎,在其上自定義feature文件來描述測試用例;測試管理層提供Web和管理客戶端兩種方式,對資源進行調度,驅動任務執行,收集測試結果。

圖1 系統框架圖

圖2 系統運行邏輯示意圖
使用系統進行自動化測試時,Web或管理客戶端會從bug管理系統抽取測試用例,驅動支撐庫進行測試,流程如圖2所示。
(1)瀏覽器驅動及頁面對象識別
對瀏覽器的驅動和頁面對象的識別,以Watir框架為基礎,從watir-classic中的代碼可以看出,Watir原生只提供了IE的驅動,對于FireFox、Chrome等瀏覽器,需要導入webdriver模塊。簡單的對象,如button、文本輸入框等,可以簡單的通過對象屬性來進行識別。例如一個登錄頁面的用戶名部分,HTML代碼描述如下:<input id="txtUserName"name="txtUserName"type=" text"value=""size="25"style="background-color:transparent;border:0px"/></td>,要將其用戶名輸入設為admin,可通過以下腳本處:ie.text_field(:id,"txtUserName"). set('admin')。
對于復雜的頁面對象,例如圖3所示的時間選擇框,HTML描述比較復雜,并且隨著時間的不同,某一天是周一還是周二也會隨之變化,需要動態進行處理,這里我們需要引入如圖4所示的代碼。在頁面對象能夠逐一識別后,將同一頁面的對象封裝到一個Page Object對象中。

圖3 時間選擇框

圖4 時間框選擇腳本
(2)業務語言描述的測試用例
自動化測試用例的編寫,對普通測試工程師來說,需要熟悉腳本語言的開發,門檻一直比較高。在本系統中我們引入了業務語言描述,測試工程師可以按照既定規則編寫業務語言描述的測試用例,測試開發工程師再將業務描述的用例與測試腳本進行映射,測試腳本中使用的對象通常對放在Page Object庫中。如下圖所示:

圖5
(3)瀏覽器插件支持
對于頁面中嵌入的ActiveX插件,例如播放器插件等,Watir并不能夠識別,需要引入AutoIt庫來提供支持。下圖是點擊打開文件選擇框選擇文件的代碼實

圖6
(4)Flash對象支持
Flash對象的支持,在sahi等商用測試工具中目前也處于demo狀態,沒有很好的工業級實現。在本系統中我們將FlashWatir作為plugin進行集成,從而實現對內嵌Flash的控制。示例代碼如下圖:

圖7
本系統在業界進行了小范圍試用,能夠比較好地支持目前常見的瀏覽器如IE、FireFox、Chrome等,可以正常對普通Web頁面、包含Flash對象的頁面、帶有插件的頁面等進行自動化測試。與傳統的Web自動化測試工具相比,系統支持的技術對象更加豐富,輕量級更便于部署,測試資源的調度分配更靈活。圖8是NMS的一條業務語言描述的測試用例,圖9是一個測試套運行結束的結果及運行配置需要注意的前后次序設置。

圖8 業務語言描述的測試用例
本系統實現了對常用Web系統的自動化測試,能夠比較靈活的調度測試資源、收集測試結果,以數據驅動方式運行測試。但在Flash對象的支持方面,還需要開發將測試的swf納入代碼重新編譯,并非嚴格的黑盒系統,對測試資源的調度策略也僅實現了任務數的有無,并未考慮到CPU、內存等資源占用情況,對于測試過程中的驗證,手段也比較雜亂,沒有做統一的封裝,后續還有很大的改進空間。從打造一個云測試系統來說,后期主要考慮改進Flash對象的支持黑盒化,資源調度及任務分派等方面向云平臺靠攏。

圖9
[1]CHAI Tao-lun.Automated universal testing and tutoring system for Web application.Computer Science and Information Technology,Aug 2009.
[2]AutoIt J Kohl,P Rogers.Watir works.Better Software,2005.
[3]http://www.autoitscript.com/site/autoit/.
Web;Automatic Testing;Watir;AutoIt;Cucumber
Application of Automatic Technology System Based on Web Technology
PAN Xiao-li1,LIU Yong-zhi2,3
(1.Heyuan Polytechnic,Heyuan 517000;2.Nangjing University of Aeronautics and Astronautics,Nanjing 210016;3.Xuancheng Vocational&Technical College,Xuancheng 242000)
1007-1423(2015)29-0069-04
10.3969/j.issn.1007-1423.2015.29.017
潘曉利(1978-),女,洛陽伊川人,講師,碩士,研究方向為嵌入式軟件技術應用
2015-08-18
2015-10-10
基于當前Web測試中存在的問題,提出集成Watir、AutoIt、Cucumber作為自動化測試系統。它利用Watir驅動瀏覽器模擬用戶行為動作,AutoIt處理ActiveX插件,Cucumber進行業務描述與測試腳本的匹配,通過plugin的方式引入對Flash對象的支持,以Page Object方式組織腳本。主要解決了UI對象變動導致的后續維護工作量大、Flash及AJAX缺乏必要支持等問題,能夠比較好地支持目前常見的瀏覽器如IE、FireFox、Chrome等,可以正常對普通Web頁面、包含Flash對象的頁面、帶有插件的頁面等進行自動化測試。該系統具有靈活、可擴展的優勢。
Web;自動化測試;Watir;AutoIt;Cucumber
安徽省質量工程項目(No.20101452)、安徽高?;鹬攸c課題(No.KJ2014A285)
劉永志(1973-),男,博士,副教授,高工,研究方向為軟件技術與數據挖掘
Presents an integrated Watir,AutoIt,Cucumber automated testing system based on the current Web testing problems.It uses Watir to drive browser simulated user actions,AutoIt to ActiveX plug-ins,Cucumber service to descript and test script matching,plugin to support the flash object,Page Object to organize script.This system is to solve the problems of the object movements leading to the subsequent maintenance workload,Flash and AJAX lack the necessary support and other issues.This system can be better support the current browsers such as IE,FireFox,Chrome for test automation.The system has a flexible,extensible advantage.