【工具使用】【Jmeter】接口自测工具

1  前言

对于平时写 Java 的我们,当功能写完以后,如何自测呢?比如你接口有没有并发问题,性能多少,是不是应该有一个自己的把握。当然 Postman、Apifox 也可以测试我们的接口,而我们本节主要是看 Jmeter。

2  Jmeter

2.1  简单认识

Apache JMeter 是 Apache 组织基于 Java 开发的压力测试工具,用于对软件做压力测试
JMeter 最初被设计用于 Web 应用测试,但后来扩展到了其他测试领域,可用于测试静态和动态资源,如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库和 FTP 服务器等等。JMeter 可对服务器、网络或对象模拟巨大的负载,在不同压力类别下测试它们的强度和分析整体性能。另外,JMeter 能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证程序是否返回了期望结果。为了最大限度的灵活性,JMeter 允许使用正则表达式创建断言。

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  小结

好啦,这个就是我平时用到的,有理解不对的地方欢迎指正。

posted @   酷酷-  阅读(56)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享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报文格式以及常见状态码
点击右上角即可分享
微信分享提示