999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于WebDriver和TestNG的網頁自動化測試方法

2016-02-13 05:58:14
軟件 2016年12期
關鍵詞:頁面界面

呂 茜

(國家新聞出版廣電總局573臺,北京 102209)

(573 Station of State Administration of Press, Publication, Radio, Film and Television, Beijing 102209 China)

基于WebDriver和TestNG的網頁自動化測試方法

呂 茜

(國家新聞出版廣電總局573臺,北京 102209)

互聯網行業對時效性有著極高的要求,版本迭代異常迅速,保證項目的代碼在快速迭代中保持很好的質量,是軟件測試面臨的重要挑戰,互聯網行業中使用最為廣泛的當屬網頁自動化測試。文章闡述了一種基于WebDriver和TestNG的網頁自動化測試方法,能有效提高測試的效率和準確率,具有很好的應用價值。

網頁自動化測試;WebDriver;TestNG;無界面瀏覽器

本文著錄格式:呂 茜. 基于WebDriver和TestNG的網頁自動化測試方法[J]. 軟件,2016,37(12):69-73

(573 Station of State Administration of Press, Publication, Radio, Film and Television, Beijing 102209 China)

0 引言

伴隨著互聯網行業的迅猛發展,網站也如雨后春筍般涌出。而在互聯網行業中,對時效性有著極高的要求,相同的創意,你能比競爭對手早上線,你就更有可能占領市場;同時盡早的發現已上線系統中的bug,則可以盡少的降低公司的損失。所以最近幾年持續集成CI(Continuous Integration)和持續交付(Continuous Delivery)發展的異常迅猛。而這兩個概念的一個核心底層技術,就是自動化測試,對于互聯網來說,該自動化測試大部分情況下就是網頁自動化測試。所以,一個設計良好的網頁自動化測試框架,對于網站和互聯網公司有著重要的戰略意義。

1 WebDriver介紹及應用

WebDriver提供了一個簡潔的編程接口來調用瀏覽器的API進行基于瀏覽器的網頁自動化測試[1]。它具有如下特點:

(1)完美支持Ajax

當今的大部分網站都是用Ajax技術實現頁面的局部刷新而不需要重新加載瀏覽器。WebDriver能完美支持基于Ajax技術構建的頁面。

(2)多種頁面定位技術

進行網頁自動化測試的本質就是計算機在瀏覽器中模擬用戶的操作,而其第一步就是需要定位待操作的元素。WebDriver支持如下幾種定位方式:css、id、xpath、tagname、name等。

(3)元素操作的支持

WebDriver內嵌多個常見網頁元素的操作方式,比如針對文本框的文本清除與輸入;針對下拉框的選擇;單選/復選框的使用等等,甚至可以編寫JavaScript代碼在自動化測試中進行Ajax操作。

(4)所有頁面布局模式的支持

常見的頁面布局模式,無論是單頁面基于Ajax,還是傳統的iframe以及框架網頁frame,WebDriver都提供了很好的支持。

(5)多瀏覽器支持

網頁測試一個重大挑戰就是網頁兼容性,由于不同瀏覽器對css、Javascript等標準支持的不同,同一個網頁需要在不同的瀏覽器不同的操作系統中進行回歸測試來確保頁面正確顯示。當前使用的主流瀏覽器:Firefox、IE、Chrome等都提供了WebDriver的API,使得同一套測試代碼測試不同的瀏覽器成為可能,大大提高測試的效率。而且各個瀏覽器對WebDriver的支持是原生的,大大提高了自動化測試執行的效率。

(6)多種客戶端編程API

WebDriver客戶端API對主流編程語言都提供了支持,比如Java、C#、Node.js等,所以對于大部分網站開發人員來說,都可以很快速的上手WebDriver來實現網頁的自動化測試。

(7)分布式測試的支持

WebDriver內嵌了一個叫WebDriver Hub的功能,可以在一個WebDriver服務器端控制多個WebDriver測試節點,從而實現了WebDriver的分布式測試。

