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