亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2016-02-13 05:58:14
        軟件 2016年12期
        關(guān)鍵詞:測試環(huá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è)中使用最為廣泛的當(dāng)屬網(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

        當(dāng)今的大部分網(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)中進行回歸測試來確保頁面正確顯示。當(dā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只在回歸測試當(dāng)中使用,那么我們可以在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集成、異常測試、測試依賴等特性,在實際使用當(dāng)中都具有良好的使用價值。

        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)頁等等。在實際工作當(dā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-),女,本科學(xué)士學(xué)位,長期從事監(jiān)管工作。

        猜你喜歡
        測試環(huán)境測試方法線程
        基于泊松對相關(guān)的偽隨機數(shù)發(fā)生器的統(tǒng)計測試方法
        全數(shù)字仿真測試環(huán)境在航天軟件測試中的應(yīng)用研究
        基于云計算的軟件自動化測試方法
        電子制作(2019年16期)2019-09-27 09:34:56
        雷達航跡處理測試環(huán)境構(gòu)建方法研究
        科技視界(2019年10期)2019-09-02 03:22:27
        DLD-100C型雷達測試方法和應(yīng)用
        電子制作(2019年15期)2019-08-27 01:12:02
        網(wǎng)絡(luò)設(shè)備自動化測試設(shè)計與實現(xiàn)
        淺談linux多線程協(xié)作
        對改良的三種最小抑菌濃度測試方法的探討
        負離子紡織品檢測方法分析
        中國纖檢(2015年4期)2015-03-13 18:25:35
        Linux線程實現(xiàn)技術(shù)研究
        精品极品视频在线观看| 成人av鲁丝片一区二区免费| 性欧美牲交xxxxx视频欧美| 手机看片1024精品国产| 亚洲中文字幕人妻诱惑| 成年人一区二区三区在线观看视频| 亚洲午夜久久久久久久久久| 日韩精品无码久久久久久| 国内精品91久久久久| 亚洲av永久一区二区三区| 天天躁日日躁狠狠躁欧美老妇小说 | 就国产av一区二区三区天堂| 欧美日韩中文亚洲另类春色| 成人性生交大片免费看i| 尤物yw午夜国产精品视频| 伊人久久大香线蕉av一区| 亚洲欧洲日韩免费无码h| 麻豆三级视频网站在线观看| 精品无码av一区二区三区不卡| 亚洲成熟丰满熟妇高潮xxxxx| 97无码人妻福利免费公开在线视频| 久久青草伊人精品| 免费观看在线一区二区| 亚洲国产美女高潮久久久| 看av免费毛片手机播放| 亚洲春色AV无码专区在线播放| 麻豆国产成人av高清在线| 妺妺窝人体色www在线| 无码成人一区二区| 国产在线高清视频| 亚洲精品99久久久久久| 深夜黄色刺激影片在线免费观看| 一本精品99久久精品77| 亚洲国产成人精品女人久久久| 中文字幕一区二区三区在线视频| 风骚人妻一区二区三区| 成人试看120秒体验区| 国产激情з∠视频一区二区| 美女叉开双腿让男人插| 蜜桃传媒免费在线播放| av潮喷大喷水系列无码|