許瀚青 姚礪
摘 要:在迭代開(kāi)發(fā)模式中需要執(zhí)行大量的回歸測(cè)試,為了提高測(cè)試效率和減輕手工測(cè)試的壓力,提出了一種Web自動(dòng)化的回歸測(cè)試框架。通過(guò)對(duì)現(xiàn)有測(cè)試自動(dòng)化工具的對(duì)比研究,文章選擇Watir作為基本自動(dòng)化框架,并對(duì)其進(jìn)行封裝修改生成一套新的Web自動(dòng)化測(cè)試框架SAFIR。實(shí)際使用SAFIR進(jìn)行回歸測(cè)試,和手工測(cè)試相比效率提高了70%,大幅減少了回歸測(cè)試上的人工投入。
關(guān)鍵詞:回歸測(cè)試;Web測(cè)試;自動(dòng)化測(cè)試框架;Watir
引言
文章從Web自動(dòng)化測(cè)試的種類(lèi),主流的測(cè)試工具和框架,以及Watir在網(wǎng)頁(yè)自動(dòng)化測(cè)試方面的優(yōu)勢(shì),基于Watir的自動(dòng)化測(cè)試框架并結(jié)合產(chǎn)品本身特點(diǎn),分析將Watir框架進(jìn)行二次開(kāi)發(fā)和封裝的可行性,最后得出結(jié)論,將基于Watir的自動(dòng)化測(cè)試系統(tǒng)投入到回歸測(cè)試中去。
1 Web自動(dòng)化技術(shù)
1.1 自動(dòng)化測(cè)試簡(jiǎn)介
Web自動(dòng)化測(cè)試是使用軟件工具通過(guò)編寫(xiě)腳本的方式, 對(duì)Web應(yīng)用的界面主要元素進(jìn)行一系列模擬手動(dòng)的操作。
目前,市場(chǎng)上有很多Web自動(dòng)化測(cè)試工具,QTP、Test Manager以及Watir都是不錯(cuò)的選擇。QTP比較簡(jiǎn)單易學(xué),但QTP執(zhí)行速度較慢而且經(jīng)濟(jì)成本較高。Test Manager是微軟Visual Studio的一個(gè)測(cè)試組件,使用的用戶(hù)面狹窄且資源有限。Watir支持IE、FireFox和Chrome等主流瀏覽器,而且是個(gè)開(kāi)源自動(dòng)化工具。經(jīng)過(guò)對(duì)比最終選擇Watir作為自動(dòng)化框架。
1.2 Watir簡(jiǎn)介
Watir是一種基于網(wǎng)頁(yè)模式的自動(dòng)化功能測(cè)試框架,用Ruby語(yǔ)言在Selenium-Webdriver的基礎(chǔ)上進(jìn)行二次封裝,從而使得其API能夠更好的符合Ruby語(yǔ)言的規(guī)范。而Ruby語(yǔ)言本身作為一種面向?qū)ο蟮哪_本語(yǔ)言,運(yùn)行效率高,語(yǔ)法簡(jiǎn)潔,可閱讀性強(qiáng),作為測(cè)試用例的腳本語(yǔ)言非常適合。
Watir通過(guò)DOM技術(shù)來(lái)獲取Web頁(yè)面的元素。作為一個(gè)的開(kāi)源自動(dòng)化測(cè)試框架,已經(jīng)有很多公司例如HP、Facebook、阿里巴巴等都在使用它對(duì)Web應(yīng)用進(jìn)行功能測(cè)試和回歸測(cè)試。
1.3 Watir框架存在的不足
雖然Watir已滿(mǎn)足基本的自動(dòng)化測(cè)試需求,但是它還在存在一些不足,譬如對(duì)外部文件數(shù)據(jù)的讀取、測(cè)試日志的建立與導(dǎo)出、訪問(wèn)數(shù)據(jù)庫(kù)等功能,這些Watir都還沒(méi)有實(shí)現(xiàn)。而實(shí)現(xiàn)這些功能可以更加提高自動(dòng)化測(cè)試的效率。因此,在使用Watir的基礎(chǔ)上,對(duì)它進(jìn)行二次開(kāi)發(fā),實(shí)現(xiàn)上述功能,完善watir自動(dòng)化測(cè)試框架成為了課題。
2 Watir自動(dòng)化測(cè)試設(shè)計(jì)與實(shí)現(xiàn)
2.1 產(chǎn)品背景以及SAFIR框架簡(jiǎn)介
Service Manager 是一款服務(wù)解決方案,IT部門(mén)能夠通過(guò)這套系統(tǒng)對(duì)企業(yè)的部門(mén)和個(gè)人日常IT事務(wù)進(jìn)行統(tǒng)一管理。由于這個(gè)系統(tǒng)基于B/S架構(gòu),所以測(cè)試時(shí)都是在網(wǎng)頁(yè)瀏覽器上完成。公司為了提高回歸測(cè)試效率,結(jié)合產(chǎn)品本身的特點(diǎn),針對(duì)Watir框架中存在的不足,對(duì)常用頁(yè)面元素進(jìn)行封裝,添加了文件讀取、日志記錄、訪問(wèn)數(shù)據(jù)庫(kù)功能,開(kāi)發(fā)出一套新的Web自動(dòng)化測(cè)試框架-SAFIR(SM Automation Framework in Ruby)。
2.2 SAFIR框架的設(shè)計(jì)和實(shí)現(xiàn)
作為一套自動(dòng)化網(wǎng)頁(yè)測(cè)試工具,SAFIR支持獲取網(wǎng)頁(yè)的頁(yè)面元素的功能,在獲取頁(yè)面元素之后對(duì)元素進(jìn)行點(diǎn)擊、輸入,選中,復(fù)制和粘貼等操作。在測(cè)試數(shù)據(jù)處理方面,SAFIR能靈活導(dǎo)入導(dǎo)出文件,并且讀取常用的數(shù)據(jù)文件類(lèi)型比如csv、txt和xml。從準(zhǔn)備數(shù)據(jù),到執(zhí)行測(cè)試步驟,驗(yàn)證預(yù)期與實(shí)際結(jié)果都會(huì)有日志記錄下來(lái),如果出現(xiàn)失敗場(chǎng)景腳本會(huì)立即終止失敗用例,并對(duì)失敗的場(chǎng)景進(jìn)行截圖保存到日志文件夾,以便測(cè)試工程師分析失敗原因。
在回歸測(cè)試過(guò)程中,為了提高自動(dòng)化代碼的復(fù)用性,面向?qū)ο蟮乃悸吩O(shè)計(jì)測(cè)試框架是必須的,在框架底層我們定義了一個(gè)WebObject基類(lèi),他主要作用是實(shí)例化網(wǎng)頁(yè)對(duì)象、定義log日志函數(shù)、定義失敗場(chǎng)景的截圖函數(shù),Assert()結(jié)果驗(yàn)證函數(shù)。WebFrame類(lèi)繼承WebObject基類(lèi),初始化主要頁(yè)面的頁(yè)面區(qū)域,如導(dǎo)航面板、列表、詳細(xì)信息、工具欄等區(qū)域,對(duì)他們進(jìn)行封裝。再根據(jù)每個(gè)區(qū)域內(nèi)元素的特點(diǎn)定義所需要的方法和屬性。在這兩個(gè)底層類(lèi)之上是一個(gè)公共函數(shù)庫(kù)Common.rb,有許多使用頻率極高的動(dòng)作函數(shù)被定義在這個(gè)公共類(lèi)庫(kù)里,比如數(shù)據(jù)導(dǎo)入、導(dǎo)出、清空、用戶(hù)登入登出和增刪改查等等。在寫(xiě)測(cè)試腳本時(shí),我們只需調(diào)用這幾個(gè)區(qū)域中對(duì)象或者調(diào)用公共函數(shù)庫(kù)的函數(shù),即能達(dá)到代發(fā)復(fù)用性的目的。
2.3 測(cè)試用例層的設(shè)計(jì)
實(shí)現(xiàn)框架以后,利用框架提供的方法和屬性,編寫(xiě)測(cè)試腳本。在SAFIR框架之中,測(cè)試腳本的執(zhí)行是一個(gè)線(xiàn)性的過(guò)程。一個(gè)用例可分為四部分,首先是定義引用的框架文件,例如引用webObject.rb、Commons.rb、WebFrame.rb等文件。測(cè)試的前置工作,例如登錄系統(tǒng),數(shù)據(jù)備份都由Setup()來(lái)完成。Test()方法塊,這是測(cè)試用例的核心,每個(gè)步驟封裝成step1()、step2()等小的方法體定義在Test()方法中,目的是提高腳本的可讀性和可維護(hù)性。當(dāng)測(cè)試步驟做完以后,Teardown()方法塊會(huì)刪除測(cè)試數(shù)據(jù)、重置的文件、退出登錄、關(guān)閉瀏覽器。
3 Watir自動(dòng)化測(cè)試的執(zhí)行結(jié)果
SAFIR現(xiàn)已應(yīng)用于公司的的產(chǎn)品開(kāi)發(fā)部,主要對(duì)于開(kāi)發(fā)部?jī)?nèi)幾款的Web 應(yīng)用產(chǎn)品進(jìn)行回歸測(cè)試。在相同的測(cè)試環(huán)境中對(duì)同一個(gè)功能模塊分別進(jìn)行自動(dòng)化測(cè)試和手工測(cè)試,和以往手工回歸測(cè)試相比,自動(dòng)化的回歸測(cè)試縮減了70%的測(cè)試時(shí)間,而找到bug的概率卻比手動(dòng)回歸測(cè)試提高了15%。可見(jiàn)自動(dòng)化在回歸測(cè)試中扮演者很重要的角色。隨著產(chǎn)品開(kāi)發(fā)不斷深入,更多的自動(dòng)化測(cè)試用例會(huì)被添加到回歸測(cè)試之中,這樣可以得到倍數(shù)與前期回歸測(cè)試的效率提高。
4 結(jié)束語(yǔ)
文章通過(guò)對(duì)網(wǎng)頁(yè)自動(dòng)化測(cè)試的介紹和回歸測(cè)試特點(diǎn)的分析,選擇了開(kāi)源自動(dòng)化測(cè)試工具Watir作為框架,并結(jié)合公司項(xiàng)目產(chǎn)品設(shè)計(jì)了自動(dòng)化回歸測(cè)試框架SAFIR。SAFIR中對(duì)于自動(dòng)化測(cè)試過(guò)程中的網(wǎng)頁(yè)元素定位和操作、腳本編寫(xiě)、測(cè)試執(zhí)行和測(cè)試結(jié)果分析都有相應(yīng)的規(guī)范和模塊,測(cè)試人員易于根據(jù)模塊來(lái)理解測(cè)試框架,進(jìn)而將SAFIR應(yīng)用到實(shí)際測(cè)試作業(yè)中。相對(duì)于傳統(tǒng)的手動(dòng)測(cè)試,利用SAFIR進(jìn)行回歸測(cè)試提高了70%的測(cè)試效率。把SAFIR投入到企業(yè)的回歸測(cè)試,對(duì)于此類(lèi)大量的重復(fù)測(cè)試工作具有很高的實(shí)用性,并帶來(lái)可觀的經(jīng)濟(jì)效益。
參考文獻(xiàn)
[1]楊合生,陳昱 ,張捷.軟件自動(dòng)化測(cè)試:入門(mén)、進(jìn)階與實(shí)戰(zhàn)[M].電子工業(yè)出版社,2012:40-45.
[2]陳能技.軟件測(cè)試技術(shù)大全:測(cè)試基礎(chǔ) 流行工具 項(xiàng)目實(shí)戰(zhàn)(第2版)[M].人民郵電出版社,2011:230-245.
[3]劉曉明.軟件測(cè)試及其自動(dòng)化模型的研究[M].江南大學(xué),2009:90-101.
[4]沈佳宇,喻擎蒼.基于Watir框架的Web自動(dòng)化測(cè)試[J].2012.
[5]王晴.Web自動(dòng)化測(cè)試研究與Watir框架開(kāi)發(fā)[D].武漢理工大學(xué),2011.
作者簡(jiǎn)介:許瀚青,男,籍貫:上海,職務(wù):軟件測(cè)試工程師,研究方向:軟件自動(dòng)化測(cè)試。