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

基于Selenium的Web自動化測試框架優化及應用研究

2018-11-08 08:27:02劉偉郭秋月胡志剛
電子測試 2018年20期
關鍵詞:界面效率優化

劉偉,郭秋月,胡志剛

(1.湖南中醫藥大學信息科學與工程學院,湖南長沙,410208;2.中南大學軟件學院,湖南長沙,410075)

0 引言

軟件自動化測試技術是近年來軟件工程的熱點研究領域之一。軟件自動化測試是通過測試工具和方法,將測試人員的人力勞動從非技術、重復且冗長的測試工作中解放出來的測試行為,包括實現機器執行測試、與預期結果進行對比,最后生成相應的測試報告等自動化的功能。自動化測試以縮短測試周期、節約測試成本、達到更高效地測試和軟件質量為目標[1]。

Web自動化測試是軟件自動化測試的重要組成部分,目前在業界已經取得了一定的研究成果。Selenium是Thought Works公司開發的一套適用于各種不一樣的Web應用的功能測試工具集,主要用于Web應用自動化測試,它不僅能支持多種瀏覽器和多種開發語言,而且還有很好的擴展性[2]。Selenium為諸多自動化Web測試框架提供了基礎,近年來已有一些基于Selenium的Web自動化測試框架的研究工作相繼報道[3-6]。

目前很多Web自動化測試框架都是基于Selenium實現的,主要是對Selenium框架的二次封裝。已有的基于Selenium實現的Web自動化測試框架存在測試腳本維護成本高、穩定性低、測試腳本不能自動生成等問題。在本文中將對基于Selenium的Web自動化測試框架開展優化,設計并實現了一套名為MultiUI的自動化測試框架,并在真實項目中予以應用,在一定程度上提高自動化測試的效率和穩定性,并進一步提升測試框架的跨平臺性。

1 基于Selenium的Web自動化測試并發化和無界面化

隨著CPU主頻的升高和多核計算機的普及,利用多線程來并發執行測試任務,可以更加充分利用計算機資源,進而縮短測試時間。為此,為了提高執行效率,對Selenium進行并發化,將獨立的測試用例對象化進行多線程并發執行。使用線程的時候就創建一個線程,這樣實現較為方便。但是如果并發的線程數很多,并且每個線程都是在執行一個短時間時的任務被創建,執行結束后就被銷毀,這樣就會頻繁的創建和銷毀線程而產生大量的時間消耗,導致系統的效率大大降低。為了使線程執行完任務不被銷毀,本自動化測試框架采用線程池達到線程復用的效果。創建線程池后,線程池中沒有任何線程,當有任務提交(submit)給線程池后,就會創建線程去執行任務,當線程池中的線程數目達到核心池的大小(corePoolSize)后,就會把到達的任務放到緩存隊列(workQueue)中,直到所有任務緩存隊列中的任務都執行完后才終止(shutdown)。通過并行化優化可極大提高自動測試效率,縮短測試時間。

為了進一步提升自動化測試的執行效率和穩定性,我們將原框架采用真實瀏覽器模擬用戶操作的方式,改為采用無界面的瀏覽器實現。通過驅動無界面瀏覽器PhantomJS來實現自動化測試,PhantomJS 支持JavaScript API的無界面、運行在服務端的WebKit的環境,不需要瀏覽器支持,速度快,主要用于頁面自動化、網絡監測、頁面截圖和無界面測試。采用PhantomJS使Web自動化以無界面的方式運行,解決測試過程中加載瀏覽器元素導致測試速度慢和受網絡不穩定影響的問題;同時由于PhantomJS無界面的實現也擴展了自動化執行的平臺,使得自動化測試的執行能在無界面的Linux服務器上運行,并進一步提高了執行效率。PhantomJS重要應用場景之一就是實現對Web產品的無界面測試,它不是自動化測試框架,主要是通過測試腳本驅動相應的測試框架。PhantomJS是運行在WebKit環境中,可以對網頁進行截圖,除了能將網頁轉化為HTML、CSS等格式外,還支持GIF、PNG等圖片格式,為網頁截屏提供了更多的選擇。在本文中,基本設計思路為將PhantomJS封裝為WebDriver提供給Selenium調用,并且封裝PhantomJS實現的網頁截圖。

