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

        ?

        基于JMeter的Web Service自動(dòng)化測試集成框架

        2016-06-08 05:48:24邊耐政趙東旭

        邊耐政 趙東旭

        (湖南大學(xué)信息科學(xué)與工程學(xué)院 湖南 長沙 410082)

        ?

        基于JMeter的Web Service自動(dòng)化測試集成框架

        邊耐政趙東旭

        (湖南大學(xué)信息科學(xué)與工程學(xué)院湖南 長沙 410082)

        摘要Web Service由于其松散耦合的技術(shù)特性,隨著SOA的流行正日漸普及。隨著需求的增長和應(yīng)用規(guī)模的擴(kuò)大,Web Service正變得越來越復(fù)雜,且其性能表現(xiàn)也愈加重要,對(duì)性能測試的自動(dòng)化程度的要求也越來越高。JMeter作為一款開源的優(yōu)秀性能測試工具,支持對(duì)Web Service進(jìn)行性能測試,但仍需人工分析WSDL后手工輸入測試配置。介紹一種基于JMeter的Web Service自動(dòng)化性能測試框架,它能夠自動(dòng)解析WSDL文檔,生成JMeter性能測試所需的Operations和相關(guān)配置,直接用于JMeter來完成自動(dòng)化測試流程。這有助于軟件測試人員專注于測試用例的設(shè)計(jì),而不必分析復(fù)雜的WSDL文檔,減輕了測試負(fù)擔(dān),提高了測試效率。

        關(guān)鍵詞JMeterWeb Service自動(dòng)化性能測試

        0引言

        面向服務(wù)架構(gòu)SOA是一種架構(gòu)風(fēng)格,將應(yīng)用程序的不同功能單元(服務(wù))通過定義良好的接口和契約聯(lián)系起來[1]。Web Service作為SOA的具體實(shí)現(xiàn)技術(shù),在軟件解決方案中越來越流行。Web Service是面向服務(wù)架構(gòu)的一種標(biāo)準(zhǔn)實(shí)現(xiàn),以基于XML的簡單對(duì)象訪問協(xié)議SOAP(Simple Object Access Protocol)為基礎(chǔ),實(shí)現(xiàn)消息傳遞,從而達(dá)到了平臺(tái)無關(guān)、互操作性強(qiáng)、靈活性高等特點(diǎn)。但是,隨著軟件系統(tǒng)需求的增加和應(yīng)用規(guī)模的擴(kuò)大,Web Service所處的軟件體系結(jié)構(gòu)也變得越來越復(fù)雜。因此,對(duì)Web Service性能指標(biāo)(如響應(yīng)時(shí)間、吞吐量)的要求,也變得越來越高。所以,如何在一個(gè)復(fù)雜的Web應(yīng)用程序里,準(zhǔn)確、高效地執(zhí)行Web Service的性能測試,是一個(gè)重要的課題[2]。現(xiàn)階段關(guān)于Web Service的性能測試,存在一些尚未解決的問題。

        1) 缺乏高效的流程

        Web Service性能測試的基本步驟,包括分析性能需求、制定測試計(jì)劃、搭建測試環(huán)境、選擇測試工具、設(shè)計(jì)測試腳本、執(zhí)行測試、分析測試結(jié)果等過程。而設(shè)計(jì)測試用例的時(shí)候,需要軟件測試人員人工分析Web Service描述語言WSDL文檔描述的數(shù)據(jù)結(jié)構(gòu)、端口、操作等信息(這個(gè)過程并不容易),再結(jié)合測試計(jì)劃,手工設(shè)計(jì)可執(zhí)行的測試用例。以上流程的自動(dòng)化程度并不高,特別是當(dāng)存在著大量測試用例的時(shí)候,若沒有一種高效的自動(dòng)化流程,將會(huì)非常耗時(shí),且容易出錯(cuò)[3]。

        2) 缺乏全面的性能測試工具

        隨著Web Service的流行,出現(xiàn)了一些較為實(shí)用的Web Service測試工具。SoapUI是一款商業(yè)軟件,有易于使用的圖形界面,可以通過SOAP/HTTP來檢查、調(diào)用、實(shí)現(xiàn)Web Service的功能/負(fù)載性測試。它也有開源版本,但功能較商業(yè)版本少了很多,且其對(duì)于性能測試的支持尚不完善[4]。LoadRunner是HP公司的一種適用于各種體系架構(gòu)的自動(dòng)負(fù)載測試工具,它能預(yù)測系統(tǒng)行為并評(píng)估系統(tǒng)性能,但是它對(duì)于Web Service測試的過程非常繁瑣,易用性較低。SOATest是Parasoft一款商業(yè)測試工具,它提供了WSDL驗(yàn)證、單元測試、功能測試和性能測試,但可擴(kuò)展性不高。JMeter是一款開源、純Java編寫的專業(yè)性能測試工具,支持Web Service方面的測試,具有良好的界面,高度可擴(kuò)展性,易于使用等特點(diǎn),但對(duì)于Web Service的WSDL文檔無法完成自動(dòng)解析。

        3) 缺乏詳細(xì)的結(jié)果記錄組件

        大部分性能測試工具缺乏詳細(xì)、清晰的測試結(jié)果記錄組件。當(dāng)Web Service的性能測試完成后,最重要的工作之一,就是對(duì)測試結(jié)果進(jìn)行記錄并分析。Web Service系統(tǒng)的性能是否符合要求,是否存在瓶頸,以及如何提高負(fù)載能力,主要都是依據(jù)性能測試的結(jié)果來進(jìn)行判斷的。所以,是否能生成詳細(xì)、清晰的性能測試結(jié)果記錄是測試中一個(gè)很重要的環(huán)節(jié)。SoapUI對(duì)于Web Service性能測試結(jié)果的記錄,只有簡單的圖表和部分性能數(shù)據(jù),不利于測試人員進(jìn)行分析;而JMeter通過其大量的監(jiān)聽器組件,則實(shí)現(xiàn)了較為全面的結(jié)果記錄功能,有利于測試人員進(jìn)行分析。

        本文將提出一種自動(dòng)化性能測試集成框架,克服以上缺點(diǎn),快速、有效地生成測試Web Service所需的數(shù)據(jù)信息,來進(jìn)行性能測試。Apache JMeter作為一款開源、純Java編寫的專業(yè)性能測試工具,可免費(fèi)使用,具有友好的界面,支持的協(xié)議較多,操作簡便,可擴(kuò)展性好。它集成了很多監(jiān)聽器,對(duì)Web應(yīng)用程序運(yùn)行過程中的性能結(jié)果能進(jìn)行有效地統(tǒng)計(jì)和分析。它不僅能模擬單個(gè)客戶端向服務(wù)器發(fā)送大量請(qǐng)求,還能模擬若干個(gè)分布式客戶端同時(shí)向服務(wù)器加載壓力,能夠很好地解決高并發(fā)的問題[5]。所以,本文將基于JMeter測試工具,研究一種集成框架,對(duì)Web Service進(jìn)行自動(dòng)化性能測試,解決上述問題。

        1Web Service

        根據(jù)萬維網(wǎng)聯(lián)盟W3C(World Wide Web Consortium)的定義,Web Service是一個(gè)軟件系統(tǒng),用以支持網(wǎng)絡(luò)間不同機(jī)器的互動(dòng)操作。網(wǎng)絡(luò)服務(wù)通常是許多應(yīng)用程序接口所組成的,它們透過網(wǎng)絡(luò),如國際互聯(lián)網(wǎng)的遠(yuǎn)程服務(wù)器端,執(zhí)行客戶所提交服務(wù)的請(qǐng)求[6]。

        Web Service(如圖1所示)可以看作是,一個(gè)Web站點(diǎn)使用SOAP傳輸協(xié)議,提供約定的接口,來進(jìn)行數(shù)據(jù)交互。而這些過程,都是基于HTTP和XML(SOAP)。Web Service描述語言WSDL定義了一系列操作,描述服務(wù)端口訪問方式和使用協(xié)議的細(xì)節(jié)。通過通用描述、發(fā)現(xiàn)與集成服務(wù)UDDI(Universal Description, Discovery and Integration),可以注冊(cè)和搜索Web Service,但它不在本文的討論范圍。

        圖1 Web Service主要架構(gòu)

        SOAP是一種簡單且可擴(kuò)展的協(xié)議,使用它定義和構(gòu)造的格式化數(shù)據(jù)可以在分布式的環(huán)境中進(jìn)行交換。

        WSDL是一種正式地描述Web服務(wù)的基于XML的語言。在2001年3月,WSDL 1.1被IBM、微軟作為一個(gè)W3C記錄提交到有關(guān)XML協(xié)議的W3C XML活動(dòng),用于描述網(wǎng)絡(luò)服務(wù)。在2007年6月,WSDL2.0被列為W3C的官方推薦[7]。

        WSDL保證了Web Service通過一種結(jié)構(gòu)化的方式(如XML),對(duì)Web服務(wù)的調(diào)用以及通信,進(jìn)行標(biāo)準(zhǔn)化描述。這相當(dāng)于同客戶端之間形成某種約定??偟膩碚f,WSDL文檔提供了使用Web Service所需要的所有細(xì)節(jié),包括消息、端口類型等[8]。

        2JMeter

        Apache JMeter是一款開源、純Java編寫,用于測試功能行為和性能的軟件。JMeter可以用于測試靜態(tài)、動(dòng)態(tài)資源的性能,如文件、PHP、Java、數(shù)據(jù)庫、FTP服務(wù)器等。它可以模擬在服務(wù)器或其它對(duì)象上進(jìn)行高負(fù)載測試,并且能夠測試服務(wù)的總體性能狀況[9]。它具有圖形化的界面,易于使用,并且它提供了擴(kuò)展API,使得測試人員可以往里面加入某些定制的插件,可擴(kuò)展性高。

        JMeter支持多種協(xié)議類型,如HTTP/HTTPS、SOAP、FTP、Database via JDBC、LDAP、Mail、TCP、MongDB(NoSQL)等。JMeter還具有高穩(wěn)定性。它擁有先進(jìn)的多線程軟件架構(gòu),能夠模擬大量并發(fā)操作,魯棒性很強(qiáng)[10]。

        JMeter的取樣器(Sampler)允許創(chuàng)建樣本,這使得JMeter擁有高度可擴(kuò)展的能力;定時(shí)器(Timer)允許定義線程之間的時(shí)間間隔,創(chuàng)建測試組合條件等;監(jiān)聽器(Listener)允許將響應(yīng)數(shù)據(jù)、服務(wù)器監(jiān)控?cái)?shù)據(jù)等進(jìn)行記錄和處理,同時(shí)可以進(jìn)行展示,并且能夠擴(kuò)展更多界面良好、功能齊全的可視化插件。

        JMeter的“SOAP/XML-RPC Request”取樣器,它就是用于對(duì)基于SOAP協(xié)議的Web Service進(jìn)行性能測試。當(dāng)測試某個(gè)Web Service的時(shí)候,測試人員必須仔細(xì)分析WSDL文檔,包括數(shù)據(jù)結(jié)構(gòu)、端口類型、綁定原則、服務(wù)地址等,而這是非常困難的一項(xiàng)工作。還需要進(jìn)一步解析出WSDL中的Operation的名稱,發(fā)送SOAP請(qǐng)求Action的URL,當(dāng)然還包括一條SOAP消息必要的數(shù)據(jù)格式等內(nèi)容。并且,隨著Web應(yīng)用程序復(fù)雜性的增加,WSDL也同樣變得更復(fù)雜,手動(dòng)解析的難度更大。上述過程對(duì)于一個(gè)軟件測試人員并不簡單,特別是當(dāng)存在著大量測試用例的時(shí)候,又是非常繁瑣、耗時(shí),并且容易出錯(cuò)的。

        3基于JMeter的Web Service自動(dòng)化測試流程

        由于JMeter測試Web Service存在著效率不高的問題,那么,為了減輕測試人員分析WSDL的負(fù)擔(dān),降低測試出錯(cuò)率,提高測試效率,本文提出一套基于JMeter的Web Service自動(dòng)化性能測試流程。其中核心部分為自動(dòng)化測試集成框架——Web服務(wù)測試數(shù)據(jù)生成器WSTDG(Web Service Test Data Generator),還包括它的實(shí)現(xiàn)過程,以及具體的執(zhí)行方式。

        3.1自動(dòng)化測試框架

        WSTDG框架的工作流程原理如圖2所示。該框架主要針對(duì)WSDL1.1規(guī)范的Web Service,對(duì)于WSDL2.0,暫不支持解析。

        圖2 WSTDG框架原理圖

        為了說明WSTDG自動(dòng)化框架的工作流程,下面以中國電視節(jié)目預(yù)告Web Service的WSDL為例來說明。下面為該Web Service的WSDL文檔的部分代碼,它是符合WSDL1.1規(guī)范的。由此,可以看出一個(gè)基本的WSDL文檔通常包含幾個(gè)重要的元素,即types、message、portType、binding、service元素。這些元素嵌套在definitions元素中,definitions是WSDL文檔的根元素。

        xmlns:tns:http://WebXml.com.cn/

        xmlns:wsdl=″http://schemas.xmlsoap.org/wsdl/″

        targetNamespace=http://WebXml.com.cn/《 >

        targetNamespace=″http://Webxml.com.cn/″>

        type=″tns:ChinaTVprogramWebServiceSoap″>

        >

        style=″document″/>

        binding=″tns:ChinaTVprOgram WebSerViceSoap″>

        ChinaTVprogramWebSerVice.a(chǎn)smx″/>

        Types表示數(shù)據(jù)類型定義的容器,它一般使用XML Schema語法來定義數(shù)據(jù)類型。例子中定義了兩個(gè)元素getTVstationDataSet和getTVstationDataSetRespons。

        Message定義一個(gè)操作的數(shù)據(jù)元素。例子中為getTVstationDataSetSoapIn和getTVstationDataSetSoapOut。

        PortType描述一個(gè)Web服務(wù)可被執(zhí)行的操作和相關(guān)的消息。在這個(gè)例子中,端口類型ChinaTVprogramWebServiceSoap定義了getTVstationDataSet操作。該操作輸入一個(gè)命名空間為getTVstationDataSetSoapIn的帶有theAreaID參數(shù)的請(qǐng)求消息,并輸出一個(gè)getTVstationDataSetResponse的響應(yīng)消息,且此消息帶有復(fù)合型參數(shù)。

        Binding表示特定端口類型的具體協(xié)議和數(shù)據(jù)格式規(guī)范的綁定,這里綁定的是命名空間為ChinaTVprogramWebServiceSoap端口。Operation元素定義了該端口提供的操作符,以及如何對(duì)輸入和輸出進(jìn)行編碼,這里使用了literal。

        Service表示相關(guān)服務(wù)訪問點(diǎn)的集合,該標(biāo)簽確定每一個(gè)binding標(biāo)簽的端口地址。ChinaTVprogramWebServiceSoap的端口地址是http://www.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx。

        對(duì)WSDL各個(gè)標(biāo)簽進(jìn)行分析,是測試Web Service一項(xiàng)必不可少的內(nèi)容。而WSTDG自動(dòng)化框架的核心內(nèi)容,正是通過一些Java的XML API,對(duì)WSDL文檔的每個(gè)標(biāo)簽進(jìn)行解析,從而生成相關(guān)的測試數(shù)據(jù)信息[11]。

        WSTDG自動(dòng)化框架首先將WSDL文檔里所有的Operation解析出來。假設(shè)希望測試某個(gè)Operation的請(qǐng)求信息和響應(yīng)信息是否正常,可以自動(dòng)生成相關(guān)的測試數(shù)據(jù),而這些測試數(shù)據(jù)都是能被JMeter識(shí)別并執(zhí)行的。同時(shí),選定的Operation對(duì)應(yīng)的請(qǐng)求數(shù)據(jù)的結(jié)構(gòu),也是被自動(dòng)生成的。當(dāng)然,這包括了各種由XSD(XML Schemas Difinition)所規(guī)定約束的數(shù)據(jù)類型[12]。

        表1為經(jīng)過WSTDG框架解析后的Web Service,所呈現(xiàn)的所有Operation的名稱。但是,設(shè)計(jì)一個(gè)完整的測試用例,還需要其他的數(shù)據(jù)信息。在這里,假定需要測試getTVstationDataSet這個(gè)Operation,WSTDG框架能夠自動(dòng)生成與之對(duì)應(yīng)的SOAP Action、Host、SOAP Data等關(guān)鍵數(shù)據(jù)信息。

        表1 Operations列表

        例如,從bingding標(biāo)簽里解析出SOAP Action的URI,這個(gè)方法的部分代碼如下:

        public static String getSoapAction( BindingOperation operation )

        {

        List list = operation.getExtensibilityElements();

        SOAPOperation soapOperation = WsdlUtils.

        getExtensiblityElement( list, SOAPOperation.class );

        if( soapOperation != null )

        return soapOperation.getSoapActionURI();

        }

        上述代碼表示的方法主要用于獲取特定Operation的SOAP Action的URI。此方法通過傳入BingdingOperation接口作為參數(shù),由它的getExtensibilityElements實(shí)現(xiàn)方法,將返回值用list接收。再通過WsdlUtils的getExtensiblity方法,構(gòu)造一個(gè)SOAPOperation對(duì)象。若該對(duì)象不為空,則返回它用getSoapActionURI方法取得的SOAP Action的URI。

        在中國電視節(jié)目預(yù)告Web Service的WSDL示例中,就可以通過該方法得到getTVstationDataSet的SOAP Action為http://WebXml.com.cn/getTVstationDataSet。

        經(jīng)過WSTDG框架的解析生成,設(shè)計(jì)一個(gè)基于JMeter的Web Service性能測試用例就非常簡單了,因?yàn)闇y試所需的數(shù)據(jù)都是可以通過框架自動(dòng)生成的。到這一步,便可以通過JMeter的“SOAP/XML-RPC Request”取樣器,來執(zhí)行性能測試了。

        總的來說,WSTDG自動(dòng)化測試框架在加載WSDL文檔時(shí),能夠自動(dòng)判斷WSDL文檔的正確性,并且準(zhǔn)確地生成測試需要的數(shù)據(jù)信息,如Operations、SOAP Action、SOAP Data等。這樣測試人員便可以快速、準(zhǔn)確地設(shè)計(jì)測試用例,完成自動(dòng)化測試流程,提高測試效率。

        3.2實(shí)現(xiàn)

        經(jīng)過前面介紹,JMeter具有高度可擴(kuò)展性,于是WSTDG的實(shí)現(xiàn)方式是通過JMeter的Web Service擴(kuò)展取樣器來實(shí)現(xiàn),也就是開發(fā)WSTDG插件。

        WSTDG插件的主要功能是將它解析WSDL生成的相關(guān)測試數(shù)據(jù)信息,直接讀取至SOAP/XML-RPC Request取樣器中。它主要擴(kuò)展了JMeter的三個(gè)組件,分別為ConfigElement、SampleListener、PostProcessor。ConfigElement用于定義WSTDG,SampleListener用于將結(jié)果保存到目標(biāo)取樣器中,PostProcessor用于抽取WSTDG中的結(jié)果。WSTDG插件加載機(jī)制主要是通過掃描JMeter擴(kuò)展下的所有實(shí)現(xiàn)了JMeterGUIComponent和TestBean接口的類,再進(jìn)行初始化。只要確保插件的jar包在擴(kuò)展路徑下(默認(rèn)路徑是JMETER_HOME/lib/ext),那么它就能夠被掃描到,并且執(zhí)行。

        JMeter開發(fā)插件的過程不是本文討論的重點(diǎn),重點(diǎn)是WSTDG自動(dòng)化框架的內(nèi)部工作流程。WSTDG通過載入WSDL,將解析出來的Operation存放至插件取樣器界面中。然后根據(jù)選定的Operation,自動(dòng)生成測試所需的數(shù)據(jù)信息,直接讀取至SOAP/XML-RPC Request取樣器中,執(zhí)行測試。

        WSTDG的實(shí)現(xiàn)架構(gòu)主要包括界面、WSDL加載、框架解析、測試配置信息生成、取樣器等內(nèi)容,如圖3所示。

        圖3 WSTDG架構(gòu)

        下面介紹具體的測試步驟,還是通過中國電視節(jié)目預(yù)告的Web Service來說明如何具體實(shí)現(xiàn):

        1) 加載WSDL文檔

        用戶選擇一個(gè)WSDL文檔,可以通過URL或者本地文件直接加載,非常方便。點(diǎn)擊Button,后臺(tái)就會(huì)把WSDL文檔中所有的Operation解析出來,放至Vector中,再將Vector中的信息提取顯示到WSTDG取樣器界面上。

        2) 選擇Operation

        若選擇getTVstationDataSet這個(gè)Operation,它的Request信息是一個(gè)樹形結(jié)構(gòu)。在這里,Request參數(shù)是由XML Schema所約束的int型。當(dāng)Operation需要鍵入?yún)?shù)時(shí),取樣器界面會(huì)給出提示。有些Operation不需要鍵入?yún)?shù)值,直接發(fā)送SOAP請(qǐng)求便可以得到Response。

        3) 生成SOAP數(shù)據(jù)

        選擇Operation后,根據(jù)WSTDG定義的規(guī)則,SOAP Acion是被生成的,Host是被生成的,用于發(fā)送SOAP信息的數(shù)據(jù)也是被生成的。這時(shí)候,點(diǎn)擊Button,WSTDG取樣器就會(huì)把對(duì)應(yīng)的全部測試數(shù)據(jù)信息,直接讀取至SOAP/XML-RPC Request取樣器界面。測試數(shù)據(jù)內(nèi)容如下:

        SOAPAction:http://WebXml.com.cn/getTVstationDataSet

        Host:www.webxml.com.cn

        SOAP Data:

        xmlns:soapenv=″http://schemas.xmlsoap.org/soap/envelope/″

        xmlns:web=″http://WebXml.com.cn/″>

        int

        3.3執(zhí)行

        在實(shí)際項(xiàng)目中,Web Service系統(tǒng)在上線前,要對(duì)其負(fù)載能力進(jìn)行性能測試,以確定其性能參數(shù)是否符合預(yù)定要求。根據(jù)上一節(jié)論述的實(shí)現(xiàn),就可以使用JMeter對(duì)該Web Service進(jìn)行自動(dòng)化性能測試了。界面如圖4所示。

        圖4 JMeter測試Web Service取樣器界面

        運(yùn)行JMeter,按如下順序:

        1) 創(chuàng)建線程組:Add->Threads(Users)->Thread Group,設(shè)置Name、Number of Threads、Ramp-up Period、Loop Count等參數(shù)。Name代表線程組的名字,Number of Threads代表線程數(shù) (虛擬用戶數(shù)),Ramp-up Period代表線程啟動(dòng)時(shí)間,Loop Count代表循環(huán)次數(shù)。

        2) 添加取樣器:Soap->Add->Sampler->WSTDG Request,Soap->Add->Sampler->SOAP/XML-RPC Request,分別設(shè)置取樣器的Name。若需要測試多個(gè)Operation,則需要添加多個(gè)SOAP/XML-RPC Request取樣器。

        3) 設(shè)計(jì)測試用例:加載WSDL文檔,生成對(duì)應(yīng)的Operation。選擇需要測試的Operation,生成對(duì)應(yīng)的測試數(shù)據(jù),直接讀取至Web Service測試取樣器界面。

        4) 添加監(jiān)聽器來查看測試結(jié)果:Threads(Users)->Add->Listener->View Results Tree/Summary Report/Response Time Graph/Graph Results/View Results in Table。添加完成后,便可以在測試完成后查看測試結(jié)果(也可以添加圖形化效果更佳的插件來擴(kuò)展JMeter的監(jiān)聽器功能)。

        5) 添加定時(shí)器來設(shè)置線程具體啟動(dòng)規(guī)則:Threads(Users)->Add->Timer->Synchronizing Timer。設(shè)置集合的虛擬用戶數(shù),值不宜過大。

        6) 當(dāng)相關(guān)參數(shù)都設(shè)置完畢以后,便可以運(yùn)行:在Run菜單下點(diǎn)擊Start,運(yùn)行測試。

        7) 測試完成后,便可以根據(jù)監(jiān)聽器,對(duì)測試結(jié)果進(jìn)行記錄和分析。

        為了對(duì)比使用WSTDG框架和不使用WSTDG框架,這兩種情況下的測試效果,這里將設(shè)置兩組性能測試方案。一組是人工分析測試(A方案),另一組是WSTDG自動(dòng)化測試(B方案)。測試內(nèi)容為中國電視節(jié)目預(yù)告的Web Service,測試用例數(shù)量為8,請(qǐng)求參數(shù)數(shù)量10,線程數(shù)為10,循環(huán)次數(shù)為1。

        上述兩套測試方案分別執(zhí)行8個(gè)測試用例,測試該Web Service的性能表現(xiàn)。A方案和B方案的測試用例是相同的,但生成測試用例的方法不一樣。A方案是人工分析WSDL方法,重點(diǎn)是將portType元素里面的operation標(biāo)記出來,分析每個(gè)operation對(duì)應(yīng)的描述以及message信息,包括對(duì)應(yīng)types里面的element信息等,通過一系列的分析從而得到測試用例;B方案則簡單許多,直接由WSTDG框架自動(dòng)生成。下節(jié)將具體分析兩套測試方案的優(yōu)劣情況。

        4實(shí)驗(yàn)結(jié)果

        當(dāng)A方案和B方案的性能測試執(zhí)行完畢后,就可以對(duì)結(jié)果進(jìn)行記錄和分析了。首先,可以從“View Results Tree”中查看到取樣器結(jié)果、請(qǐng)求信息、響應(yīng)信息等數(shù)據(jù)。

        上述基于XML的數(shù)據(jù)就是對(duì)于“getTVstationDataSet”這個(gè)Operation,鍵入?yún)?shù)為-1的請(qǐng)求,得到的響應(yīng)結(jié)果。對(duì)于Web Service的性能測試,測試結(jié)果的聚合報(bào)告則更加重要,因?yàn)樗涗浟藴y試性能參數(shù),如表2、表3所示。

        表2 A和B方案性能測試聚合報(bào)告

        表3 兩種測試方案的對(duì)比

        通過執(zhí)行兩套方案的測試用例,得到了預(yù)期的響應(yīng)結(jié)果和聚合報(bào)告。通過聚合報(bào)告,可以知道測試用例執(zhí)行的平均時(shí)間不超過2 s,最大時(shí)間不超過3 s,錯(cuò)誤率為0,均符合性能測試要求。由此,說明該Web Service是可用的,并且人工分析測試方法與WSTDG自動(dòng)化測試方法均是可行的。

        比較兩種測試方案的優(yōu)劣如下:

        在A方案的情況下,人工分析WSDL至少耗時(shí)30 min,再根據(jù)該WSDL設(shè)計(jì)測試用例至少耗時(shí)40 min(平均每個(gè)測試用例耗時(shí)5 min),且有出錯(cuò)現(xiàn)象;在B方案情況下,WSTDG框架自動(dòng)解析WSDL,故分析WSDL這個(gè)步驟耗時(shí)為0 min,再自動(dòng)生成所有測試用例數(shù)據(jù)格式,設(shè)計(jì)測試用例耗時(shí)大大縮短為8 min(平均每個(gè)測試用例僅耗時(shí)1 min),錯(cuò)誤率為0%。

        通過測試耗費(fèi)的時(shí)間來對(duì)比,人工分析方法至少要耗費(fèi)70 min時(shí)間(前提是測試人員熟悉WSDL,若不熟悉則耗費(fèi)的時(shí)間更長),而WSTDG自動(dòng)化框架測試耗時(shí)僅8 min。再通過錯(cuò)誤率來對(duì)比,相對(duì)于人工分析WSDL文檔生成的測試用例,WSTDG自動(dòng)生成的測試用例錯(cuò)誤率更低。所以WSTDG自動(dòng)化框架不論是從測試所耗時(shí)間,還是測試出錯(cuò)率,其表現(xiàn)都是更加優(yōu)秀的。

        綜上所述,使用WSTDG自動(dòng)化框架對(duì)Web Service進(jìn)行性能測試,縮短了測試時(shí)間、降低了測試出錯(cuò)率,從而減輕了測試人員負(fù)擔(dān),提高了測試效率。這里需要補(bǔ)充的是,當(dāng)性能測試結(jié)

        束后,就要根據(jù)性能測試結(jié)果,來分析Web系統(tǒng)當(dāng)前的性能狀況。而分析性能狀況,最終的目的之一,就是進(jìn)行性能調(diào)優(yōu)。當(dāng)然,這需要開發(fā)人員、運(yùn)維人員、DBA共同完成,因?yàn)樾阅芷款i可能是由硬件、應(yīng)用軟件、網(wǎng)絡(luò)設(shè)備、操作系統(tǒng)中的某一個(gè)或多個(gè)原因引起的,這就需要綜合考慮了。

        5結(jié)語

        本文著重討論了一種基于JMeter的Web Service性能測試框架——WSTDG。通過JMeter測試工具,完成自動(dòng)化性能測試流程。同時(shí),通過中國電視節(jié)目預(yù)告的Web Service作為具體實(shí)例進(jìn)行了研究,WSTDG自動(dòng)化性能測試框架能夠根據(jù)WSDL文檔,快速、準(zhǔn)確地生成JMeter測試所需要的測試用例的數(shù)據(jù)信息。通過WSTDG自動(dòng)化測試與人工分析測試的比較,WSTDG自動(dòng)化測試在同樣的測試任務(wù)下,總耗時(shí)更短、出錯(cuò)率更低、效率更高。

        下一步研究的方向,可以是擴(kuò)展WSTDG框架,增加對(duì)解析WSDL2.0的支持。通過自動(dòng)判別WSDL規(guī)范的版本,解析生成對(duì)應(yīng)的相關(guān)測試信息,進(jìn)而更全面地完成對(duì)Web Service的自動(dòng)化性能測試。

        參考文獻(xiàn)

        [1] 毛新生.SOA原理·方法·實(shí)踐[M].北京:電子工業(yè)出版社,2007.

        [2] Sujit Kumar Chakrabarti,Prashant Kumar.Test-the-REST:An Approach to Testing RESTful Web Services[R].Computation World,2009,116:302-303.

        [3] Kao C H,Lin C C,Chan J N.Performance Testing Framework for REST-based Web Applications[C]//International Conference on Quality Software,2013:349-354.

        [4] Smartbear.SoapUI:The Swiss-Army Knife of Testing[EB/OL].2014-04-02.http://www.soapui.org/.

        [5] You J,Zhang L,Wang H,et al.JMeter-based Aging Simulation of Computing System[C]//Proceedings of 2010 International Conference on Computer,CMCE,2010:282-285.

        [6] The World Wide Web Consortium.WEB OF SERVICES[EB/OL].2014-04-10.http://www.w3.org/standards/webofservices/.

        [7] The World Wide Web Consortium.Web Services Description Language (WSDL) 1.1[EB/OL].2014-04-08.http://www.w3.org/TR/wsdl.

        [8] Lawrence Mandel.Describe REST Web services with WSDL 2.0[EB/OL].2014-05-02.http://www.ibm.com/developerworks/cn/webservices/ws-restwsdl/.

        [9] 江新.基于JMeter的MS Web應(yīng)用系統(tǒng)的性能測試研究[D].南京:南京航空航天大學(xué),2011.

        [10] 吳志剛.使用JMeter插件提高性能測試效率[J].軟件導(dǎo)刊,2010,9(4):34-35.

        [11] Bai X Y,Dong W L,Tsai W T,et al.WSDL-Based Automatic Test Case Generation for Web Services Testing[C]//Service-Oriented System Engineering,IEEE International Workshop,2005:207-212.

        [12] Li Z J,Zhu J,Zhang L J,et al.Towards a Practical and Effective Method for Web Services Test Case Generation[C]//Automation of Software Test,2009,AST’09,ICSE Workshop on,IEEE,2009:106-114.

        JMETER-BASED AUTOMATED COLLECTIVE TESTING FRAMEWORK FOR WEB SERVICE

        Bian NaizhengZhao Dongxu

        (CollegeofInformationScienceandEngineering,HunanUniversity,Changsha410082,Hunan,China)

        AbstractBecause of its loosely coupling technology characteristic, Web service is becoming increasingly popular along with the prevalence of SOA. With the requirement increase and the expansion of application scale, Web service is becoming more and more complex, and its performance has also become even more important, the demand in automation degree of performance tests is also increasing. As an outstanding open source performance testing tools, JMeter supports the testing on Web service performance, but still needs manual input of test configuration after artificial analysis on WSDL. This article introduces a JMeter-based automated Web service performance testing framework, it can automatically parse the WSDL document, and then generates Operations and related configuration required by JMeter performance test, the results are directly used to JMeter for the completion of automated testing process. This helps the software testers to focus on the design of test cases without having to analyse complex WSDL document, thus reduces the testing burden and improves testing efficiency.

        KeywordsJMeterWeb ServiceAutomationPerformance testing

        收稿日期:2014-11-14。湖南省交通廳項(xiàng)目(201143)。邊耐政,副教授,主研領(lǐng)域:Web2.0,云計(jì)算。趙東旭,碩士生。

        中圖分類號(hào)TP3

        文獻(xiàn)標(biāo)識(shí)碼A

        DOI:10.3969/j.issn.1000-386x.2016.05.003

        无码国产精品一区二区免费16| 97精品人妻一区二区三区蜜桃 | 亚洲av无码资源在线观看| 在线观看精品国产福利片87| 国产一区精品二区三区四区| 中国免费看的片| 国产一女三男3p免费视频 | 久久99天堂av亚洲av| 人妻少妇乱子伦精品无码专区电影| 精品乱码一区二区三区四区| 免费人成视频网站在线| 精品久久综合日本久久综合网| 精品乱码一区内射人妻无码| 免费精品无码av片在线观看| 无码精品人妻一区二区三区98| 成人一区二区三区国产| 和黑人邻居中文字幕在线| 国产成人无码aⅴ片在线观看| 色偷偷av一区二区三区人妖| 亚洲av熟女一区二区三区站| gv天堂gv无码男同在线观看| 久久青草免费视频| 免费看黄在线永久观看| 日韩激情网| 中文字幕一区二区人妻性色av| 岛国av无码免费无禁网站| 日本韩无专砖码高清| 男女上床视频免费网站| 亚洲自拍偷拍色图综合| 私人毛片免费高清影视院| 亚洲日韩精品欧美一区二区三区不卡 | 久久不见久久见中文字幕免费| 欧美在线播放一区二区| 国产一区二区三区在线观看免费版| 亚洲av午夜精品无码专区| 性高朝久久久久久久| 欧洲乱码伦视频免费| 亚洲一区二区三区2021| 一边吃奶一边摸做爽视频| 亚洲欧美一区二区三区国产精| 91久久大香伊蕉在人线国产|