Jmeter(四十七)TCP协议测试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jmeter(四十七)TCP协议测试相关的知识,希望对你有一定的参考价值。

参考技术A

江畔何人初见月?江月何年初照人?

----张若虚《春江花月夜》

比较重要的参数:

TCP Sampler提供了3个报文编码类型的实现,分别是

org.apache.jmeter.protocol.tcp.sampler. TCPClientImp

org.apache.jmeter.protocol.tcp.sampler. BinaryTCPClientImpl

org.apache.jmeter.protocol.tcp.sampler. LengthPrefixedBinaryTCPClientImpl

1)TCPClientImpl以文本编辑器中所编辑的纯文本为内容进行发送。

2)BinaryTCPClientImpl以文本编辑器中所编辑的16进制字符(hex)内容为基础转换为二进制的 字节内容进行发送。

3)LengthPrefixedBinaryTCPClientImpl在BinaryTCPClientImpl基础上默认以发送内容的长度为 字节前缀进行填

报文需要16进制报文,因此需要转一下

beanshell前置处理

<pre style="color: rgb(0, 0, 0); font-family: "Courier New"; font-size: 12px; margin: 5px 8px; padding: 5px;">String json =""appVersion":"","autoLogin":true,"deviceId":"","jid":"16780330/p_web_monitor","sdkVersion":"","token":"xxxx""; public static String toHexString(String str)
StringBuffer hexString = new StringBuffer(); for (int i = 0; i < str.length(); i++) int ch = (int) str.charAt(i);
String strHex = Integer.toHexString(ch);
hexString.append(strHex);
return hexString.toString();

vars.put("data", "000000F9000F000103E80000781700" + toHexString(json).toUpperCase());</pre>

服务端可查看连接数

Jmeter+8583报文压力测试

Jmeter一般被用来测试HTTP协议,我第一次拿来测试socket协议,pos机传输报文为8583,协议属于socket,也是TCP协议的一种,网上有LR怎么测试8583报文,我就研究了一下怎么用Jmeter来测试,以下是我的研究结果,供大家参考

1、先打开\\apache-jmeter-3.1\\bin\\jmeter.propertles文件,修改jmeter.propertles中的“TCP Sampler configuration”内容,见附图,添加“tcp.handler=BinaryTCPClientImpl”这一行

2、打开Jmeter,新建线程组,添加Sampler中的TCP取样器,添加结果树

3、填写TCP取样器的各项值,服务器IP地址,服务器端口号,报文体(报文内容必须为为16进制,Jmeter默认发送报文内容为16进制,8583报文各个域的内容可以找一下开发的童鞋进行协助,也可以自己抓包获得,推荐抓包工具“Wireshark”)

大功告成,这个时候就可以运行一下看看了,看一下结果树返回的信息是否正确

至于报文内容是怎么来的就要自己想办法了,我是用的“Wireshark”进行抓包,这个工具百度就有,还是比较好用的,同样的原理,可以对QQ、微信,以及各种使用TCP协议的C/S架构程序或B/S架构程序进行测试

以上是关于Jmeter(四十七)TCP协议测试的主要内容,如果未能解决你的问题,请参考以下文章

在手动停止线程之前,JMeter 没有通过基于 TCP 协议的 JSON RPC 从服务器获得答案

TCP/IP详解 卷1 第十七章 TCP:传输控制协议

第二十七天- 网络通信协议 TCP UDP 缓冲区

JMETER跑35000个线程时启动报内存溢出(tcp协议)

TCP_协议_socket接口-jmeter

Jmeter+8583报文压力测试