胡荊陵,孫 涌,陳建明
(蘇州大學 計算機科學與技術學院,江蘇 蘇州 215006)
?
基于Geb的Web自動化測試的原理與實踐
胡荊陵,孫涌,陳建明
(蘇州大學 計算機科學與技術學院,江蘇 蘇州 215006)
隨著互聯(lián)網(wǎng)技術在全球范圍內(nèi)的迅速發(fā)展,各種 Web 應用程序已成為系統(tǒng)軟件開發(fā)的主流,對應的自動化測試理論和工具日趨重要。基于開源的自動化測試工具 Geb,介紹了它的大致原理,給出了一個簡單可行的實踐步驟。通過準備測試用例,編輯測試腳本,執(zhí)行測試腳本的步驟,Geb 可調(diào)用各子模塊,根據(jù)腳本的要求,模仿真正的人手動操作瀏覽器、并得到測試結果。Geb 可以跨瀏覽器,跨平臺運行,進行本地或遠程的測試,值得在真實開發(fā)場景中推廣使用。
自動化測試;測試腳本;Geb
引用格式:胡荊陵,孫涌,陳建明. 基于Geb的Web自動化測試的原理與實踐[J].微型機與應用,2016,35(17):23-25.
隨著我國經(jīng)濟的飛速發(fā)展,軟件行業(yè)發(fā)展迅速?;诨ヂ?lián)網(wǎng)的 Web 應用程序軟件以易開發(fā)、易使用、易擴展和易維護等優(yōu)點被廣泛使用。而 Web 應用程序的測試往往還是由測試人員手工進行,測試成本高,效率低。并且由于軟件版本的迭代和更新,產(chǎn)生大量回歸測試的工作量。因此對 Web 自動化測試的可行性和效率提出了更高的要求。
本文介紹的 Geb 開源自動化測試框架,對 WebDriver 進行封裝,可以做到跨瀏覽器測試,利于 Web 應用程序在不同瀏覽器品牌和版本下的兼容性測試;使用 Groovy 語言開發(fā)測試腳本,使代碼相對精簡,在提高開發(fā)效率的同時,Groovy 運行于 Java 虛擬機中,因此也可以輕松地實現(xiàn)跨平臺運行,極大地擴展了 Web 自動化測試的運行環(huán)境。
Geb 匯集 WebDriver 的力量、優(yōu)雅的 jQuery 內(nèi)容選擇、頁面對象模型的魯棒性和 Groovy 語言的表現(xiàn)力,支持 Spock、JUnit、TestNG 等知名測試框架的集成。Geb 總體框架圖如圖1所示。
圖1 Geb 框架圖
所謂自動化測試,其原理很簡單,就是最大程度地模擬人工對頁面進行的各種點擊和輸入操作。WebDriver 用于調(diào)用瀏覽器驅動程序,來模擬用戶的各種輸入和操作,比如:在某個文本框中輸入預設的字符串值,或者是點擊當前頁面上的某個指定的按鈕,是 Web 自動化測試的主要實現(xiàn)方式和核心模塊[1];jQuery選擇器的作用是根據(jù)CSS的ID標識符定位 Web 頁面上的唯一 HTML 標簽元素,或根據(jù) CSS class 樣式來定位 Web 頁面上的一個或多個 HTML 標簽元素,提供了開發(fā)者最熟悉的獲取頁面 HTML 標簽的方式[2];頁面對象模型的作用是將 jQuery 選擇器獲得的各種 HTML 標簽元素映射抽象為 Geb 能理解的各種對象,為面向對象編碼方式奠定基礎,并為后面的一系列抽象做支撐,最大程度地降低測試腳本的冗余度;測試庫的作用是提供對 Spock、JUnit、TestNG 等知名測試框架的集成支持,測試者可以根據(jù)使用習慣,選擇熟悉的測試方法;Groovy 腳本的作用是根據(jù)測試用例編寫所有的測試腳本,因此占據(jù)工作量的主要部分。
為說明問題,需要有一個被測試的對象,也就是前面提到的Web應用程序。由于只是對 Geb 做一個初步了解,無需太復雜的場景,本文以一個簡單實體類的新增、查詢、更新和刪除 Web 應用為例,來檢驗 Geb 自動化測試的效果。
2.1數(shù)據(jù)庫設計
準備一個班級實體類,數(shù)據(jù)表設計如表1所示。
表1 班級表
2.2實現(xiàn)功能
在這個Web 應用程序中,已提供以下功能:查看班級列表、新增班級、刪除班級、查看班級信息。這些功能都是后面需要進行測試的。
具體實現(xiàn)過程和細節(jié)已省略,實現(xiàn)后通過瀏覽器打開并訪問即可。需要補充的是,由于 Geb 封裝的 WebDriver 使用 FireFox、Chrome 瀏覽器,實踐時請留意安裝。圖2給出了做好的班級列表頁面。
圖2 班級列表頁面
在準備了 Web 應用程序后,接著就需要準備測試用例和測試腳本。
3.1測試用例
測試用例通常與功能用例成正比關系,本文準備以下5個測試用例,詳見表2。
3.2編輯腳本
測試人員需要根據(jù)已制定的測試用例,編寫測試腳本,再由程序自動化測試。由于篇幅有限,本文僅提供其中一個測試用例對應的腳本,代碼如下所示。
表2 測試用例表
class Sit01ClassListToAdd extends GebReportingSpec{
def "測試用例01-班級列表到新增班級"() {
given: "班級列表頁面"
to ClassListPage
when: "點擊新增按鈕"
classAddBtn.click()
then: "新增班級頁面"
at ClassAddPage
}
}
測試腳本是使用 Groovy 語言編寫的,再結合Spock測試庫的使用。其具有以下特點:Groovy 是面向對象編程語言,相對 Java 代碼更加精簡,更加靈活。在同樣熟悉的情況下,使用 Groovy 可以顯著提高編碼效率;Spock 是行為驅動開發(fā)的典型代表,得益于敏捷開發(fā)提供的新理念,代碼風格屬于自然語言,可讀性極強,可以簡化設計人員與測試人員之間的交流成本[3]。
筆者已將全部的測試用例示例代碼上傳至因特網(wǎng),讀者如有興趣了解更多,可以通過網(wǎng)絡下載和查看,地址是:http://pan.baidu.com/s/1slKMe9v,期間如遇任何疑問,也可以再做進一步交流。
在執(zhí)行之前,確保Web 應用程序已啟動,并可通過瀏覽器訪問相應的頁面。
本文使用的 PC 配置如下:操作系統(tǒng) Windows 7,處理器 i3 4170 3.7 GHz,內(nèi)存4 GB DDR3 1 600 MHz,硬盤160 GB,主板P8B75。這個配置是非常普通的,大多數(shù)軟件公司都可以輕松采購和配置,也就是說大范圍推廣 Web 自動化測試的硬件成本不高。
測試方式采用的是黑盒測試,分別進行3次手動測試和3次自動測試,對比結果如表3所示。
表3 測試結果對比表
可看到,自動測試可以縮短約 50% 的測試時間,并且無需人為干預。這一特性對于 Web 應用程序的回歸測試的貢獻尤其重要,測試腳本可以一次開發(fā)多次運行。
Geb 為 Web 應用程序的自動化測試提供了一種切實可行的方案,實踐結果表明,可以極大節(jié)約測試成本。也可用于 Web 應用程序的通用自動化處理,有著非常廣闊的應用場景。
目前,Geb版本為0.13.1,還在不斷發(fā)展中,期待后續(xù)版本發(fā)布后,能為各方面帶來提升。
[1] CHANDRAPRABHA C, KUMAR A, SSXENA S. Data driven testing framework using selenium WebDriver [J]. International Journal of Computer Applications, 2015, 118(18):18-23.
[2] 王晶, 溫向彬. 利用jQuery操作HTML元素 [J]. 農(nóng)業(yè)網(wǎng)絡信息, 2008(4):98-99.
[3] SOEKEN M, WILLE R, DRECHSLER R. Assisted behavior driven development using natural language processing[C]. International Conference on Objects, Models, Components, Patterns. Springer-Verlag, 2012:269-287.
Principle and practice of Web automated testing based on Geb
Hu Jingling, Sun Yong, Chen Jianming
(School of Computer Science &Technology, Soochow University, Suzhou 215006, China)
With the rapid development of Internet technology in the global scale, all kinds of Web applications has become the mainstream of software development, the corresponding theories and tools of automated testing have become increasingly important. Geb is an open source browser automation tool. This paper introduces the general principle of Geb, and givs a simple and feasible practical steps. By preparing the test cases, programing the test script, executing the scripts, Geb can directly call its sub-module. According to the requirement of the testing specification, imitation of human manual operation, and the test results are obtained. Geb is a cross-browser, cross-platform automation tool which supports also local and remote mode, is worth used widely in the real development scenarios.
automated testing; test script; Geb
TP31
ADOI: 10.19358/j.issn.1674- 7720.2016.17.007
2016-05-14)
胡荊陵(1981-),男,碩士研究生,主要研究方向:軟件工程、人工智能。
孫涌(1958-),男,博士,副教授,研究生導師,主要研究方向:科學計算可視化、智能信息、軟件工程。
陳建明(1960-),男,碩士,副教授,主要研究方向:軟件工程、智能信息處理、嵌入式系統(tǒng)的開發(fā)與應用。