如何在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-Type和SOAPAction。
首先需要在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错误解决方案