《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于Geb的Web自動(dòng)化測試的原理與實(shí)踐
基于Geb的Web自動(dòng)化測試的原理與實(shí)踐
2016年微型機(jī)與應(yīng)用第17期
胡荊陵,孫涌,陳建明
蘇州大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇 蘇州 215006
摘要: 隨著互聯(lián)網(wǎng)技術(shù)在全球范圍內(nèi)的迅速發(fā)展,各種 Web 應(yīng)用程序已成為系統(tǒng)軟件開發(fā)的主流,對應(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ā)場景中推廣使用。
Abstract:
Key words :

  胡荊陵,孫涌,陳建明
 ?。ㄌK州大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇 蘇州 215006)

       摘要:隨著互聯(lián)網(wǎng)技術(shù)在全球范圍內(nèi)的迅速發(fā)展,各種 Web 應(yīng)用程序已成為系統(tǒng)軟件開發(fā)的主流,對應(yīng)的自動(dòng)化測試理論和工具日趨重要?;陂_源的自動(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ā)場景中推廣使用。
  關(guān)鍵詞:自動(dòng)化測試;測試腳本;Geb  

0引言
  隨著我國經(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)生大量回歸測試的工作量。因此對 Web 自動(dòng)化測試的可行性和效率提出了更高的要求。
  本文介紹的 Geb 開源自動(dòng)化測試框架,對 WebDriver 進(jìn)行封裝,可以做到跨瀏覽器測試,利于 Web 應(yīng)用程序在不同瀏覽器品牌和版本下的兼容性測試;使用 Groovy 語言開發(fā)測試腳本,使代碼相對精簡,在提高開發(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)境。
1測試原理
  Geb 匯集 WebDriver 的力量、優(yōu)雅的 jQuery 內(nèi)容選擇、頁面對象模型的魯棒性和 Groovy 語言的表現(xiàn)力,支持 Spock、JUnit、TestNG 等知名測試框架的集成。Geb 總體框架圖如圖1所示?! ?/p>

圖像 001.png

  所謂自動(dòng)化測試,其原理很簡單,就是最大程度地模擬人工對頁面進(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];頁面對象模型的作用是將 jQuery 選擇器獲得的各種 HTML 標(biāo)簽元素映射抽象為 Geb 能理解的各種對象,為面向?qū)ο缶幋a方式奠定基礎(chǔ),并為后面的一系列抽象做支撐,最大程度地降低測試腳本的冗余度;測試庫的作用是提供對 Spock、JUnit、TestNG 等知名測試框架的集成支持,測試者可以根據(jù)使用習(xí)慣,選擇熟悉的測試方法;Groovy 腳本的作用是根據(jù)測試用例編寫所有的測試腳本,因此占據(jù)工作量的主要部分。
2Web應(yīng)用程序
  為說明問題,需要有一個(gè)被測試的對象,也就是前面提到的Web應(yīng)用程序。由于只是對 Geb 做一個(gè)初步了解,無需太復(fù)雜的場景,本文以一個(gè)簡單實(shí)體類的新增、查詢、更新和刪除 Web 應(yīng)用為例,來檢驗(yàn) Geb 自動(dòng)化測試的效果。
  2.1數(shù)據(jù)庫設(shè)計(jì)
  準(zhǔn)備一個(gè)班級實(shí)體類,數(shù)據(jù)表設(shè)計(jì)如表1所示。

圖像 003.png

  2.2實(shí)現(xiàn)功能
  在這個(gè)Web 應(yīng)用程序中,已提供以下功能:查看班級列表、新增班級、刪除班級、查看班級信息。這些功能都是后面需要進(jìn)行測試的。
  具體實(shí)現(xiàn)過程和細(xì)節(jié)已省略,實(shí)現(xiàn)后通過瀏覽器打開并訪問即可。需要補(bǔ)充的是,由于 Geb 封裝的 WebDriver 使用 FireFox、Chrome 瀏覽器,實(shí)踐時(shí)請留意安裝。圖2給出了做好的班級列表頁面。  

圖像 002.png

3測試腳本
  在準(zhǔn)備了 Web 應(yīng)用程序后,接著就需要準(zhǔn)備測試用例和測試腳本。
  3.1測試用例
  測試用例通常與功能用例成正比關(guān)系,本文準(zhǔn)備以下5個(gè)測試用例,詳見表2。
  3.2編輯腳本
  測試人員需要根據(jù)已制定的測試用例,編寫測試腳本,再由程序自動(dòng)化測試。由于篇幅有限,本文僅提供其中一個(gè)測試用例對應(yīng)的腳本,代碼如下所示。

圖像 004.png

  class Sit01ClassListToAdd extends GebReportingSpec{
  def "測試用例01-班級列表到新增班級"() {
  given: "班級列表頁面"
  to ClassListPage
  when: "點(diǎn)擊新增按鈕"
  classAddBtn.click()
  then: "新增班級頁面"
  at ClassAddPage
  }
  }
  測試腳本是使用 Groovy 語言編寫的,再結(jié)合Spock測試庫的使用。其具有以下特點(diǎn):Groovy 是面向?qū)ο缶幊陶Z言,相對 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)一步交流。
4測試方式和結(jié)果
  在執(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)測試,對比結(jié)果如表3所示。

圖像 005.png

  可看到,自動(dòng)測試可以縮短約 50% 的測試時(shí)間,并且無需人為干預(yù)。這一特性對于 Web 應(yīng)用程序的回歸測試的貢獻(xiàn)尤其重要,測試腳本可以一次開發(fā)多次運(yùn)行。
5結(jié)論
  Geb 為 Web 應(yīng)用程序的自動(dòng)化測試提供了一種切實(shí)可行的方案,實(shí)踐結(jié)果表明,可以極大節(jié)約測試成本。也可用于 Web 應(yīng)用程序的通用自動(dòng)化處理,有著非常廣闊的應(yīng)用場景。
  目前,Geb版本為0.13.1,還在不斷發(fā)展中,期待后續(xù)版本發(fā)布后,能為各方面帶來提升。
  參考文獻(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.
 ?。?] 王晶, 溫向彬. 利用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. SpringerVerlag, 2012:269 287.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。