潘曉利,劉永志
(1.河源職業(yè)技術(shù)學(xué)院電信學(xué)院,河源 517000;2.南京航天航空大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,南京 210016;3.宣城職業(yè)技術(shù)學(xué)院信息工程系,宣城 242000)
基于Web應(yīng)用系統(tǒng)自動化技術(shù)的探索
潘曉利1,劉永志2,3
(1.河源職業(yè)技術(shù)學(xué)院電信學(xué)院,河源517000;2.南京航天航空大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,南京210016;3.宣城職業(yè)技術(shù)學(xué)院信息工程系,宣城242000)
近十幾年來,Web的發(fā)展十分迅速,技術(shù)演變也比較快,從靜態(tài)HTML到動態(tài)的ASP、JSP等再到近期流行的ajax、xml、openAPI、云,讓人眼花繚亂。自動化測試技術(shù)在這一階段也有長足的發(fā)展,涌現(xiàn)出不少優(yōu)秀的產(chǎn)品,例如被HP收購的QTP、LoadRunner,IBM的RFT、開源界的Selenium等,各具特色。這些自動化測試工具對軟件的質(zhì)量保障起著至關(guān)重要的作用,很大程度上提高了測試效率,擴(kuò)大了測試覆蓋范圍,尤其是在可持續(xù)集成呼聲日高的今天,自動化測試已經(jīng)成為了軟件開發(fā)中不可或缺的一環(huán)。
對Web系統(tǒng)或Web應(yīng)用來說,可用的自動化工具比較多,商業(yè)產(chǎn)品、開源產(chǎn)品都有很豐富的選擇。但因?yàn)閷avaScript的支持、自定義控件的支持等原因,都不能做到開箱即用,需要加以整合、二次開發(fā)。
Watir,是近幾年比較流行的一個(gè)Web測試框架,以Ruby語言開發(fā),提供IE瀏覽器驅(qū)動,以DOM形式分析頁面,對頁面對象通過屬性進(jìn)行識別。因其簡單的學(xué)習(xí)曲線及功能足夠使用,用戶社區(qū)十分活躍,正在被越來越到的用戶采用。
AutoIt是一個(gè)Windows平臺上的批處理工具,簡單易用,隨著版本的演進(jìn),也成為了一種GUI自動化操作工具,提供類BASIC的腳本語言,利用模擬鍵盤、鼠標(biāo)的動作來完成自動化任務(wù)。在Windows桌面應(yīng)用上有很好的用戶基礎(chǔ)。
Cucumber是在RSpec基礎(chǔ)上發(fā)展出來的一個(gè)BDD框架,提供一種基于業(yè)務(wù)語言描述的測試用例寫法,通過將業(yè)務(wù)語言與自動化腳本映射進(jìn)行自動化測試,提供對需求覆蓋的支持、對數(shù)據(jù)驅(qū)動測試的支持等。有較廣泛的用戶群。
傳統(tǒng)的Web自動化測試工具,大都還專注在頁面DOM對象識別方面,對新興技術(shù)例如AJAX等缺乏有效的支持。
常見工具無法單獨(dú)處理復(fù)雜Web頁面中存在的如下幾個(gè)問題:①Web頁面包含F(xiàn)lash,或Web頁面本身就是Flash;②Web頁面中使用了ActiveX插件;③Web頁面中包含自定義的JavaScript框架或?qū)ο?;④Web系統(tǒng)大量使用AJAX技術(shù)。
本文基于上述背景,提出集成Watir、AutoIt、Cucumber作為自動化測試系統(tǒng),具有靈活、可擴(kuò)展的優(yōu)勢。它利用Watir驅(qū)動瀏覽器模擬用戶行為動作,AutoIt處理activeX插件,Cucumber進(jìn)行業(yè)務(wù)描述與測試腳本的匹配,通過plugin的方式引入對Flash對象的支持,以Page Object方式組織腳本。主要解決了UI對象變動導(dǎo)致的后續(xù)維護(hù)工作量大、Flash及AJAX缺乏必要支持等問題。
本自動化測試系統(tǒng)的架構(gòu)圖如圖1所示,依次分為測試支撐層、測試描述層、測試管理層3層。測試支撐層主要以Watir框架、AutoIt的dll庫為主要組件,以plugin的方式引入對Flash、AJAX等的支持,以Page Object的方式進(jìn)行封裝;測試描述層以Cucumber框架為基礎(chǔ),在其上自定義feature文件來描述測試用例;測試管理層提供Web和管理客戶端兩種方式,對資源進(jìn)行調(diào)度,驅(qū)動任務(wù)執(zhí)行,收集測試結(jié)果。
圖1 系統(tǒng)框架圖
圖2 系統(tǒng)運(yùn)行邏輯示意圖
使用系統(tǒng)進(jìn)行自動化測試時(shí),Web或管理客戶端會從bug管理系統(tǒng)抽取測試用例,驅(qū)動支撐庫進(jìn)行測試,流程如圖2所示。
(1)瀏覽器驅(qū)動及頁面對象識別
對瀏覽器的驅(qū)動和頁面對象的識別,以Watir框架為基礎(chǔ),從watir-classic中的代碼可以看出,Watir原生只提供了IE的驅(qū)動,對于FireFox、Chrome等瀏覽器,需要導(dǎo)入webdriver模塊。簡單的對象,如button、文本輸入框等,可以簡單的通過對象屬性來進(jìn)行識別。例如一個(gè)登錄頁面的用戶名部分,HTML代碼描述如下:<input id="txtUserName"name="txtUserName"type=" text"value=""size="25"style="background-color:transparent;border:0px"/></td>,要將其用戶名輸入設(shè)為admin,可通過以下腳本處:ie.text_field(:id,"txtUserName"). set('admin')。
對于復(fù)雜的頁面對象,例如圖3所示的時(shí)間選擇框,HTML描述比較復(fù)雜,并且隨著時(shí)間的不同,某一天是周一還是周二也會隨之變化,需要?jiǎng)討B(tài)進(jìn)行處理,這里我們需要引入如圖4所示的代碼。在頁面對象能夠逐一識別后,將同一頁面的對象封裝到一個(gè)Page Object對象中。
圖3 時(shí)間選擇框
圖4 時(shí)間框選擇腳本
(2)業(yè)務(wù)語言描述的測試用例
自動化測試用例的編寫,對普通測試工程師來說,需要熟悉腳本語言的開發(fā),門檻一直比較高。在本系統(tǒng)中我們引入了業(yè)務(wù)語言描述,測試工程師可以按照既定規(guī)則編寫業(yè)務(wù)語言描述的測試用例,測試開發(fā)工程師再將業(yè)務(wù)描述的用例與測試腳本進(jìn)行映射,測試腳本中使用的對象通常對放在Page Object庫中。如下圖所示:
圖5
(3)瀏覽器插件支持
對于頁面中嵌入的ActiveX插件,例如播放器插件等,Watir并不能夠識別,需要引入AutoIt庫來提供支持。下圖是點(diǎn)擊打開文件選擇框選擇文件的代碼實(shí)
圖6
(4)Flash對象支持
Flash對象的支持,在sahi等商用測試工具中目前也處于demo狀態(tài),沒有很好的工業(yè)級實(shí)現(xiàn)。在本系統(tǒng)中我們將FlashWatir作為plugin進(jìn)行集成,從而實(shí)現(xiàn)對內(nèi)嵌Flash的控制。示例代碼如下圖:
圖7
本系統(tǒng)在業(yè)界進(jìn)行了小范圍試用,能夠比較好地支持目前常見的瀏覽器如IE、FireFox、Chrome等,可以正常對普通Web頁面、包含F(xiàn)lash對象的頁面、帶有插件的頁面等進(jìn)行自動化測試。與傳統(tǒng)的Web自動化測試工具相比,系統(tǒng)支持的技術(shù)對象更加豐富,輕量級更便于部署,測試資源的調(diào)度分配更靈活。圖8是NMS的一條業(yè)務(wù)語言描述的測試用例,圖9是一個(gè)測試套運(yùn)行結(jié)束的結(jié)果及運(yùn)行配置需要注意的前后次序設(shè)置。
圖8 業(yè)務(wù)語言描述的測試用例
本系統(tǒng)實(shí)現(xiàn)了對常用Web系統(tǒng)的自動化測試,能夠比較靈活的調(diào)度測試資源、收集測試結(jié)果,以數(shù)據(jù)驅(qū)動方式運(yùn)行測試。但在Flash對象的支持方面,還需要開發(fā)將測試的swf納入代碼重新編譯,并非嚴(yán)格的黑盒系統(tǒng),對測試資源的調(diào)度策略也僅實(shí)現(xiàn)了任務(wù)數(shù)的有無,并未考慮到CPU、內(nèi)存等資源占用情況,對于測試過程中的驗(yàn)證,手段也比較雜亂,沒有做統(tǒng)一的封裝,后續(xù)還有很大的改進(jìn)空間。從打造一個(gè)云測試系統(tǒng)來說,后期主要考慮改進(jìn)Flash對象的支持黑盒化,資源調(diào)度及任務(wù)分派等方面向云平臺靠攏。
圖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-),女,洛陽伊川人,講師,碩士,研究方向?yàn)榍度胧杰浖夹g(shù)應(yīng)用
2015-08-18
2015-10-10
基于當(dāng)前Web測試中存在的問題,提出集成Watir、AutoIt、Cucumber作為自動化測試系統(tǒng)。它利用Watir驅(qū)動瀏覽器模擬用戶行為動作,AutoIt處理ActiveX插件,Cucumber進(jìn)行業(yè)務(wù)描述與測試腳本的匹配,通過plugin的方式引入對Flash對象的支持,以Page Object方式組織腳本。主要解決了UI對象變動導(dǎo)致的后續(xù)維護(hù)工作量大、Flash及AJAX缺乏必要支持等問題,能夠比較好地支持目前常見的瀏覽器如IE、FireFox、Chrome等,可以正常對普通Web頁面、包含F(xiàn)lash對象的頁面、帶有插件的頁面等進(jìn)行自動化測試。該系統(tǒng)具有靈活、可擴(kuò)展的優(yōu)勢。
Web;自動化測試;Watir;AutoIt;Cucumber
安徽省質(zhì)量工程項(xiàng)目(No.20101452)、安徽高校基金重點(diǎn)課題(No.KJ2014A285)
劉永志(1973-),男,博士,副教授,高工,研究方向?yàn)檐浖夹g(shù)與數(shù)據(jù)挖掘
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,F(xiàn)lash and AJAX lack the necessary support and other issues.This system can be better support the current browsers such as IE,F(xiàn)ireFox,Chrome for test automation.The system has a flexible,extensible advantage.