一、Socket简介

  什么是socket呢?我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把

TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。socket通信模块示意图

如下:

二、TCP Sampler相关知识

  我们先来看一下取样器的界面,然后再做详细介绍。

Name:组件的名称,可以自定义;

TCPClient classname:指定TCP发送报文的格式,后面会给出详细介绍;

Server Name or IP:服务器的地址;

Port Number:服务器的端口号;

Connect Timeout:与服务器套接字应用连接超时时间(ms),如果设置了,读取超时会终止请求;

Response Timeout:响应的超时时间(ms),设置后,响应时间达到该值,无论是否响应成功都会关闭连接;

Re-use connection:如果选中,连接会一直处于打开状态,否则读取到数据之后就关闭;

Close connection: 如果选中,在TCP Sampler运行完毕之后就会被关闭;

Set NoDelay:是否使用Nagle算法;

SO_LINGER:该配置项用于控制在关闭连接之前是否要等待缓冲区中的数据发送完成。如果SO_LINGER选项指

定了值,则在得到关闭连接的请求之后还会等待指定的秒数以完成缓冲区中数据的发送,在指定的SO_LINGER秒

数完成后,关闭连接。因此,如果你把该选项设置成0,那么所有连接在收到关闭连接的时候都会立即关闭,避免

产生很多处于TIME_WAIT状态的套接字。

End of line(EOL) byte value:判断行结束的byte值,如果你指定的值大于127或者小于-128,则会跳过EOL检测。

Text to Send:发送的报文

Login Configuration:根据官网文档解释,TCP相关请求默认不使用此项。

三、接口测试实战

 在进行TCP接口测试之前,首先要搞清楚两个问题:

  1.发送的报文格式是什么样的?

  2.发送的报文结束符是什么?

 TCPClient classname支持三种类别:

  TCPClientImpl:文本传输,TCP请求中默认的类;

  BinaryTCPClientImpl:用来发送十六进制报文,可以将十六进制报文转换成二进制;

  LengthPrefixedBinaryTCPClientImpl:继承了BinaryTCPClientImpl类所有功能,默认在BinaryTCPClientImpl类前面增加两个字节数据长度。

  本次项目中,发送的是定长的XML格式报文。所谓定长,就是在报文的头部定义一段数字来获取整个报文的

数据长度。这个长度是在开发过程中约定好的,如果不传,TCP请求是无论如何也不会成功。报文是XML格式,

所以结束符为 > 。

  发送的报文为XML格式,我们需要去jmeter安装目录找到jmeter.properties,修改tcp.handler的值为

TCPClientImpl并去掉前面的#号。这里需要注意,TCP请求默认的文本传输编码是GBK,如果报文不是

这种编码,需要更改tcp.charset的值,我这里更改为UTF-8。

  此外,根据报文格式,参照ASCII对照表确定End of line(EOL) byte value的值为62。整体测试参数配置如下:

  单条数据跑通后,调整Thread Group中的线程数和循环次数即可进行TCP接口压力测试了。

参考文档:https://jmeter.apache.org/usermanual/component_reference.html#TCP_Sampler

