因测试任务较多,但是压测又需要尽快进行,所以了解下jmeter,下面是简单又详细的使用步骤
- 下载
- 压测使用的元件所在位置
- 定义变量
- csv数据文件设置
- 响应断言
- 查看结果树
- 聚合报告
- 图形结果
- 测试片段/http请求
- csv数据文件使用
- 压测
- 结果分析
- 插件库
- Transactions per Second
- Response Times Over Time
下载
个人有个习惯,只要换电脑如果不是实在破解不动,尽量选最新版本的,所以jmeter的下载也是官网下载最新版本,当前使用的版本是5.2.1
解压后在bin目录下用jmeter.bat启动
可以在选项->选择语言中切换中英文
元件的位置
因为这东西下次使用也不知何时何地,因此详细描述下位置所在
每个测试片段应该都可以单独配置,但是我压测两个服务,配置相同,所以配置都在线程组下的级别
- step1: 添加线程组(可以更换名字)
- step2:线程组->添加->配置元件->添加用户定义变量
- step3:线程组->添加->配置元件->csv数据文件设置
- step4:线程组->添加->监听器->查看结果树
- step5:线程组->添加->监听器->聚合报告
- step6:线程组->添加->断言->响应断言
- step7:线程组->添加->监听器->图形结果
- step8:线程组->添加->测试片段->测试片段
- setp9:测试片段->添加->取样器->HTTP请求
csv文件
为什么使用csv文件?
要进行压测的服务是面向C端的接口,因此内部的数据都是会走redis缓存的,如果只是单纯的使用相同的参数进行压测结果是不准确的,因此我需要压测的时候使用不同的数据进行请求csv文件的使用
创建一个txt文件; 修改后缀为csv即可; txt也可以,但是我觉得csv后缀让我更加舒服一些,csv的格式可以网上查一下,文章较多,下面是我使用逗号分割的数据展示:
1900-10086-saas-134903645339712257,134903888052550406,134903888052550410,134907030342269710
1900-1003-saas-134914445471323173,134906253846713346,134914509915755566,134914509915755572
1900-002-saas-134914445471323173,134906253846713346,134914509915755566,134914509915755572,134914660248910619
1900-10087-saas-134914445471323173,134906253846713346,134914509915755566,134914509915755572,134914660248910619,134914660249959199,135178971588393767,135178971588393773,135178971589442355,135178971589442361
1900-002-saas-135178971588393767,135178971588393773,135178971589442355,135178971589442361,135180553283638298,135180553283638302
在jmeter中使用csv文件:
csv可以认为是一个表格, 然后这里设置下表头和分割方式, 文件中我使用了横线进行分割; 因此我这里分隔符也是横线;
后面会使用表头进行放置数据
压测
本次要压测的是POST请求
- 用户定义的变量
- 当前在本地压测测试一下,设置了本地变量: local->127.0.0.1
- 设置Http请求头
- HTTP信息头管理器中添加 Content-Type 值为 application/json
- 响应断言
- 服务响应成功,code为100,因此在响应断言中增加测试返回数据中是否包含:code:100的字符串
-
HTTP请求
直接上图, 使用csv文件和使用本地变量都是使用${}来进行引用
- 配置压测时的配置数据
1.响应断言
作用是用于统计成功请求,对于不符合的请求按请求失败处理,最终统计成功的请求
本次压测成功的请求返回的是code为100的; 因此响应断言中增加:
2.线程数量
压测结果
启动后看两个地方:
1.查看结果树
里面记录了请求的响应,加入断言后在这里可以得到体现,如果断言失败是失败请求,如果异常率较高; 在这里可以过滤出失败的请求; 看下失败的原因
2.聚合报告
看接口的tps就在这里进行查看
插件库
默认并没有这个Plugins Manager选项; 这时候需要先下载插件的jar包;网址上有使用说明,将jar包放在 lib/ext 下重启jmeter;
我这边要用的插件是Avaliable Plugins中最后的一个; 这里会有一个下载的过程; 下载的时候jmeter跟进程中断一样; 当设置完成后在Installed Plugins中展示;
-
Transactions per Second
即tps,每秒事务数,性能测试中,最重要的2个指标之一。该插件的作用是在测试脚本执行过程中,监控查看服务器的TPS表现————比如整体趋势、实时平均值走向、稳定性等。
-
Response Times Over Time
即TRT,事务响应时间,性能测试中,最重要的两个指标的另外一个。该插件的主要作用是在测试脚本执行过程中,监控查看响应时间的实时平均值、整体响应时间走向等。
其他插件; 可以按需使用; 当前我没有使用的需求
最后; 上述截图只是本地的一个测试样例; 我用来熟悉jmeter使用; 截图数据不具备参考