2 自動化測試框架的打包操作

為了進一步提高自動化框架測試效率,必須提供更好的服務設施。Linux服務器會比Windows服務器性能優勢更大,所以為了使自動化測試框架能在Linux上運行,對自動化測試框架進行打JAR包的操作,在Linux上通過命令的方式運行自動化框架。

在我們的優化工作中采用了Maven Assembly插件打包方法,該方法適用于導入第三方JAR包的項目。Maven Assembly是能創建一個包含所有運行時所依賴外部JAR包、腳本和配置文件JAR包的插件,針對目的包需要包含第三方依賴包的情況,相比mvn package打包命令更簡易。Maven Assembly打包方法主要是通過pom.xml文件進行配置。本自動化框架pom.xml打包配置如下:

<artifactId>multiUI</artifactId>

<version>1.0.1.0506</version>

<packaging>JAR</packaging>

<!-- multiUI:為打包項目名;1.0.1.0506為定義的打包版本號,可以由用戶自定義;JAR為pom打包類型-->

<plugin>

<artifactId>maven-assembly-plugin</artifactId>

<version>2.2-beta-5</version>

<configuration>

<archive>

<manifest>

<!-- mainClass:指定打JAR包后運行的主函數類名-->

<mainClass>com.qihoo.webtest.execute.ExecSchedule</mainClass>

</manifest>

</archive>

<descriptorRefs>

<!-- descriptorRef:JAR-with-dependencies 會把第三方依賴的JAR包打進最終的JAR包-->

<descriptorRef>

JAR-with-dependencies</descriptorRef>

</descriptorRefs>

</configuration>

</plugin>

在pom.xml文件中配置以上信息后,通過cmd在進入項目的根目錄下運行mvn assembly:assembly命令打包即可,打包成功后會在項目target目錄下生產一個JAR包,如圖1所示。

圖1 JAR包生成圖

將由Maven Assembly插件打好的JAR包上傳到Linux服務器,把配置文件、測試數據文件和測試腳本上傳到配置文件中指定的目錄下。然后通過java命令:

java-JARmultiUI-1.0.1.0506-JAR-withdependencies.JAR-configfilesrcmain esourceconfig. yaml運行即可,后面-configfile需要加上配置文件的存放路徑。

通過采用了Maven Assembly插件打包為JAR的形式,可以方便地在Linux系統中使用命令形式運行自動化測試框架,提高了框架的靈活性和跨平臺性。

3 優化效果分析

在優化前自動化框架采用的是真實瀏覽器,并且是單線程運行,但MutilUI采用的是無界面的瀏覽器和多線程并行的運行方式。為了更好地分析優化后的效果,對MutilUI與原自動化測試框架進行對比。優化前后的自動化測試框架運行在相同的軟硬件平臺上,運行環境完全一樣。優化前后自動化測試框架在測試腳本開發、測試腳本執行、測試腳本維護三方面存在差異。在實驗中我們選取一個旅游網站的搜索功能作為測試對象,包括酒店搜索(將用戶對酒店搜索的高頻詞匯作為測試數據,在被測Web應用中進行搜索,對得到的結果類型和內容與預期結果做對比)、景點搜索(將熱門景點名稱作為測試數據,在被測Web應用中搜索,搜索結果是否有正確分類)、推薦菜搜索(將用戶經常搜索的菜名作為測試數據,在被測Web應用中搜索,搜索結果是否有按照應用需求進行分類)。優化前后的具體用時對比如表1所示。

表1 優化前后測試用時對比

根據上面的計算方法得出該測試框架相對原有自動化測試框架的ROI(Return On Investment,投資回報率):

ROI=利益/優化后自動化測試成本=(∑(優化前自動化測試成本)-∑(優化后自動化測試成本))/∑(優化后自動化測試成本)

則自動化測試執行一次的投資回報率是:

ROI(1)=((8+0.15×1+4×1)-(7+0.12×1+2×1))/(7+0.12×1+2×1)=33.22%

同理可以算出多次的投資回報率,具體見表2所示。

表2 測試用時對比

從上面數據可以看出,并且隨著回歸測試次數越多,投資回報率越高。

下面以測試用例個數為單位,給出MutilUI與原自動化測試框架用時對比,如圖2所示。

