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破解版在线亚洲| 99久久99视频| 欧美特级AAAAAA视频免费观看| 欧美国产视频| 日韩小视频网站hq| 四虎综合网| 亚洲成在人线av品善网好看| 四虎成人免费毛片| 国产无码精品在线| 久久成人免费| 漂亮人妻被中出中文字幕久久 | 亚洲aⅴ天堂| 日韩麻豆小视频| 婷婷99视频精品全部在线观看| 国产成人精品三级| 日韩精品久久久久久久电影蜜臀 | 丁香六月激情综合| 亚洲日韩高清在线亚洲专区| 九九视频免费看| 亚洲天天更新| 青青草a国产免费观看| 五月激情婷婷综合| 97在线免费视频| 又污又黄又无遮挡网站| 色九九视频| 一本大道视频精品人妻 | 国产欧美日韩专区发布| 国产乱子伦精品视频| 熟妇人妻无乱码中文字幕真矢织江 | 国产福利免费在线观看| 亚洲视频色图| 激情综合图区| 国产免费精彩视频| 午夜啪啪网| 亚洲精品视频在线观看视频| 久久久久人妻一区精品| 亚洲h视频在线| 国产一区成人| 日韩无码视频播放| 国产极品嫩模在线观看91| 日本免费a视频| 114级毛片免费观看| 九九久久99精品| 亚洲第一黄片大全| 一级毛片免费观看不卡视频| 欧美a网站| 米奇精品一区二区三区| 亚洲成年网站在线观看| 欧美日韩国产综合视频在线观看| 欧洲成人在线观看| 亚洲精品欧美日本中文字幕| 日韩国产综合精选| 黄片一区二区三区| 亚洲成AV人手机在线观看网站| 国产精品久线在线观看| 国产91精品久久| 亚洲自拍另类| 国产精品久久久久鬼色| 国产黄网站在线观看| 日韩小视频网站hq| 亚洲系列中文字幕一区二区| 中文字幕乱码二三区免费| 日韩在线2020专区| 中文字幕无码av专区久久| 91精品国产自产在线老师啪l| 欧美成人一区午夜福利在线| 全免费a级毛片免费看不卡| 无码一区中文字幕| 欧美色99| 成人蜜桃网| 麻豆精品在线视频| 18禁黄无遮挡网站| 亚洲欧美天堂网| 国产成人夜色91| 免费在线看黄网址| 色综合天天娱乐综合网| av在线无码浏览| 热这里只有精品国产热门精品| 亚洲精品天堂在线观看| 久久9966精品国产免费| 日韩久草视频|