JMeter对WebService的压力测试
2016-05-26 13:48
387 查看
官网教程: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的设置
相关文章推荐
- MySQL压力测试方法 如何使用mysqlslap测试MySQL的压力?
- Linux下Web性能压力测试工具http_load使用教程
- Web压力测试工具:http_load、webbench、ab、Siege使用方法
- Linux下Web网站压力测试工具Webbench使用教程
- 压力测试中需要掌握的几个基本概念
- 使用Apache ab工具对Apache服务器进行简单的压力测试
- apache ab工具页面压力测试返回结果含义解释
- tomcat、netty以及nodejs的helloworld性能对比 3ff8
- Jmeter接口测试实例讲解
- 用jmeter测试impala
- JMeter技巧集锦
- Gatling 压力测试实例:多个虚拟用户回放多个请求
- JMeter的介绍和脚本录制以及对WEB进行测试
- Linux中安装使用http_load对服务器进行压力测试的教程
- MySQL压力测试方法 如何使用mysqlslap测试MySQL的压力?
- DNS服务器(五):使用queryperf对DNS服务器作压力测试
- 压力测试工具集合
- 一款不错的网站压力测试工具webbench