圖2 原自動化測試框架與MutilUI框架測試用時對比

從測試用時對比的柱狀圖可以看出,在用時增長趨勢上原自動化測試框架明顯比MutilUI快,由此可得出優化后的MutilUI自動化測試框架相對原自動化測試框架在執行效率上有明顯提升。

4 結語

本文基于Web自動化測試框架Selenium進行合理的優化和改進,設計并實現了一套名為MultiUI的自動化測試框架,在MultiUI框架中采用多線程技術實現測試用例的并發執行,提高了測試效率;同時將PhantomJS封裝為WebDriver的方法驅動無界面瀏覽器,實現了無界面化瀏覽器的自動化測試,在縮短測試時間的同時還提高了測試框架的穩定性;最后采用Maven Assembly插件打包為JAR的形式,可以方便地在Linux系統中使用命令形式運行自動化測試框架,提高了框架的靈活性和跨平臺性。

在真實項目中應用優化后的測試框架并與優化前的框架進行對比分析,結果表明,優化后的框架相對原自動化測試框架在執行效率上有明顯提升,本文的研究工作具有良好的應用價值,有助于提高自動化測試框架的執行效率和穩定性。

猜你喜歡
界面效率優化
超限高層建筑結構設計與優化思考
房地產導刊(2022年5期)2022-06-01 06:20:14
民用建筑防煙排煙設計優化探討
關于優化消防安全告知承諾的一些思考
一道優化題的幾何解法
提升朗讀教學效率的幾點思考
甘肅教育(2020年14期)2020-09-11 07:57:42
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
人機交互界面發展趨勢研究
手機界面中圖形符號的發展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
跟蹤導練(一)2
主站蜘蛛池模板: 手机在线看片不卡中文字幕| 婷婷综合色| 免费中文字幕在在线不卡| 久久福利网| 久久亚洲日本不卡一区二区| 精品91在线| 国产成人久视频免费| 在线看片中文字幕| 国产精品综合久久久| 免费在线成人网| 亚洲中文字幕在线一区播放| 性视频久久| 一级一级特黄女人精品毛片| 最新国语自产精品视频在| 日韩av手机在线| 欧美啪啪一区| 亚洲无码精品在线播放| 999福利激情视频| av尤物免费在线观看| 国产成人精彩在线视频50| 午夜国产理论| 精品天海翼一区二区| 国产不卡国语在线| 黄片在线永久| 国产三级毛片| 欧美亚洲一区二区三区在线| 久久黄色一级片| 免费a级毛片18以上观看精品| 71pao成人国产永久免费视频| 无码免费的亚洲视频| 人妻一区二区三区无码精品一区| 成人综合在线观看| 91在线播放免费不卡无毒| 日韩a在线观看免费观看| 国产午夜不卡| 欧美另类图片视频无弹跳第一页| 国产精品欧美在线观看| 国产福利一区视频| 国产精品观看视频免费完整版| AV片亚洲国产男人的天堂| 免费一看一级毛片| 亚洲永久精品ww47国产| 五月天丁香婷婷综合久久| 午夜a视频| 亚洲无码高清视频在线观看 | 免费一极毛片| 日韩成人在线一区二区| 亚洲精品中文字幕无乱码| 国产拍在线| 天堂中文在线资源| 依依成人精品无v国产| 免费一级无码在线网站| 亚洲精品第一页不卡| 日韩精品视频久久| 国产精品夜夜嗨视频免费视频| 一级看片免费视频| 国产精品亚洲欧美日韩久久| 国产精品三级专区| 精品国产成人av免费| 日韩专区欧美| 国产精品主播| 欧美三级日韩三级| 国产精品无码制服丝袜| 久久久久夜色精品波多野结衣| 亚洲国产精品日韩欧美一区| 亚洲综合网在线观看| a级毛片网| 青青操国产| 中国国产高清免费AV片| 成年午夜精品久久精品| 亚洲无码高清视频在线观看| 国产第一福利影院| 欧美狠狠干| 在线人成精品免费视频| 国产手机在线小视频免费观看| 婷婷五月在线| 国产成人免费手机在线观看视频| 亚洲国产一成久久精品国产成人综合| 久久国产精品国产自线拍| 人妻熟妇日韩AV在线播放| 无码aaa视频| 欧美一级在线|