怎么用Jmeter进行并发测试(图文)持续更新中......

基本步骤

1、新建线程组

测试计划右键——>添加——>线程(用户)——>线程组

2、 添加HTTP请求

线程组右键——>添加——>取样器——>HTTP请求

3、 添加HTTP信息头管理器

线程组右键——>添加——>配置元件——>HTTP信息头管理器

4、 配置获取token的请求

5、 配置后置处理器----json提取器,提取token

 

6、 配置要测试的接口 请求

7、 配置线程组信息

设置并发数:
        线程数1, 循环次数100,说明是一个用户循环100次,
        线程数100,循环次数10,说明100个人,每个人循环10,总归循环1000次。

线程数是并发的意思。
       一般压测一个功能,10至15分钟,那么循环此时就不能写1,要勾上永远。
也可以指定压测多长时间,勾上调度器,配置上持续时间就好。
也可以配置上启动时间和结束时间。如果持续时间和启动时间结束时间都配置上了,会以启动时间和结束时间为准。
启动延迟是指多少秒之后再开始运行。

补充:同步定时器
(1)作用:阻塞线程,直到指定的线程数量到达后,在一起释放,可以瞬间产生很大的压力;
(2)使用同步定时器时,循环次数要勾选为永远

 8、启动,查看结果数/聚合报告/汇总报告 入口

9、查看结果数

10、查看聚合报告

11、查看汇总报告

12、解决后端接收 中文参数乱码的问题

13、如何找到系统的最大并发量

        系统用户比较少,不太清楚并发情况,那么可以用插件,梯式增加线程数,直到我们的吞吐量稳定在一个区间,可以通过TPS压测图来看到,随着一开始线程从0增加,TPS(每秒事务数)在递增,达到一定的线程数时,也就来到了系统的瓶颈,TPS开始趋于稳定,然后线程数再增加,那么TPS可能就是下降了,说明在峰值稳定区间,就是系统能支撑住最佳的一个并发数值了。

在区间中逐步增加步长,出现以下任意现象时,即是最大并发用户数:

1.出现连续报错

2.平均响应时间超过1.5秒(1.5秒是行业标准)

3.tps出现下降趋势

14、吞吐量和TPS的区别

        吞吐量是数据层的指标,指单位时间内系统成功传输的数据量,以MB、GB等为单位
        TPS是网络协议层的指标,指一秒内成功完成的事务数(transaction) 

Jmeter上面的吞吐量实际是平均TPS

1)平均TPS:用聚合报告中Throughput表示

2)瞬时TPS以及最大TPS:用插件jp@gc-Transactions per Second插件表示

 3)吞吐量

当接口没有报错时可以用聚合报告中Throughput表示;

其次,还可以用插件:图形结果表示

  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在使用 JMeter 对 Socket.io 进行长连接测试之前,需要先明确一点,Socket.io 采用了自己的通信协议,即 Engine.IO 协议,这个协议和 HTTP 协议是不同的。因此,无法直接使用 JMeter 自带的 HTTP Sampler 进行测试。 但是,JMeter 支持使用自定义的 Java 类库进行测试,我们可以使用 Java 客户端程序来模拟 Socket.io 客户端。具体步骤如下: 1. 下载 Socket.io 客户端 jar 包,可以从 https://github.com/socketio/socket.io-client-java/releases 下载最新版本的 jar 包。 2. 将 jar 包添加到 JMeter 的 classpath ,可以通过在 JMeter 启动脚本设置 CLASSPATH 环境变量的方式实现。 3. 添加 Java Sampler 到测试计划,并设置 Java 类名为 SocketIOTest,参数设置为服务端的地址和端口号。 4. 编写 SocketIOTest 类的代码,实现 Socket.io 客户端的逻辑。具体代码如下: ```java package com.example; import io.socket.client.IO; import io.socket.client.Socket; import io.socket.emitter.Emitter; import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient; import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; import org.apache.jmeter.samplers.SampleResult; import java.net.URISyntaxException; public class SocketIOTest extends AbstractJavaSamplerClient { private Socket socket; @Override public void setupTest(JavaSamplerContext context) { super.setupTest(context); String serverUrl = context.getParameter("serverUrl"); try { IO.Options options = new IO.Options(); options.forceNew = true; options.reconnection = false; socket = IO.socket(serverUrl, options); } catch (URISyntaxException e) { e.printStackTrace(); } } @Override public SampleResult runTest(JavaSamplerContext context) { SampleResult result = new SampleResult(); result.sampleStart(); socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() { @Override public void call(Object... args) { socket.emit("message", "hello"); } }).on("response", new Emitter.Listener() { @Override public void call(Object... args) { result.setSuccessful(true); result.setResponseData(args[0].toString(), null); result.sampleEnd(); } }).on(Socket.EVENT_DISCONNECT, new Emitter.Listener() { @Override public void call(Object... args) { result.setSuccessful(false); result.setResponseData("disconnected", null); result.sampleEnd(); } }); socket.connect(); return result; } @Override public void teardownTest(JavaSamplerContext context) { super.teardownTest(context); socket.disconnect(); } } ``` 5. 在 JMeter 设置参数化,可以设置多个不同的服务端地址和端口号进行测试。 6. 运行测试计划,查看测试结果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值