胡荊陵,孫 涌,陳建明
(蘇州大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇 蘇州 215006)
?
基于Geb的Web自動(dòng)化測試的原理與實(shí)踐
胡荊陵,孫涌,陳建明
(蘇州大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇 蘇州 215006)
隨著互聯(lián)網(wǎng)技術(shù)在全球范圍內(nèi)的迅速發(fā)展,各種 Web 應(yīng)用程序已成為系統(tǒng)軟件開發(fā)的主流,對(duì)應(yīng)的自動(dòng)化測試?yán)碚摵凸ぞ呷遮呏匾??;陂_源的自動(dòng)化測試工具 Geb,介紹了它的大致原理,給出了一個(gè)簡單可行的實(shí)踐步驟。通過準(zhǔn)備測試用例,編輯測試腳本,執(zhí)行測試腳本的步驟,Geb 可調(diào)用各子模塊,根據(jù)腳本的要求,模仿真正的人手動(dòng)操作瀏覽器、并得到測試結(jié)果。Geb 可以跨瀏覽器,跨平臺(tái)運(yùn)行,進(jìn)行本地或遠(yuǎn)程的測試,值得在真實(shí)開發(fā)場景中推廣使用。
自動(dòng)化測試;測試腳本;Geb
引用格式:胡荊陵,孫涌,陳建明. 基于Geb的Web自動(dòng)化測試的原理與實(shí)踐[J].微型機(jī)與應(yīng)用,2016,35(17):23-25.
隨著我國經(jīng)濟(jì)的飛速發(fā)展,軟件行業(yè)發(fā)展迅速?;诨ヂ?lián)網(wǎng)的 Web 應(yīng)用程序軟件以易開發(fā)、易使用、易擴(kuò)展和易維護(hù)等優(yōu)點(diǎn)被廣泛使用。而 Web 應(yīng)用程序的測試往往還是由測試人員手工進(jìn)行,測試成本高,效率低。并且由于軟件版本的迭代和更新,產(chǎn)生大量回歸測試的工作量。因此對(duì) Web 自動(dòng)化測試的可行性和效率提出了更高的要求。
本文介紹的 Geb 開源自動(dòng)化測試框架,對(duì) WebDriver 進(jìn)行封裝,可以做到跨瀏覽器測試,利于 Web 應(yīng)用程序在不同瀏覽器品牌和版本下的兼容性測試;使用 Groovy 語言開發(fā)測試腳本,使代碼相對(duì)精簡,在提高開發(fā)效率的同時(shí),Groovy 運(yùn)行于 Java 虛擬機(jī)中,因此也可以輕松地實(shí)現(xiàn)跨平臺(tái)運(yùn)行,極大地?cái)U(kuò)展了 Web 自動(dòng)化測試的運(yùn)行環(huán)境。
Geb 匯集 WebDriver 的力量、優(yōu)雅的 jQuery 內(nèi)容選擇、頁面對(duì)象模型的魯棒性和 Groovy 語言的表現(xiàn)力,支持 Spock、JUnit、TestNG 等知名測試框架的集成。Geb 總體框架圖如圖1所示。
圖1 Geb 框架圖
所謂自動(dòng)化測試,其原理很簡單,就是最大程度地模擬人工對(duì)頁面進(jìn)行的各種點(diǎn)擊和輸入操作。WebDriver 用于調(diào)用瀏覽器驅(qū)動(dòng)程序,來模擬用戶的各種輸入和操作,比如:在某個(gè)文本框中輸入預(yù)設(shè)的字符串值,或者是點(diǎn)擊當(dāng)前頁面上的某個(gè)指定的按鈕,是 Web 自動(dòng)化測試的主要實(shí)現(xiàn)方式和核心模塊[1];jQuery選擇器的作用是根據(jù)CSS的ID標(biāo)識(shí)符定位 Web 頁面上的唯一 HTML 標(biāo)簽元素,或根據(jù) CSS class 樣式來定位 Web 頁面上的一個(gè)或多個(gè) HTML 標(biāo)簽元素,提供了開發(fā)者最熟悉的獲取頁面 HTML 標(biāo)簽的方式[2];頁面對(duì)象模型的作用是將 jQuery 選擇器獲得的各種 HTML 標(biāo)簽元素映射抽象為 Geb 能理解的各種對(duì)象,為面向?qū)ο缶幋a方式奠定基礎(chǔ),并為后面的一系列抽象做支撐,最大程度地降低測試腳本的冗余度;測試庫的作用是提供對(duì) Spock、JUnit、TestNG 等知名測試框架的集成支持,測試者可以根據(jù)使用習(xí)慣,選擇熟悉的測試方法;Groovy 腳本的作用是根據(jù)測試用例編寫所有的測試腳本,因此占據(jù)工作量的主要部分。
為說明問題,需要有一個(gè)被測試的對(duì)象,也就是前面提到的Web應(yīng)用程序。由于只是對(duì) Geb 做一個(gè)初步了解,無需太復(fù)雜的場景,本文以一個(gè)簡單實(shí)體類的新增、查詢、更新和刪除 Web 應(yīng)用為例,來檢驗(yàn) Geb 自動(dòng)化測試的效果。
2.1數(shù)據(jù)庫設(shè)計(jì)
準(zhǔn)備一個(gè)班級(jí)實(shí)體類,數(shù)據(jù)表設(shè)計(jì)如表1所示。
表1 班級(jí)表
2.2實(shí)現(xiàn)功能
在這個(gè)Web 應(yīng)用程序中,已提供以下功能:查看班級(jí)列表、新增班級(jí)、刪除班級(jí)、查看班級(jí)信息。這些功能都是后面需要進(jìn)行測試的。
具體實(shí)現(xiàn)過程和細(xì)節(jié)已省略,實(shí)現(xiàn)后通過瀏覽器打開并訪問即可。需要補(bǔ)充的是,由于 Geb 封裝的 WebDriver 使用 FireFox、Chrome 瀏覽器,實(shí)踐時(shí)請(qǐng)留意安裝。圖2給出了做好的班級(jí)列表頁面。
圖2 班級(jí)列表頁面
在準(zhǔn)備了 Web 應(yīng)用程序后,接著就需要準(zhǔn)備測試用例和測試腳本。
3.1測試用例
測試用例通常與功能用例成正比關(guān)系,本文準(zhǔn)備以下5個(gè)測試用例,詳見表2。
3.2編輯腳本
測試人員需要根據(jù)已制定的測試用例,編寫測試腳本,再由程序自動(dòng)化測試。由于篇幅有限,本文僅提供其中一個(gè)測試用例對(duì)應(yīng)的腳本,代碼如下所示。
表2 測試用例表
class Sit01ClassListToAdd extends GebReportingSpec{
def "測試用例01-班級(jí)列表到新增班級(jí)"() {
given: "班級(jí)列表頁面"
to ClassListPage
when: "點(diǎn)擊新增按鈕"
classAddBtn.click()
then: "新增班級(jí)頁面"
at ClassAddPage
}
}
測試腳本是使用 Groovy 語言編寫的,再結(jié)合Spock測試庫的使用。其具有以下特點(diǎn):Groovy 是面向?qū)ο缶幊陶Z言,相對(duì) Java 代碼更加精簡,更加靈活。在同樣熟悉的情況下,使用 Groovy 可以顯著提高編碼效率;Spock 是行為驅(qū)動(dòng)開發(fā)的典型代表,得益于敏捷開發(fā)提供的新理念,代碼風(fēng)格屬于自然語言,可讀性極強(qiáng),可以簡化設(shè)計(jì)人員與測試人員之間的交流成本[3]。
筆者已將全部的測試用例示例代碼上傳至因特網(wǎng),讀者如有興趣了解更多,可以通過網(wǎng)絡(luò)下載和查看,地址是:http://pan.baidu.com/s/1slKMe9v,期間如遇任何疑問,也可以再做進(jìn)一步交流。
在執(zhí)行之前,確保Web 應(yīng)用程序已啟動(dòng),并可通過瀏覽器訪問相應(yīng)的頁面。
本文使用的 PC 配置如下:操作系統(tǒng) Windows 7,處理器 i3 4170 3.7 GHz,內(nèi)存4 GB DDR3 1 600 MHz,硬盤160 GB,主板P8B75。這個(gè)配置是非常普通的,大多數(shù)軟件公司都可以輕松采購和配置,也就是說大范圍推廣 Web 自動(dòng)化測試的硬件成本不高。
測試方式采用的是黑盒測試,分別進(jìn)行3次手動(dòng)測試和3次自動(dòng)測試,對(duì)比結(jié)果如表3所示。
表3 測試結(jié)果對(duì)比表
可看到,自動(dòng)測試可以縮短約 50% 的測試時(shí)間,并且無需人為干預(yù)。這一特性對(duì)于 Web 應(yīng)用程序的回歸測試的貢獻(xiàn)尤其重要,測試腳本可以一次開發(fā)多次運(yùn)行。
Geb 為 Web 應(yīng)用程序的自動(dòng)化測試提供了一種切實(shí)可行的方案,實(shí)踐結(jié)果表明,可以極大節(jié)約測試成本。也可用于 Web 應(yīng)用程序的通用自動(dòng)化處理,有著非常廣闊的應(yīng)用場景。
目前,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)絡(luò)信息, 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-),男,博士,副教授,研究生導(dǎo)師,主要研究方向:科學(xué)計(jì)算可視化、智能信息、軟件工程。
陳建明(1960-),男,碩士,副教授,主要研究方向:軟件工程、智能信息處理、嵌入式系統(tǒng)的開發(fā)與應(yīng)用。