如何在jmeter里进行socket通讯测试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在jmeter里进行socket通讯测试相关的知识,希望对你有一定的参考价值。

参考技术A 您好,1. 在Eclipse中编写调用socket通讯的Jmeter脚本
新建测试项目
编写测试脚本
引入JMeter的jar包,从Jmeter的安装目录lib\ext中拷贝两个文件
ApacheJMeter_core.jar
ApacheJMeter_java.jar
写测试类,继承AbstractJavaSamplerClient类
/**********************************************
* @author Simon.Hoo(simon.hoo.it@gmail.com)
* @contact MSN: simon_hoo@msn.com
* @Create July 8, 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;
publicclassTestSocketextendsAbstractJavaSamplerClient
privateStringserverIp;
privateintserverPort;
privateStringfile;

@Override
publicSampleResult runTest(JavaSamplerContext sc)
serverIp=sc.getParameter(“serverIp”);
serverPort=Integer.valueOf(sc.getParameter(“serverPort”));
file=sc.getParameter(“file”);

Stringmessage=readFileByLines(file);

SampleResult sr=newSampleResult();
sr.setSampleLabel(“Socket Test”);
try

SocketClientc=newSocketClient();
c.callServer(serverIp,serverPort,message);
catch(Exceptione)
e.printStackTrace();
sr.setSuccessful(false);
finally
sr.sampleEnd();

returnsr;

@Override
publicArguments getDefaultParameters()
Arguments params=newArguments();
params.addArgument(“serverIp”,“10.13.0.88″);
params.addArgument(“serverPort”,“7001″);
params.addArgument(“file”,“F:/test.txt”);
returnparams;

@Override
publicvoidsetupTest(JavaSamplerContext context)
super.setupTest(context);

@Override
publicvoidteardownTest(JavaSamplerContext context)
super.teardownTest(context);


privateStringreadFileByLines(StringfileName)
File file=newFile(fileName);
BufferedReader reader=null;
StringBuffer sb=newStringBuffer();
try
//System.out.println(“以行为单位读取文件内容,一次读一整行:”);
reader=newBufferedReader(newFileReader(file));
StringtempString=null;
//int line = 1;
// 一次读入一行,直到读入null为文件结束
while((tempString=reader.readLine())!=null)
// 显示行号
sb=sb.append(tempString);
//System.out.println(“line ” + line + “: ” + tempString);
//line++;

reader.close();
catch(IOExceptione)
e.printStackTrace();
finally
if(reader!=null)
try
reader.close();
catch(IOException e1)




returnsb.toString();


getDefaultParameters方法:主要用于设置传入的参数,
setupTest方法:为初始化方法,用于初始化性能测试时的每个线程,
runTest方法:为性能测试时的线程运行体,
teardownTest方法:为测试结束方法,用于结束性能测试中的每个线程,
2. 把上面的例子打包,然后把生成的Alipay_Test_Posp.jar文件拷贝到Jmeter的安装目录lib\ext下。
3. 编写JMeter的测试计划。本回答被提问者和网友采纳

jmeter3.2版本如何进行webservice接口功能测试

jmeter3.2版本之后就没有SOAP/XML-RPC Request插件了,所以没办法直接进行webservice接口的测试。

原理上:

Web service一般就是用SOAP协议通过HTTP来调用它,其实他就是一个WSDL文档,客户都可以阅读WSDL文档来用这个Web service

SOAP简单的理解,就是这样的一个开放协议SOAP=RPC+HTTP+XML:采用HTTP作为底层通讯协议;RPC作为一致性的调用途径,XML作为数据传送的格式,允许服务提供者和服务客户经过防火墙在INTERNET进行通讯交互。

所以其实我们是可以通过一些方法来通过,jmeter中的http请求来测试webservice.

当然官网的手册上也说明了是可以的。只需要借助http信息头管理器两个参数Content-TypeSOAPAction

 

 

首先需要在SOAPUI中新建project填入webservice接口地址。并且在接口中填入参数,点击发送。

确保参数发送成功,具体如下图。

这一步是为了获取一些jmeter没有的信息

 

 

 

 

1、测试计划-->右击添加-->Threads-->新增线程组

 

 

2、线程组-->右击配置元件-->增加http信息头管理器

 

 

3、线程组-->点击添加-->Sampler-->HTTP请求

 

 

4、http信息头管理器需要填入Content-Type(必填)或者SOAPAction,而SOAPAction不是必须填的信息。

这两个数据要从soapUI中进行获取。当蓝色划线显示不为"http://"开头的信息时,这个soapAction的信息就不是必填的。

 

 

 

http信息头管理器中,我们需要填入Content-Type信息

 

 

5、在HTTP请求中XML中的数据信息,全部复制到jmeter的HTTP请求中的Body Data。

 

 

6、然后发送请求,成功(*^▽^*)

 

 本篇文章适合在什么场景下使用?

1、在基于接口是webservice的情况下,想在jmeter实现轻量级接口自动化。

2、在仅会jmeter不会LR的情况下,想要对webservice接口进行性能测试。

资料:来自jmeter官网

https://www.cnblogs.com/stone9159/p/8078842.html

https://www.cnblogs.com/leijiangtao/p/5137351.html

 

 

 

 

 

 

 

 

 

 

 

以上是关于如何在jmeter里进行socket通讯测试的主要内容,如果未能解决你的问题,请参考以下文章

JMeter并发测试遇到Socket closed错误解决方案

如何在jmeter中为java采样器请求生成多个登录用户

jmeter3.2版本如何进行webservice接口功能测试

socket 在两个局域网如何通讯 、?

jmeter进行dubbo接口测试

stm32如何将4G模块挂载成网卡