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