2 TestNG介紹及應用

TestNG(Test Next Generation)是一款由JUnit和NUnit激發而產生的新一代測試框架[2],廣泛應用于單元測試和集成測試之中。它有如下特點:

(1)基于注解

TestNG內置許多用于測試的注解,比如BeforeClass/AfterClass、BeforeTest/AfterTest、BeforeMethod/AfterMethod等,能有效指定相應的類(class)或者測試(test)或者測試方法(method)在執行之前或者之后需要執行的操作。

(2)組的概念

可以將一系列相關的測試用例放到一個組(Group)里面,而在測試執行的過程中,指定相應的組去執行。實際項目中的一個例子,就是比如測試類Test1里面有三個測試方法f11、f12和f13;Test2里面有兩個測試方法f21、f22,其中f12和f21只在回歸測試當中使用,那么我們可以在f12和f21加上注解@Test(groups={’regression’}),這樣在執行調用時,一旦指明是regression測試,那么就只有f12和f21執行。

(3)并發的概念

TestNG在集成測試中,可以實現基于測試方法(method)、測試(test)、類(class)、實例(instance)這幾個級別的線程安全的并發測試,有效提高測試效率。

(4)其他特性

除上述之外,TestNG還提供了數據驅動、ANT集成、異常測試、測試依賴等特性,在實際使用當中都具有良好的使用價值。

3 基于WebDriver和TestNG的自動化測試方法

結合WebDriver和TestNG的特點,文章設計的基于二者的網頁自動化測試框架流程圖如圖1所示:

圖1 網頁自動化測試流程圖

這里面有幾個關鍵問題需要解決(下文對于WebDriver的初始化和應用,都以Firefox瀏覽器為例,實際使用過程中,可以根據需要,初始化為Chrome、IE、Opera等不同瀏覽器)。

3.1 初始化WebDriver

如果是做單元測試,那么往往一個TestNG測試類需要完成一個測試功能,這個時候我們可以在TestNG的BeforeClass中初始化WebDriver,AfterClass中清理測試環境[3]。核心代碼如下所示:

如果是做集成測試,即需要將一系列的測試放在一起進行功能驗證,或者叫測試集(suite),這時我們可以重寫TestNG的ITestListener,在測試開始onStart方法中初始化測試環境,在測試結束onFinish中清理測試環境,核心代碼如下所示:

然后在測試類的BeforeClass中獲得webDriver的應用進行網頁測試:

3.2 錯誤重試

在自動化測試中,不可避免的會發生測試錯誤的情況。大部分情況是待測程序的確有邏輯上的問題;另外較常見的情況就是測試環境出了問題,比如網絡的突然中斷、測試程序的掛起等等,在后面這種非代碼錯誤情況下,我們就需要進行重新測試以此排除環境造成的測試結果干擾。

借助于TestNG的RetryAnalyzer和RetryListener,我們可以方便的實現在測試方法失敗后進行重測。核心代碼如下所示[4]:

最后將MyRetrylistener加入到suite.xml中的listener即可。

該方法有個缺陷,就是在TestNG最終的測試報告中,會把重測的次數也計入其中。比如有一個測試方法f0,重新測試了一遍,然后成功,則在測試報告中會記錄測試次數是2次,這樣是不對的。所以我們需要做一下修正,即在test結束之后重新計算failed的個數,核心代碼如下所示[5]:

3.3 測試順序的執行

在集成測試之中,各個測試用例有時候需要基于一定的測試順序,比如驗證會員的管理功能的時候,需要首先進行登錄等。TestNG默認情況下,測試中測試類的執行順序是和他們的聲明順序是一致的,比如按照如下方式聲明,則執行順序就是

在有些測試中,我們需要打亂這種測試順序,比如用戶在訪問某些頁面時,是隨機的,這時我們可以定義preserve-order=“false”來實現。

