前戏:
“小A,这个接口7,800毫秒,优化下吧!”,老板说到。
“没问题!”小A答。
经过一顿猛如虎的操作,小A很快把接口优化完了。但是小A却愁容满面,这是怎么回事呢,原来虽然接口优化完了,但是小A不知道如何做性能测试。
是时候JMeter登场了!
正文
JMeter简介:
JMeter是一款压测工具,支持多种服务协议(HTTP、TCP、FTP)、各平台兼容(纯Java)、具有可视化数据展示等特点。
利用JMeter,我们可以对自己的接口进行压测,通过可视化的数据,量化接口性能指标,让你做到心里有字母数。
本着talk is cheap, show me the code的精神,我们废话不多说,直奔主题。
1. JMeter的安装
1.下载链接🔗:jmeter.apache.org/download_jm…

- 下载,解压好好,进入文件的bin目录,双击jmeter执行即可(对于windows,需要双击jmeter.bat)。
整个IDE如下图所示:

2. JMeter的简单使用示例
a. 通过模版新建一个测试任务
工具栏: 点击<templates...> ,选择新建一个 测试计划。

b. 测试接口
1. 接口文档
我们先随便找一个接口来测试。
URL: host+[port]+"/api/client/userActionRecord/batch"
Method: POST
Headers:
Content-Type: application/json
Authorization: Bearer {{clientToken}}
Body:
userIds: ["xxx","yyy"]
actionTypes: [1,2]
2. 根据接口编写test plan



另外,记得把这个Assertion 删除掉。

3. 最后一步:运行

参数介绍:
| option | |
|---|---|
| Number of Threads (users) | 线程总数 |
| Ramp-up period (seconds) | 加速时间(如果线程总数为100,加数时间为10s,那么每个0.1s将会创建一个线程。) |
| Loop Count | 每个线程执行请求的次数。 执行请求的总数=Number of Threads * Loop Count |
4. 查看结果:
点击[Aggregate Graph]

| Metrics | |
|---|---|
| Samples | 请求数 |
| Average | 平均响应时间(ms, 以下时间单位均为ms) |
| Median(50% Line) | 50%的请求小于这个响应时间。(类似于对响应时间升序排序,取中间的那个值) |
| 90%/95%/99% Line | 与Median类似 |
| Min | 最小响应时间 |
| Max | 最大响应时间 |
| Error% | 错误率 |
| Throughput | 吞吐量,请求数/时间 |
| Received | 响应获得的数据量/时间 |
| Sent | 请求发送的数据量/时间 |
可以看到,在线程总数=5,加速时间=5s,每个线程执行请求=2的情况下,这个接口的平均响应时间为49ms,最小响应时间为28ms,最大响应时间为92ms。
3. 参考
- jmeter.apache.org/index.html JMeter官方文档,极力推荐
- www.testingjournals.com/category/pe… 一系列JMeter使用指南,推荐
- blog.csdn.net/lluozh2015/… 某大佬博客,推荐