《電子技術(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所示,。  

圖像 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è)班級(jí)實(shí)體類,,數(shù)據(jù)表設(shè)計(jì)如表1所示。

圖像 003.png

  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í)請留意安裝。圖2給出了做好的班級(jí)列表頁面,?! ?br/>

圖像 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-班級(jí)列表到新增班級(jí)"() {
  given: "班級(jí)列表頁面"
  to ClassListPage
  when: "點(diǎn)擊新增按鈕"
  classAddBtn.click()
  then: "新增班級(jí)頁面"
  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)
  [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.
 ?。?] 王晶, 溫向彬. 利用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)載,。