3.4 測試的并發執行

對于不相關的測試集,可以采用并發的形式提高測試效率。TestNG提供了如下幾種并發的形式:

在上述4個例子中,都是并發5個線程去執行測試,所不同的是并發的策略:

第一個例子中所有的測試方法并發執行,測試方法運行在不同的線程中;

第二個例子中所有的suite.xml中定義的test并發執行,test運行在不同的線程中,同一個test中定義的測試類class運行在同一個線程中;

第三個例子中所有的class并發執行,class運行在不同的線程中,同一個class中定義的測試方法運行在同一個線程中;

第四個例子中所有的測試方法運行在同一個實例同一個線程中,不同的實例運行在不同的線程中。

3.5 無瀏覽器界面的測試

WebDriver是針對瀏覽器的網頁自動化測試工具,在其工作過程中,會首先啟動一個瀏覽器(Firefox、Chrome等)界面,然后它會控制該瀏覽器模擬用戶的操作,比如轉到一個網頁,操作網頁等等。在實際工作當中,網站的業務功能是其中測試的重中之重,而此時,對于網頁界面的顯示卻并不太關心。同時,我們知道,對于搭建和運行一個具有Firefox或者Chrome等瀏覽器界面的測試環境,無論是物理機還是虛擬機,對于資源的利用率來說往往不會很充分(因為其必須運行一個操作系統之上,比如Linux或者Windows,而此時,操作系統本身是需要占用一定的資源的)。那么有沒有既節省資源又能使用WebDriver進行網頁自動化測試的方法呢(因為暫時沒有無界面運行Windows窗口的方法,所以下文對本問題的探討只基于Linux環境)?

(1)使用Xvfb

Xvfb(the X Windows Virtual Framebuffer)是一個X11顯示服務器的實現。它不是將圖形在屏幕上顯示出來,而是在內存中運行所有的圖形操作[7]。對客戶端來說,除了無法看到真正的圖形顯示,沒有其他分別。首先安裝Xvfb,比如Ubuntu系統中:

然后啟動Xfvb

然后啟動另外一個shell并執行:

接著運行:

我們看到

這個時候,我們需要修改上文所述的WebDriver初始化,改用RemoteWebDriver方式:

(2)使用chrome-headless

Google chromium團隊成立一個項目專門用于開發無界面的Chrome:https://chromium.googlesource.com/chromium/src.git/+/master/headless[8],所以如果使用Chrome瀏覽器進行網頁自動化測試,則直接只用該項目即可。該項目比Xfvb的方法占用更少的資源。

4 結語

文章闡述的基于WebDriver和TestNG的網頁自動化測試方法,能有效解決網頁自動化測試中遇到的常見問題,具有很好的實際應用價值。

[1] Selenium官方網站, http://www.seleniumhq.org/.

[2] TestNG官方網站, http://testng.org/doc/index.html.

[3] H@H@, TestNG +WebDriver入門篇. http://www.cnblogs. com/GGHHLL/archive/2013/06/07/3124121.html.

[4] Jepombar, 測試中給TestNG添加RetryAnalyzer, https:// jepombar.wordpress.com/2015/02/16/testng-adding-a-rehttp:// stackoverflow.com/questions/28208202/retry-failed-test-case-intestngtryanalyzer-to-all-you-tests/.

[5] Kandume Luckcraft, TestNG中重試失敗的測試用例. http://stackoverflow.com/questions/28208202/retry-failed-tes t-case-in-testng.

[6] Devendra Raju, TestNG中保留測試順序. https://www. seleniumeasy.com/testng-tutorials/preserve-order-in-testng.

[7] Grig Gheorghiu, 在Ubuntu上以Firefox無界面形式運行Selenium WebDriver測試, http://agiletesting.blogspot.com/ 2016/01/running-selenium-webdriver-tests-using.html.

