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 从服务器获得答案