国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于JMeter的Web Service自動化測試集成框架

2016-06-08 05:48邊耐政趙東旭
計算機(jī)應(yīng)用與軟件 2016年5期
關(guān)鍵詞:測試工具測試用例插件

邊耐政 趙東旭

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

?

基于JMeter的Web Service自動化測試集成框架

邊耐政趙東旭

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

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

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

0引言

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

1) 缺乏高效的流程

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

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

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

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

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

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

1Web Service

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

Web Service(如圖1所示)可以看作是,一個Web站點使用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),可以注冊和搜索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、微軟作為一個W3C記錄提交到有關(guān)XML協(xié)議的W3C XML活動,用于描述網(wǎng)絡(luò)服務(wù)。在2007年6月,WSDL2.0被列為W3C的官方推薦[7]。

WSDL保證了Web Service通過一種結(jié)構(gòu)化的方式(如XML),對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)、動態(tài)資源的性能,如文件、PHP、Java、數(shù)據(jù)庫、FTP服務(wù)器等。它可以模擬在服務(wù)器或其它對象上進(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ò)展的能力;定時器(Timer)允許定義線程之間的時間間隔,創(chuàng)建測試組合條件等;監(jiān)聽器(Listener)允許將響應(yīng)數(shù)據(jù)、服務(wù)器監(jiān)控數(shù)據(jù)等進(jìn)行記錄和處理,同時可以進(jìn)行展示,并且能夠擴(kuò)展更多界面良好、功能齊全的可視化插件。

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

3基于JMeter的Web Service自動化測試流程

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

3.1自動化測試框架

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

圖2 WSTDG框架原理圖

為了說明WSTDG自動化框架的工作流程,下面以中國電視節(jié)目預(yù)告Web Service的WSDL為例來說明。下面為該Web Service的WSDL文檔的部分代碼,它是符合WSDL1.1規(guī)范的。由此,可以看出一個基本的WSDL文檔通常包含幾個重要的元素,即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ù)類型。例子中定義了兩個元素getTVstationDataSet和getTVstationDataSetRespons。

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

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

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

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

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

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

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

表1 Operations列表

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

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實現(xiàn)方法,將返回值用list接收。再通過WsdlUtils的getExtensiblity方法,構(gòu)造一個SOAPOperation對象。若該對象不為空,則返回它用getSoapActionURI方法取得的SOAP Action的URI。

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

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

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

3.2實現(xiàn)

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

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

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

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

圖3 WSTDG架構(gòu)

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

1) 加載WSDL文檔

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

2) 選擇Operation

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

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

選擇Operation后,根據(jù)WSTDG定義的規(guī)則,SOAP Acion是被生成的,Host是被生成的,用于發(fā)送SOAP信息的數(shù)據(jù)也是被生成的。這時候,點擊Button,WSTDG取樣器就會把對應(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í)行

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

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

運行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代表線程啟動時間,Loop Count代表循環(huán)次數(shù)。

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

3) 設(shè)計測試用例:加載WSDL文檔,生成對應(yīng)的Operation。選擇需要測試的Operation,生成對應(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è)置線程具體啟動規(guī)則:Threads(Users)->Add->Timer->Synchronizing Timer。設(shè)置集合的虛擬用戶數(shù),值不宜過大。

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

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

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

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

4實驗結(jié)果

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

上述基于XML的數(shù)據(jù)就是對于“getTVstationDataSet”這個Operation,鍵入?yún)?shù)為-1的請求,得到的響應(yīng)結(jié)果。對于Web Service的性能測試,測試結(jié)果的聚合報告則更加重要,因為它記錄了測試性能參數(shù),如表2、表3所示。

表2 A和B方案性能測試聚合報告

表3 兩種測試方案的對比

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

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

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

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

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

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

5結(jié)語

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

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

參考文獻(xiàn)

[1] 毛新生.SOA原理·方法·實踐[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。湖南省交通廳項目(201143)。邊耐政,副教授,主研領(lǐng)域:Web2.0,云計算。趙東旭,碩士生。

中圖分類號TP3

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

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

猜你喜歡
測試工具測試用例插件
基于SmartUnit的安全通信系統(tǒng)單元測試用例自動生成
自編插件完善App Inventor與樂高機(jī)器人通信
Http并發(fā)連接測試工具
基于混合遺傳算法的回歸測試用例集最小化研究
手車式真空斷路器回路電阻測試電流線接頭研究
基于jQUerY的自定義插件開發(fā)
MapWindowGIS插件機(jī)制及應(yīng)用
福祿克推出先進(jìn)的連接式測試工具系統(tǒng)
基于Revit MEP的插件制作探討
基于依賴結(jié)構(gòu)的測試用例優(yōu)先級技術(shù)