JMeter对WebService的压力测试

官网教程:http://jmeter.apache.org/usermanual/build-ws-test-plan.html

下面将用JMeter实现对某天气预报的Web服务实现压力测试。

该天气预报的服务列表,如图所示。

网址:http://wsf.cdyne.com/weatherws/weather.asmx


图 1 天气预报Web服务的方法列表


案例场景:分别设置10个、20个、30个和50个用户数量同时访问天气预报的Web服务的GetCityForecastByZip方法,并且都循环2次。

参数设置:

测试计划中添加线程组“JMeter Users”,其下添加【配置元件】的【HTTP信息头管理器】,【Sample】的【HTTP请求】,相应对其命名为“10个用户请求”、“20个用户请求”等,最后添加【Aggregate Graph】和【查看结果树】两种监听器。


图 2 线程组的设置

【HTTP信息头管理器】中设置web服务方法的头信息。


图 3 HTTP信息头管理器的设置

在图1的web服务清单中,点击GetCityForecastByZIP,打开Soap消息的页面,如图4所示,根据其HTTP信息头和SOAP消息体设置JMeter中相应参数。


图 4 GetCityForecaseByZIP的SOAP消息

复制HTTP消息的三行,然后点【Add from Clipboard】可以自动将所有的头信息添加到管理器中。


图 5 HTTP信息头管理器的参数设置


图 6 HTTP请求的设置

执行测试,可以通过监听器【查看结果树】的结果,查看HTTP消息传递和SOAP消息的详细信息。


图 7 【查看结果树】的执行结果

最后,分别以10个、20个、30个和50个虚拟用户对Web服务端口执行压力测试,【Aggregate Graph】测试结果,测试结果以表格和图形两种方式显示,如图 8所示:


图 8 【AggregateGraph】测试结果

在实际施压过程中,会发现测试结果中有些数据并没有随着用户数的增多而规律变化,例如30个用户的吞吐量反而小于20个用户,这是因为WebService压力测试时通过网络测试的,网络的不稳定,会影响测试数据的稳定性。

上面是利用JMeter中【HTTP请求】发送SOAP消息, JMeter中【Sample】还提供了【SOAP/XML-RPC Request】可以用更直接的方式发送SOAP消息或XML-RPC消息给Web服务,只要用一个【SOAP/XML-RPC Request】就可以替代【HTTP信息头管理器】和【HTTP请求】进行消息传递。例如,上面的例子,将配置修改如下即可。


图 9 SOAP/XML-RPC Request的配置

 

【SOAP/XML-RPC Request】中的“URL”是必填项,是直接请求SOAP消息的网址;“SOAPAction”是HTTP头消息中的值,代替之前【HTTP信息头管理器】的相应设置;【SOAP/XML-RPC Request】默认是Content-type的值是“text/xml”;“Soap/XML-RPC Data”是设置Soap XML消息或者XML-RPC指令,也可以用文件的方式设置。

这里Soap/XML-RPC Data与前面Soap消息体不同的是,这里的数据可以是未做处理的Soap消息,不一定要完全符合SOAP 1.1规范的数据。

有时候Web服务没有显式的提供Soap消息,例如基于Java Web Service的一个化学名词拼写检查和返回同义词的Web服务接口,扫描二维码可以打开其API介绍网站(http://chemspell.nlm.nih.gov/spell/)。该Web服务只提供了WSDL文档,【Soap/XML-RPC Data】的值则需要通过SoapUI软件等软件将WSDL文档生成其相应Soap消息来设置,如图10所示。



图 10 JWS的SOAP/XML-RPC Request的设置

 

猜你喜欢

转载自blog.csdn.net/jinhe123/article/details/51506685