Jmeter TCP脚本编写指南



TCP脚本编写

同步短连接

脚本编写步骤

1.        添加TCP SamplerServer Name or IPPort Number中输入对应IP和端口。

2.        Text to send中输入请求报文

3.        添加 View Result Tree进行脚本调试

4.        进行脚本断言和参数化

注意事项

1.        若多个采样器使用相同Server Name or IPPort Number等,可使用TCP Sampler Config进行统一管理。

2.        TCP Sampler默认实现TCPClientImpl类。发送文本请求。若需要发送十六进制报文,在TCP SamplerTCPClient Classname内输入BinaryTCPClientImpl。(或在jmeterbin目录下的user.properties文件内添加tcp.handler= BinaryTCPClientImpl)。此时响应报文也是十六进制。

适用项目

Socket同步短连接系统

 

常规的socket的脚本,如下


Jmeter TCP脚本编写指南_Java



目前JmeterTCP sample不支持报文体中有16进制和ascii的混合体,当我们有些系统中报文头是16进制报文体是ascii的情况,Jmeter建议全部采用16进制方式发送,全部采用16进制发送的方法:

1、修改Jmeterjmeter.properties配置文件,增加内tcp.handler=BinaryTCPClientImpl

2、重启Jmeter,进行发送执行


Jmeter TCP脚本编写指南_Java_02


16进制的发送报文和接收报文不容易识别,也不容易进行参数化,建议增加前置处理器将ascii报文转化为16进制,增加后置处理器将接收到的16进制报文转化为ascii16机制和ascii互转的代码如下:

public String converStringToHex(String str)
{
    
char[]chars = str.toCharArray();
    StringBuffer hex = 
new StringBuffer();
    
for(int i=0;i<chars.length;i++)
    {
        hex.append(Integer.toHexString((
int)chars[i]));
    }
    
return  hex.toString();
}

public String converHexToString(String hex)
{
    StringBuilder sb = 
new StringBuilder();
    StringBuilder temp =  
newStringBuilder();
    
for(int i =0;i<hex.length()-1;i+=2)
    {
        String output =hex.substring(i,(i+
2));
        
int decimal=Integer.parseInt(output,16);
        sb.append((
char)decimal);
        temp.append(decimal);
    }
    
return sb.toString();
}


异步长连接

单工双链

脚本编写步骤

由于按照目前的Jmeter版本异步单工双链使用tcp组件式不支持的,因此需要使用Java开发实现异步单工双链,将代码打成jar包进行java方法调用完成。

注意事项

1、需要实现,clinet端和server端是互为serverclient的,也就是双发既作为client端又作为server端。、

2、响应时间的计算,需要设计合理将开始时间和结束时间进行手工计算。

适用项目

使用异步单工双连方式实现的系统,例如理财平台。

双工单链

参考同步短连接的脚本编写方法,只需要将Re –use connection勾选上,close-connection勾选掉即可。