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

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

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

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

(1)完美支持Ajax

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

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

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

(3)元素操作的支持

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

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

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

(5)多瀏覽器支持

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

(6)多種客戶端編程API

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

(7)分布式測試的支持

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

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

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

(1)基于注解

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

(2)組的概念

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

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

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

(4)其他特性

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

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

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

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

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

3.1 初始化WebDriver

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

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

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

3.2 錯(cuò)誤重試

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

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

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

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

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

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

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

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

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

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

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

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

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

第四個(gè)例子中所有的測試方法運(yùn)行在同一個(gè)實(shí)例同一個(gè)線程中,不同的實(shí)例運(yùn)行在不同的線程中。

3.5 無瀏覽器界面的測試

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

(1)使用Xvfb

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

然后啟動Xfvb

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

接著運(yùn)行:

我們看到

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

(2)使用chrome-headless

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

4 結(jié)語

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

[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無界面形式運(yùn)行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-),女,本科學(xué)士學(xué)位,長期從事監(jiān)管工作。

猜你喜歡
頁面界面
微信群聊總是找不到,打開這個(gè)開關(guān)就好了
大狗熊在睡覺
刷新生活的頁面
國企黨委前置研究的“四個(gè)界面”
基于FANUC PICTURE的虛擬軸坐標(biāo)顯示界面開發(fā)方法研究
空間界面
金秋(2017年4期)2017-06-07 08:22:16
電子顯微打開材料界面世界之門
人機(jī)交互界面發(fā)展趨勢研究
手機(jī)界面中圖形符號的發(fā)展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
同一Word文檔 縱橫頁面并存
主站蜘蛛池模板: 久久免费看片| 亚洲一区精品视频在线| 国产福利一区在线| 亚洲aⅴ天堂| 亚洲视频影院| 蝴蝶伊人久久中文娱乐网| 亚洲色图在线观看| 国产精品七七在线播放| 欧美a在线| 毛片免费在线| 性色在线视频精品| 亚洲日本中文字幕天堂网| 亚洲第一香蕉视频| 国产亚洲视频中文字幕视频| 久热中文字幕在线观看| 亚洲国产黄色| 欧洲成人在线观看| 美女免费黄网站| 久草青青在线视频| 秋霞午夜国产精品成人片| 国产香蕉97碰碰视频VA碰碰看| 草草影院国产第一页| 亚洲精品制服丝袜二区| 国产一级一级毛片永久| 亚洲熟女偷拍| 成年人国产视频| 真实国产乱子伦视频| 久久永久精品免费视频| 女人18毛片一级毛片在线 | 狠狠色丁香婷婷| 日韩免费中文字幕| 综合成人国产| 四虎亚洲精品| 国产精品19p| 亚洲天堂视频网| 国产一二三区视频| 毛片网站免费在线观看| 亚洲欧州色色免费AV| 国产一国产一有一级毛片视频| 2018日日摸夜夜添狠狠躁| 人人看人人鲁狠狠高清| 中文字幕66页| 国产精品嫩草影院av| 国产在线观看91精品亚瑟| 国内自拍久第一页| 久久免费观看视频| 日韩久久精品无码aV| 国产精品嫩草影院视频| 2022国产无码在线| 野花国产精品入口| 国产日韩精品欧美一区灰| 国产视频一区二区在线观看| 国产欧美在线| 精品久久久无码专区中文字幕| 97国产在线视频| 福利在线不卡| 国产农村妇女精品一二区| 福利国产在线| 有专无码视频| 国产99精品久久| 中文字幕欧美日韩| 91精品国产91久久久久久三级| 日韩123欧美字幕| 免费看黄片一区二区三区| 国产精品不卡永久免费| 国产精品毛片一区视频播| 日韩激情成人| 亚洲精品午夜无码电影网| 久热中文字幕在线| 亚洲综合色婷婷中文字幕| a毛片在线| 波多野结衣一区二区三区AV| 在线欧美国产| 中文字幕无线码一区| 色综合热无码热国产| 一级片免费网站| 一本大道香蕉高清久久| 亚洲香蕉久久| 国产精品视频猛进猛出| 欧美成a人片在线观看| 中文字幕欧美日韩高清| 国产精品一区二区在线播放|