Jmeter⾃定义编写Java代码调⽤socket通信
⼀、前⾔
最近需要测试⼀款⼿机游戏的性能,不到啥录制脚本的⼯具,然后,另外想办法。性能测试实际上就是对服务器的承载能⼒的测试,和各种类型的⼿机客户端没有啥多⼤关系,⼿机再好,服务器负载不了,也不能够运⾏,依照这个思路,测试该⼿游的性能就化为对服务器的性能测试,也就是服务器和⼿机客户端所联系的接⼝的测试。
如果是可以⽤HTTP调⽤的,那样很好解决,直接带上地址参数就OK,开始⼀两个很顺利,设计参数化了⼀下数据就很顺利的解决,然后,遇到了⼀个切换场景的接⼝,⽤的是socket通信,再⽤上述⽅法貌似不可⾏,然后偶很懒,所以折腾了⼀天,结果,还是没有到好的办法,⽆奈,想到了Jmeter可以调⽤java请求,只好到开发那边拿到协议,通过⾃定义编写java代码来实现socket通信,连接成功,返回数据成功。顺便说⼀句,Jmeter真是居家旅⾏必备~~~~
⾸先,Jmeter使⽤⾃定义编写代码的步骤:
⼆、代码
SocketClient.java类
package app;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.Socket;
public class SocketClient {
public boolean sendMessage(String ipAddress,int port,String data){
try {
Socket socket=new Socket(ipAddress,port);
DataInputStream  input=new InputStream());
DataOutputStream output = new OutputStream());
byte[] Bytes("UTF-8");
/
/获得长度
int length=message.length;
message[0] = (byte) 0x00;
message[length-1] = (byte) 0xff;
output.write(message);
output.flush();
System.out.println(message);
Thread.sleep(1000);
if (!socket.isClosed() && socket.isConnected()) {
byte[] cbuf=new byte[8096];
System.out.println("读取到的是:"+cbuf);
String responseLine=new String(cbuf);
System.out.println(responseLine+"===========");
}
output.close();
input.close();
socket.close();
return true;
} catch (Exception e) {
return false;
}
}
}
TestScence.java类
package app;
import org.fig.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
public class TestScence extends AbstractJavaSamplerClient {
private SampleResult results;
private String ipAddress;
private String port;
private String data;
/**
* 初始化⽅法
*/
public void setupTest(JavaSamplerContext jsc) {
results = new SampleResult();
ipAddress = Parameter("ipAddress", "");
port = Parameter("port", "");
data = Parameter("data", "");
if (ipAddress != null && ipAddress.length() > 0){
results.setSamplerData(ipAddress);
怎么用java编写app软件}
if (port != null && port.length() > 0){
results.setSamplerData(port);
}
if (data != null && data.length() > 0){
results.setSamplerData(data);
}
}
/**
* 设置传⼊参数
*/
public Arguments getDefaultParameters() {
Arguments params = new Arguments();
params.addArgument("ipAddress", "");
params.addArgument("port", "");
params.addArgument("data", "");
return params;
}
/**
* 线程运⾏体
*/
public SampleResult runTest(JavaSamplerContext arg0) {        SocketClient sc = new SocketClient();
int port2 = 50001;
if (port != null && port.length() > 0){
port2 = Integer.parseInt(port);
}
results.sampleStart();
boolean flag = sc.sendMessage(ipAddress, port2, data);        results.sampleEnd();
if (flag){
results.setSuccessful(true);
}else{
results.setSuccessful(false);
}
return results;
}
/**
* 结束⽅法
*/
public void teardownTest(JavaSamplerContext arg0) {
}
}
三、导出为可以使Jmeter读取的jar包
在项⽬的根节点,右击选择【Export】,选择java下⾯的【JAR file】
然后⼀直点击下⼀步即可。
将导出的jar包放到如下⽬录:\apache-jmeter-2.9\lib\ext,然后重新启动Jmeter啊,新建java请求,就可以看到你刚刚写的java类啦,填写上相关的参数就可以啦。
测试不到⼀年,对性能啥的理解还不是太深,各位⼤神不要较真~~~~

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。