我们有一个JMX文件,它定义了一个JMeter测试计划。
API 并发性能测试 https://zhengkai.blog.csdn.net/
模拟N个API的1分钟并发测试
base_url = https://your-api-domain.com(但后面被覆盖为http://localhost:1234/generator/)
- 线程组名称:API 并发线程组
- 线程数(用户数):20
- 启动时间(Ramp-up period):10秒
- 持续时间:30秒
- 循环次数:1(因为设置了持续时间,所以会忽略循环次数,一直运行直到30秒结束)
- 遇到错误后的操作:继续
包含两个HTTP请求,会随机执行其中一个。
1.1 第一个HTTP请求:template/all
- 方法:POST
- 路径:/generator/template/all
- 请求体:{"id":1234}
- 请求头:Content-Type: application/json
1.2 第二个HTTP请求:code/generate
- 方法:POST
- 路径:/generator/code/generate
- 请求体:一个复杂的JSON对象,包含表SQL和生成代码的选项
- 聚合报告(StatVisualizer)
- 汇总图(StatGraphVisualizer)
- 响应时间图(RespTimeGraphVisualizer)
- 查看结果树(ViewResultsFullVisualizer)-> 结果输出到D:\Workspace\result.csv
- 用表格查看结果(TableVisualizer)
注意:在测试计划最后,用户定义的变量被重新定义为:base_url = http://localhost:1234/generator/(覆盖了前面的定义)
1. 确保JMeter已安装(建议5.6.3或更高版本)
2. 打开这个JMX文件
3. 检查线程组设置(线程数、持续时间等)是否符合预期
4. 检查HTTP请求中的目标地址和端口(目前是localhost:1234)是否指向正确的测试环境
5. 如果需要修改请求参数,可以编辑对应的HTTP请求
6. 点击运行按钮(绿色三角形)开始测试
1. 聚合报告:提供每个请求的统计信息(平均响应时间、中位数、90%百分位、最小/最大响应时间、错误率、吞吐量等)
2. 汇总图:显示测试过程中每秒事务数(TPS)的变化
3. 响应时间图:显示每个请求的响应时间随时间的变化
4. 查看结果树:可以查看每个请求的详细请求和响应信息(注意:这个监听器会消耗大量内存,不建议在长时间高并发测试中使用,但这里配置了输出到CSV文件,可以离线查看)
5. 表格结果:以表格形式展示每个样本的结果
1. 测试目标:评估两个API接口在20个并发用户持续30秒的压力下的性能表现。
2. 测试设计:
- 使用随机控制器模拟用户随机调用两个API的情况。
- 每个HTTP请求都使用POST方法发送JSON数据。
- 每个请求都设置了正确的Content-Type头。
模拟10个API的1分钟并发测试
base_url
https://your-api-domain.com
=
20
10
30
0
true
true
continue
1
false
1
localhost
1234
http
utf-8
/generator/template/all
true
POST
true
false
{"id":1234}
=
Content-Type
application/json
localhost
1234
http
utf-8
/generator/code/generate
true
POST
true
false
{"tableSql":"CREATE TABLE 'sys_user_info' (\n 'user_id' int(11) NOT NULL AUTO_INCREMENT COMMENT '用户编号',\n 'user_name' varchar(255) NOT NULL COMMENT '用户名',\n 'status' tinyint(1) NOT NULL COMMENT '状态',\n 'create_time' datetime NOT NULL COMMENT '创建时间',\n PRIMARY KEY ('user_id')\n) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息'","options":{"dataType":"sql","authorName":"zhengkai.blog.csdn.net","packageName":"com.software.system","returnUtilSuccess":"ResponseUtil.success","returnUtilFailure":"ResponseUtil.error","isPackageType":true,"isSwagger":false,"isAutoImport":false,"isWithPackage":false,"isComment":true,"isLombok":true,"ignorePrefix":"sys_","tinyintTransType":"int","nameCaseType":"CamelCase","timeTransType":"Date"}}
=
Content-Type
application/json
false
saveConfig
true
true
true
true
true
true
true
false
true
true
false
false
false
true
false
false
false
true
0
true
true
true
true
true
true
false
saveConfig
true
true
true
true
true
true
true
false
true
true
false
false
false
true
false
false
false
true
0
true
true
true
true
true
true
false
saveConfig
true
true
true
true
true
true
true
false
true
true
false
false
false
true
false
false
false
true
0
true
true
true
true
true
true
false
saveConfig
true
true
true
true
true
true
true
false
true
true
false
false
false
true
false
false
false
true
0
true
true
true
true
true
true
D:\Workspace\result.csv
false
saveConfig
true
true
true
true
true
true
true
false
true
true
false
false
false
true
false
false
false
true
0
true
true
true
true
true
true
base_url
http://localhost:1234/generator/
=