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