[8] Google, 無界面Chromium, https://chromium.googlesource. com/chromium/src.git/+/master/headless.

A Web Test Automation Method Based on WebDriver and TestNG

LV Xi

Internet industry has a strong requirement for time, and the code iterates rapidly in it, it’s very important to ensure the code with high quality during the iteration which challenges a lot for software testing, at the same time, web test automation is the most common testing in internet industry. The article illustratesa web test automation method based on WebDriver and TestNG, which can improve testing efficiency and accuracy, the method is very valuable in current daily work.

Web test automation; WebDriver; TestNG; Headless browser

TP3

ADOI:10.3969/j.issn.1003-6970.2016.12.016

呂茜,(1984-),女,本科學士學位,長期從事監管工作。

猜你喜歡
頁面界面
微信群聊總是找不到,打開這個開關就好了
大狗熊在睡覺
刷新生活的頁面
保健醫苑(2022年1期)2022-08-30 08:39:14
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
空間界面
金秋(2017年4期)2017-06-07 08:22:16
電子顯微打開材料界面世界之門
人機交互界面發展趨勢研究
手機界面中圖形符號的發展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
同一Word文檔 縱橫頁面并存
主站蜘蛛池模板: 国产精品hd在线播放| 久久国语对白| 欧美在线一二区| 欧美精品v欧洲精品| 日韩欧美中文字幕在线韩免费| 第一页亚洲| 日韩欧美国产中文| 91福利一区二区三区| 日本免费新一区视频| 青青草原国产免费av观看| 风韵丰满熟妇啪啪区老熟熟女| 永久在线精品免费视频观看| 免费在线不卡视频| 久久精品最新免费国产成人| 国产原创演绎剧情有字幕的| 亚洲一区第一页| 国内精品免费| 国产美女在线免费观看| 国产一级精品毛片基地| 国产日韩欧美精品区性色| 国产精品毛片一区视频播| 成人在线观看不卡| 一级毛片不卡片免费观看| 好吊日免费视频| 国产在线观看99| 欧美日韩一区二区三区四区在线观看| 色播五月婷婷| 国产成人av大片在线播放| 国产99视频精品免费观看9e| 欧美成人区| 内射人妻无码色AV天堂| 中文字幕欧美日韩高清| 丁香六月综合网| 国产超碰在线观看| a毛片免费看| 2020极品精品国产| 91免费在线看| aaa国产一级毛片| 国产精品成人观看视频国产| 亚洲欧州色色免费AV| 国国产a国产片免费麻豆| 国产一区二区三区免费观看| 亚洲视频欧美不卡| 国产成人啪视频一区二区三区| 97se亚洲综合在线韩国专区福利| 热伊人99re久久精品最新地| 被公侵犯人妻少妇一区二区三区| 欧美一区二区三区不卡免费| 国产精品亚洲αv天堂无码| 午夜限制老子影院888| 精品1区2区3区| 色窝窝免费一区二区三区| 强奷白丝美女在线观看| 国产精品开放后亚洲| 亚洲欧美色中文字幕| 精品视频一区在线观看| 这里只有精品国产| 成年人国产网站| 动漫精品中文字幕无码| 亚洲视频在线网| 国产欧美日韩精品综合在线| 伊人查蕉在线观看国产精品| 18禁高潮出水呻吟娇喘蜜芽| 爱色欧美亚洲综合图区| 国产专区综合另类日韩一区| 无码精油按摩潮喷在线播放 | 午夜不卡视频| 亚洲精品视频免费看| 九九久久99精品| 六月婷婷精品视频在线观看| 久久久久人妻一区精品色奶水| 日本在线亚洲| 亚洲精品人成网线在线| 亚洲日本在线免费观看| 四虎成人精品| 88av在线播放| 精品久久蜜桃| 特级毛片免费视频| yy6080理论大片一级久久| 久久精品娱乐亚洲领先| 国产自在自线午夜精品视频| 亚洲a级毛片|