如何使用jmeter做webservices接口测试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用jmeter做webservices接口测试相关的知识,希望对你有一定的参考价值。

1. 建立WebServiceTest Plan

1) 添加ThreadGroup

右键单击Test Plan选择Add --> ThreadGroup,配置

Number of Threads、Ramp-UpPeriod、Loop Count可随测试不同随时修改。

三种参数解释如下:

Number of Threads为发起线程总数。

Ramp-Up Period 指定了JMeter开启Number ofThreads个线程所需的时间。例如,如果待发起30个线程(即模拟用户),Ram-Up Period为15秒,则每秒增加2个线程(30个用户/15秒)。如果设置为0,则JMeter会自动启动所有模拟用户。

Loop Count为循环次数。

2. 添加 WebService Requests
右键单击“WebService线程组”,Add --> Sampler --> WebService(SOAP)。

注:灰色“线程组”为其它测试使用过的线程组,此处这设置为Disabled线程组,在本次测试中不使用。

配置

将发布好的Service的 WSDL URL粘贴到WSDL URL中点击Load WSDL之后,WebMthods自动弹出,

只需自己选择Method然后单击Configure即可完成绝大部分自动配置

但是里面会涉及Soap/XML-RPC Data的编写,我编写的如下:

[plain] view plain copy
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns1:simpleMethod
xmlns:ns1="http://server.deltaj.com">
<name xsi:type="xsd:string">Yerasel</name>
</ns1:simpleMethod>
</soap:Body>
</soap:Envelope>

这个XML中绝大部分都是固定的。其余解释如下:
simpleMethod是WebService发布的方法;

http://server.deltaj.com是simpleMethod所在类(SimpleServer)的域名,即SimpleServer所在包的包名为com.deltaj.server;

name是simpleMethod的参数名,参数类型是string;

Yerasel是输入的实参。

SimpleService服务端源程序如下:
[java] view plain copy
// SimpleService.java
package com.deltaj.server;

public class SimpleServer

/**
* 简单的测试方法
*
*/
public String simpleMethod(String name)
return name + "Say this is a Simple method ^-^";




注意:
<arg0 xsi:type="xsd:string">Yerasel</arg0>也可以,
在发布成wsdl时候, 方法的参数名称被自动的映射成arg0, arg1, 解决方法如下:
[java] view plain copy
Java代码
public User create(
@WebParam(name = "user")
User user);
因此SimpleService服务端源程序改写如下:
[java] view plain copy
// SimpleService.java
package com.deltaj.server;

public class SimpleServer

/**
* 简单的测试方法
*
*/
public String simpleMethod(@WebParam(name = "personname")String personname)
return personname + "Say this is a Simple method ^-^";




Soap/XML-RPC Data 如下:
[plain] view plain copy
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns1:simpleMethod
xmlns:ns1="http://server.deltaj.com">
<personname xsi:type="xsd:string">Yerasel </personname>
</ns1:simpleMethod>
</soap:Body>
</soap:Envelope>

注:

发布SimpleServer时,需要写xml,这是发布WebService的一般步骤,内容如下:

[plain] view plain copy
<serviceGroup>
<service name="SimpleServer" scope="application">
<description>
SimpleServer
</description>
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</messageReceivers>
<parameter name="ServiceClass">com.deltaj.server.SimpleServer</parameter>
</service>
</serviceGroup>
文件名为META-INF/services.xml。
文件布局

com里面是包以及.class

然后,在bin目录下运行"jar cvf SimpleServer.aar . "即可

将aar放入Tomcat的services目录中即可发布。
参考技术A 您好,1.在Eclipse中编写调用socket通讯的Jmeter脚本新建测试项目编写测试脚本引入JMeter的jar包,从Jmeter的安装目录lib\ext中拷贝两个文件ApacheJMeter_core.jarApacheJMeter_java.jar写测试类,继承AbstractJavaSamplerClient类/***********************************************@authorSimon.Hoo(simon.hoo.it@gmail.com)*@contactMSN:simon_hoo@msn.com*@CreateJuly8,2011********************************************/packagecom.cottsoft.socket.test;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileReader;importjava.io.IOException;importorg.apache.jmeter.config.Arguments;importorg.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;importorg.apache.jmeter.protocol.java.sampler.JavaSamplerContext;importorg.apache.jmeter.samplers.SampleResult;publicclassTestSocketextendsAbstractJavaSamplerClientprivateStringserverIp;privateintserverPort;privateStringfile;@OverridepublicSampleResultrunTest(JavaSamplerContextsc)serverIp=sc.getParameter(“serverIp”);serverPort=Integer.valueOf(sc.getParameter(“serverPort”));file=sc.getParameter(“file”);Stringmessage=readFileByLines(file);SampleResultsr=newSampleResult();sr.setSampleLabel(“SocketTest”);trySocketClientc=newSocketClient();c.callServer(serverIp,serverPort,message);catch(Exceptione)e.printStackTrace();sr.setSuccessful(false);finallysr.sampleEnd();returnsr;@OverridepublicArgumentsgetDefaultParameters()Argumentsparams=newArguments();params.addArgument(“serverIp”,“10.13.0.88″);params.addArgument(“serverPort”,“7001″);params.addArgument(“file”,“F:/test.txt”);returnparams;@OverridepublicvoidsetupTest(JavaSamplerContextcontext)super.setupTest(context);@OverridepublicvoidteardownTest(JavaSamplerContextcontext)super.teardownTest(context);privateStringreadFileByLines(StringfileName)Filefile=newFile(fileName);BufferedReaderreader=null;StringBuffersb=newStringBuffer();try//System.out.println(“以行为单位读取文件内容,一次读一整行:”);reader=newBufferedReader(newFileReader(file));StringtempString=null;//intline=1;//一次读入一行,直到读入null为文件结束while((tempString=reader.readLine())!=null)//显示行号sb=sb.append(tempString);//System.out.println(“line”+line+“:”+tempString);//line++;reader.close();catch(IOExceptione)e.printStackTrace();finallyif(reader!=null)tryreader.close();catch(IOExceptione1)returnsb.toString();getDefaultParameters方法:主要用于设置传入的参数,setupTest方法:为初始化方法,用于初始化性能测试时的每个线程,runTest方法:为性能测试时的线程运行体,teardownTest方法:为测试结束方法,用于结束性能测试中的每个线程,2.把上面的例子打包,然后把生成的Alipay_Test_Posp.jar文件拷贝到Jmeter的安装目录lib\ext下。3.编写JMeter的测试计划。

使用Jmeter测试WebService接口

使用Jmeter测试WebService接口,可以借助SoapUI来完成。

1、SoapUI里面的操作:

Wsdl文件或链接导入或添加到SoapUI打开待测请求;运行请求;取URL  SOAPAction 、报文。

2、JMeter里面的操作:

为线程组添加SOAP/XML-RPC Rquest ,右击线程组添加->Sampler->SOAP/XML-RPC Rquest

把从SoapUI获取的信息粘贴到相应位置

发送请求并查看结果

 

以上是关于如何使用jmeter做webservices接口测试的主要内容,如果未能解决你的问题,请参考以下文章

使用Jmeter测试WebService接口

jmeter压测操作数据库分布式linux下运行webservice接口测试charles抓包

JMeter学习笔记15-如何用JMeter做接口测试

Jmeter接口测试

jmeter压测学习9-响应断言

jmeter 接口测试简介