《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 基于Geb的Web自動化測試的原理與實踐
基于Geb的Web自動化測試的原理與實踐
2016年微型機與應(yīng)用第17期
胡荊陵,孫涌,陳建明
蘇州大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,江蘇 蘇州 215006
摘要: 隨著互聯(lián)網(wǎng)技術(shù)在全球范圍內(nèi)的迅速發(fā)展,各種 Web 應(yīng)用程序已成為系統(tǒng)軟件開發(fā)的主流,對應(yīng)的自動化測試?yán)碚摵凸ぞ呷遮呏匾;陂_源的自動化測試工具 Geb,介紹了它的大致原理,給出了一個簡單可行的實踐步驟。通過準(zhǔn)備測試用例,編輯測試腳本,執(zhí)行測試腳本的步驟,Geb 可調(diào)用各子模塊,根據(jù)腳本的要求,模仿真正的人手動操作瀏覽器、并得到測試結(jié)果。Geb 可以跨瀏覽器,跨平臺運行,進(jìn)行本地或遠(yuǎn)程的測試,值得在真實開發(fā)場景中推廣使用。
關(guān)鍵詞: 自動化測試 測試腳本 Geb
Abstract:
Key words :

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

       摘要:隨著互聯(lián)網(wǎng)技術(shù)在全球范圍內(nèi)的迅速發(fā)展,各種 Web 應(yīng)用程序已成為系統(tǒng)軟件開發(fā)的主流,對應(yīng)的自動化測試理論和工具日趨重要?;陂_源的自動化測試工具 Geb,介紹了它的大致原理,給出了一個簡單可行的實踐步驟。通過準(zhǔn)備測試用例,編輯測試腳本,執(zhí)行測試腳本的步驟,Geb 可調(diào)用各子模塊,根據(jù)腳本的要求,模仿真正的人手動操作瀏覽器、并得到測試結(jié)果。Geb 可以跨瀏覽器,跨平臺運行,進(jìn)行本地或遠(yuǎn)程的測試,值得在真實開發(fā)場景中推廣使用。
  關(guān)鍵詞:自動化測試;測試腳本;Geb  

0引言
  隨著我國經(jīng)濟的飛速發(fā)展,軟件行業(yè)發(fā)展迅速?;诨ヂ?lián)網(wǎng)的 Web 應(yīng)用程序軟件以易開發(fā)、易使用、易擴展和易維護等優(yōu)點被廣泛使用。而 Web 應(yīng)用程序的測試往往還是由測試人員手工進(jìn)行,測試成本高,效率低。并且由于軟件版本的迭代和更新,產(chǎn)生大量回歸測試的工作量。因此對 Web 自動化測試的可行性和效率提出了更高的要求。
  本文介紹的 Geb 開源自動化測試框架,對 WebDriver 進(jìn)行封裝,可以做到跨瀏覽器測試,利于 Web 應(yīng)用程序在不同瀏覽器品牌和版本下的兼容性測試;使用 Groovy 語言開發(fā)測試腳本,使代碼相對精簡,在提高開發(fā)效率的同時,Groovy 運行于 Java 虛擬機中,因此也可以輕松地實現(xiàn)跨平臺運行,極大地擴展了 Web 自動化測試的運行環(huán)境。
1測試原理
  Geb 匯集 WebDriver 的力量、優(yōu)雅的 jQuery 內(nèi)容選擇、頁面對象模型的魯棒性和 Groovy 語言的表現(xiàn)力,支持 Spock、JUnit、TestNG 等知名測試框架的集成。Geb 總體框架圖如圖1所示。  

圖像 001.png

  所謂自動化測試,其原理很簡單,就是最大程度地模擬人工對頁面進(jìn)行的各種點擊和輸入操作。WebDriver 用于調(diào)用瀏覽器驅(qū)動程序,來模擬用戶的各種輸入和操作,比如:在某個文本框中輸入預(yù)設(shè)的字符串值,或者是點擊當(dāng)前頁面上的某個指定的按鈕,是 Web 自動化測試的主要實現(xiàn)方式和核心模塊[1];jQuery選擇器的作用是根據(jù)CSS的ID標(biāo)識符定位 Web 頁面上的唯一 HTML 標(biāo)簽元素,或根據(jù) CSS class 樣式來定位 Web 頁面上的一個或多個 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)用程序
  為說明問題,需要有一個被測試的對象,也就是前面提到的Web應(yīng)用程序。由于只是對 Geb 做一個初步了解,無需太復(fù)雜的場景,本文以一個簡單實體類的新增、查詢、更新和刪除 Web 應(yīng)用為例,來檢驗 Geb 自動化測試的效果。
  2.1數(shù)據(jù)庫設(shè)計
  準(zhǔn)備一個班級實體類,數(shù)據(jù)表設(shè)計如表1所示。

圖像 003.png

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

圖像 002.png

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

圖像 004.png

  class Sit01ClassListToAdd extends GebReportingSpec{
  def "測試用例01-班級列表到新增班級"() {
  given: "班級列表頁面"
  to ClassListPage
  when: "點擊新增按鈕"
  classAddBtn.click()
  then: "新增班級頁面"
  at ClassAddPage
  }
  }
  測試腳本是使用 Groovy 語言編寫的,再結(jié)合Spock測試庫的使用。其具有以下特點:Groovy 是面向?qū)ο缶幊陶Z言,相對 Java 代碼更加精簡,更加靈活。在同樣熟悉的情況下,使用 Groovy 可以顯著提高編碼效率;Spock 是行為驅(qū)動開發(fā)的典型代表,得益于敏捷開發(fā)提供的新理念,代碼風(fēng)格屬于自然語言,可讀性極強,可以簡化設(shè)計人員與測試人員之間的交流成本[3]。
  筆者已將全部的測試用例示例代碼上傳至因特網(wǎng),讀者如有興趣了解更多,可以通過網(wǎng)絡(luò)下載和查看,地址是:http://pan.baidu.com/s/1slKMe9v,期間如遇任何疑問,也可以再做進(jìn)一步交流。
4測試方式和結(jié)果
  在執(zhí)行之前,確保Web 應(yīng)用程序已啟動,并可通過瀏覽器訪問相應(yīng)的頁面。
  本文使用的 PC 配置如下:操作系統(tǒng) Windows 7,處理器 i3 4170 3.7 GHz,內(nèi)存4 GB DDR3 1 600 MHz,硬盤160 GB,主板P8B75。這個配置是非常普通的,大多數(shù)軟件公司都可以輕松采購和配置,也就是說大范圍推廣 Web 自動化測試的硬件成本不高。
  測試方式采用的是黑盒測試,分別進(jìn)行3次手動測試和3次自動測試,對比結(jié)果如表3所示。

圖像 005.png

  可看到,自動測試可以縮短約 50% 的測試時間,并且無需人為干預(yù)。這一特性對于 Web 應(yīng)用程序的回歸測試的貢獻(xiàn)尤其重要,測試腳本可以一次開發(fā)多次運行。
5結(jié)論
  Geb 為 Web 應(yīng)用程序的自動化測試提供了一種切實可行的方案,實踐結(jié)果表明,可以極大節(jié)約測試成本。也可用于 Web 應(yī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.
  [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. SpringerVerlag, 2012:269 287.

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