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