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

基于WebDriver和TestNG的網(wǎng)頁自動化測試方法

2016-02-13 05:58:14
軟件 2016年12期
關(guān)鍵詞:頁面界面

呂 茜

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

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

基于WebDriver和TestNG的網(wǎng)頁自動化測試方法

呂 茜

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

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

網(wǎng)頁自動化測試;WebDriver;TestNG;無界面瀏覽器

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

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

0 引言

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

1 WebDriver介紹及應(yīng)用

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

(1)完美支持Ajax

當今的大部分網(wǎng)站都是用Ajax技術(shù)實現(xiàn)頁面的局部刷新而不需要重新加載瀏覽器。WebDriver能完美支持基于Ajax技術(shù)構(gòu)建的頁面。

(2)多種頁面定位技術(shù)

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

(3)元素操作的支持

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

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

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

(5)多瀏覽器支持

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

(6)多種客戶端編程API

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

(7)分布式測試的支持

WebDriver內(nèi)嵌了一個叫WebDriver Hub的功能,可以在一個WebDriver服務(wù)器端控制多個WebDriver測試節(jié)點,從而實現(xiàn)了WebDriver的分布式測試。

2 TestNG介紹及應(yīng)用

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

(1)基于注解

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

(2)組的概念

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

(3)并發(fā)的概念

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

(4)其他特性

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

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

結(jié)合WebDriver和TestNG的特點,文章設(shè)計的基于二者的網(wǎng)頁自動化測試框架流程圖如圖1所示:

圖1 網(wǎng)頁自動化測試流程圖

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

3.1 初始化WebDriver

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

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

然后在測試類的BeforeClass中獲得webDriver的應(yīng)用進行網(wǎng)頁測試:

3.2 錯誤重試

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

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

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

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

3.3 測試順序的執(zhí)行

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

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

3.4 測試的并發(fā)執(zhí)行

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

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

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

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

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

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

3.5 無瀏覽器界面的測試

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

(1)使用Xvfb

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

然后啟動Xfvb

然后啟動另外一個shell并執(zhí)行:

接著運行:

我們看到

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

(2)使用chrome-headless

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

4 結(jié)語

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

[1] Selenium官方網(wǎng)站, http://www.seleniumhq.org/.

[2] TestNG官方網(wǎng)站, 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-),女,本科學士學位,長期從事監(jiān)管工作。

猜你喜歡
頁面界面
微信群聊總是找不到,打開這個開關(guān)就好了
大狗熊在睡覺
刷新生活的頁面
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
基于FANUC PICTURE的虛擬軸坐標顯示界面開發(fā)方法研究
空間界面
金秋(2017年4期)2017-06-07 08:22:16
電子顯微打開材料界面世界之門
人機交互界面發(fā)展趨勢研究
手機界面中圖形符號的發(fā)展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
同一Word文檔 縱橫頁面并存
主站蜘蛛池模板: 国产另类乱子伦精品免费女| 大乳丰满人妻中文字幕日本| 久草国产在线观看| 三区在线视频| 亚洲中文无码av永久伊人| 日本一区中文字幕最新在线| 国产9191精品免费观看| 九色综合视频网| 欧美日韩中文国产| 少妇极品熟妇人妻专区视频| 欧美色视频网站| 中文字幕在线观| 国产成人综合欧美精品久久| 日本亚洲国产一区二区三区| 色哟哟色院91精品网站| 欧美午夜视频在线| 色偷偷综合网| 91久久国产综合精品| 欧美亚洲综合免费精品高清在线观看| 无码在线激情片| 亚洲国产成人无码AV在线影院L| 国产精品原创不卡在线| 2019年国产精品自拍不卡| 97成人在线观看| 最新无码专区超级碰碰碰| 无码免费的亚洲视频| 日韩午夜片| 亚洲综合亚洲国产尤物| 国产精品久久久久久久久久久久| 在线观看视频99| 亚洲欧美一区二区三区麻豆| 国产精品流白浆在线观看| 99爱在线| 日韩黄色大片免费看| 欧美国产综合色视频| 在线观看免费黄色网址| 久久中文字幕不卡一二区| 青青草原国产精品啪啪视频| 国产成人毛片| 亚洲国产成人精品一二区| 九九热视频在线免费观看| 欧美综合区自拍亚洲综合天堂 | 国产福利免费在线观看| 夜夜爽免费视频| 欧美精品啪啪| 亚洲中字无码AV电影在线观看| 日本亚洲国产一区二区三区| 无码AV高清毛片中国一级毛片| 国产视频你懂得| 亚洲国产欧美自拍| 久久人体视频| 在线国产欧美| 香蕉在线视频网站| 亚洲免费福利视频| 这里只有精品在线| 久久久四虎成人永久免费网站| 91无码人妻精品一区| 中文字幕在线播放不卡| 成人欧美日韩| 色老头综合网| 丝袜久久剧情精品国产| 欧美影院久久| 亚洲国产理论片在线播放| 久久精品嫩草研究院| 国产精品第页| 亚洲人成网站色7799在线播放| 国产美女在线观看| 色婷婷狠狠干| 国产精品永久在线| 国产成人三级在线观看视频| 久久久久青草线综合超碰| 国产幂在线无码精品| 天天干天天色综合网| YW尤物AV无码国产在线观看| 欧美高清国产| 久久精品亚洲中文字幕乱码| 国产一二三区在线| 人妻出轨无码中文一区二区| 在线观看亚洲天堂| 四虎永久免费地址在线网站| 免费xxxxx在线观看网站| 国产成人91精品免费网址在线|