Jmeter socket接口测试的更多相关文章

  1. jmeter做接口测试

    jmeter做接口测试有两种方式: 1. 2.

  2. Jmeter用于接口测试中【接口耦合关联的实现】

    Jmeter用于接口测试时,后一个接口经常需要用到前一次接口返回的结果,应该如何获取前一次请求的结果值,应用于后一个接口呢,拿一个登录的例子来说明如何获取. 1.打开jmeter, 使用的3.3的版本 ...

  3. 性能学习之六---socket接口测试

    socket协议较底层,所以是一个万能协议.socket发的是数据包,所以较难看懂. 下面我们来讲解socket接口测试. 大致思路为:新建sever端和client端---建立连接---发送数据 一 ...

  4. Jmeter用于接口测试中,关联如何实现

    Jmeter用于接口测试时,后一个接口经常需要用到前一次接口返回的结果,应该如何获取前一次请求的结果值,应用于后一个接口呢,拿一个登录的例子来说明如何获取. 1.打开jmeter, 使用的3.3的版本 ...

  5. 怎样用JMeter做接口测试?

    本文介绍JMeter如何做web service测试,一般来说web服务,一般指的是HTTP请求相关的内容.这里就介绍一下如何利用JMeter做基于HTTP的web接口测试.接口也叫API(Appli ...

  6. 使用jmeter进行接口测试

    目录 jmeter介绍 jmeter安装 修改UTF-8 jmeter主要测试组件 jmeter元件作用域与执行顺序 使用Jmeter进行接口测试 jmeter介绍 JMeter是Apache基金会J ...

  7. 如何用Jmeter做接口测试

    Jmeter介绍&测试准备: Jmeter介绍:Jmeter是软件行业里面比较常用的接口.性能测试工具,下面介绍下如何用Jmeter做接口测试以及如何用它连接MySQL数据库. 前期准备:测试 ...

  8. 使用jmeter做接口测试----柠檬不萌!

    一.乱码解决方案 1.jmeter查看结果树乱码 (1)在jmeter的bin目录下找到jmeter.properties这个文件,添加上 sampleresult.default.encoding= ...

  9. 使用Jmeter做接口测试(学生信息的6个接口)

    使用Jmeter做接口测试,案例中涉及到接口有:获取学生信息.登录.添加学生信息.学生金币充值.获取所有学生信息.文件上传. 一.获取学生信息(get请求) 服务器名称或IP:输入被请求服务器的名称或 ...

随机推荐

  1. h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated

    Reference 问题 ... h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype ...

  2. Pycharm无法import caffe

    这里是首先建立在读者可以在终端导入而无法在Pycharm中导入的情况下的: 参考链接(问题的最后一个回答) 选用了虚拟环境的python作为解释器, 但由于caffe的特殊性, 依然没有导入, 原因就 ...

  3. Inspect Network Activity In Chrome DevTools

    Inspect Network Activity In Chrome DevTools https://developers.google.com/web/tools/chrome-devtools/ ...

  4. 双十一NGK官方快讯!

  5. 阿里面试这样问:redis 为什么把简单的字符串设计成 SDS?

    2021开工第一天,就有小伙伴私信我,还给我分享了一道他面阿里的redis题(这家伙绝比已经拿到年终奖了),我看了以后觉得挺有意思,题目很简单,是那种典型的似懂非懂,常常容易被大家忽略的问题.这里整理 ...

  6. HTTPS原理解析

    HTTPS 一些概念 http 概述 HTTP是一个客户端(用户)和服务端(网站)之间请求和应答的标准,通常使用TCP协议.其本身位于TCP/IP协议族的应用层. 特点 - 客户端&服务器 - ...

  7. SpringBoot + Security学习笔记

    SpringSecurity学习笔记 本以为是总结,最后写成了笔记,所以还是需要更加的努力啊. 开始的时候看了一遍官方文档,然后只看懂了加密器. 然后又学了一个尚硅谷的视频,虽然这个教程是在讲一个项目 ...

  8. 国内源安装ROS2

    资料参考: https://www.mscto.com/op/428870.html 需要修正的一点是,使用如下的命令添加源: sudo sh -c 'echo "deb [arch=$(d ...

  9. jdbc连接数据库(oracle、mysql)

    很简单,直接贴代码吧!代码注释自认为足够理解! 第一步创建数据库连接类,数据库连接地址.数据库驱动.用户名.密码建议创建为公共变量,方便修改,一目了然. package db; import java ...

  10. Fastdfs数据迁移方案

    1.     方案背景描述 环境迁移,需要迁移旧环境的fastdfs集群的数据到新环境,由于之前数据迁移仅仅是针对mysql和mongodb,对fastdfs数据的迁移了解甚少,本文档主要是针对fas ...