【工具使用】【Jmeter】接口自测工具
1 前言
对于平时写 Java 的我们,当功能写完以后,如何自测呢?比如你接口有没有并发问题,性能多少,是不是应该有一个自己的把握。当然 Postman、Apifox 也可以测试我们的接口,而我们本节主要是看 Jmeter。
2 Jmeter
2.1 简单认识
2.2 下载 Jmeter
可以直接去官方地址进行下载,注意跟自己的 JDK 版本要搭配,最新的已经 5.6.3。我自己的是 5.5 的。
2.3 启动 Jmeter
在 bin 文件夹下的 jmeter.bat 即可启动。
3 接口测试示例
3.1 测试背景
比如我有四个接口,分别是 POS的零售单、POS零售退、OMS零售单、OMS零售退,主要是提供给第三方系统,让他们可以直接进行单据的创建,并且进行库存的扣减,链路调用如下:
OMS、POS 把他们完结的零售、零售退同步到中台,主要是单据的沉淀以及结算的输出、库存的扣减等。
那么对于这四个接口我们开发要考虑的是什么:
(1)接口幂等,也就是根据某个标志来保证单据不重复,比如我们每个接口中的外部单号,就被用来做幂等标志
(2)接口的正确性,订单有没有创建出来、库存有没有扣减
(3)接口的一致性,比如订单和库存的一致性,会不会出现订单创建出来了,库存却没有扣减记录
(4)接口的稳定性、接口性能、TPS,比如对一些配置或者中间映射加缓存等
那么对于 Jmeter 而言,如何测试呢?
(1)对于接口幂等,也就是外部单号我要能随机,并且要有不断重读的单号
(2)接口的正确性、一致性、稳定性也就是我要制造多大的流量
3.2 测试
其实 Jmeter 一次测试就是由很多组件组成的,接下来我简单说下我平时用的这些组件:
(1)线程组
(2)HTTP 组件
请求体中可以放一些内置函数,比如我们的外部单号要随机并且要有重复的,我们的商品数量要随机的,可以这么写:
// 随机的 1-5 "skuQuantity": ${__Random(1,5,)}, // 外部单号 __time 当前时间 + 随机数1-10 "externalNumber": "POS${__time(yyyyMMddHHmm)}${__Random(1,10,)}",
(3)结果树
(4)聚合报告
Label(标签):表示每个请求的名称或标签。可以是HTTP请求、JDBC请求等。
Samples(样本数):表示每个请求的执行次数。这是测试中收集到的样本总数。
Average(平均值):每个请求的平均响应时间。单位通常是毫秒(ms)。这是所有样本响应时间的平均值。
Median(中位数):中位数响应时间,即50%的请求响应时间小于这个值,50%的请求响应时间大于这个值。中位数比平均值更能反映典型响应时间,因为它不受极端值的影响。
90% Line(90%线):90%的请求响应时间小于这个值,10%的请求响应时间大于这个值。这个指标帮助识别长尾效应和响应时间分布。
Min(最小值):最小响应时间,即所有样本中最快的响应时间。
Max(最大值):最大响应时间,即所有样本中最慢的响应时间。
Error %(错误百分比):请求失败的百分比。这个指标显示了多少请求在测试过程中失败。
Throughput(吞吐量):每分钟处理的请求数。这个指标反映了系统的处理能力。
Received KB/sec(每秒接收的KB):每秒钟从服务器接收到的数据量。这个指标显示了网络流量的输入。
Sent KB/sec(每秒发送的KB):每秒钟发送到服务器的数据量。这个指标显示了网络流量的输出。
(5)图形结果
以图形的方式看请求的一个动态图,类似我们平时看 内存或者CPU 的监控等,持续稳定在下方最好,波澜起伏的= =不行。
(6)HTTP头
添加一些固定的 HTTP 头,每个接口都是共享的,一般配一个即可。
(7)JSON断言
就是根据你的返回结果,一般都是 JSON,解析出来某个字段,该字段值是多少就表示请求成功。
(8)常量定时器
就是控制每个线程,一分钟最多发送多少次请求,比如这里的 120 就表示 一分钟可以发 120 个请求,也就是 1秒发送 2 次。
大家还要结合服务的状态,比如请求达到多少 CPU、内存达到多少,服务会不会崩掉,结合着看哈。
4 小结
好啦,这个就是我平时用到的,有理解不对的地方欢迎指正。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2023-06-25 【网络】【HTTP】HTTP 特性以及演变
2023-06-25 【网络】【HTTP】HTTP 缓存技术
2023-06-25 【网络】【HTTP】GET 与 POST
2023-06-25 【网络】【HTTP】HTTP报文格式以及常见状态码