SuperBenchmarker 压测工具
一.使用 chocolatey 安装
使用管理员权限打开 Power Shell
输入 choco 查看是否安装了chocolatey
choco
二.安装 chocolatey
输入:
cinst SuperBenchmarker
三.sb工具参数
参数 | 全称 | 指令含义 |
---|---|---|
-c | –concurrency | 并发请求书(默认: 1) |
-n | –numberOfRequests | 请求总数(默认: 100) |
-N | –numberOfSeconds | 运行测试的秒数。如果指定,-n将被忽略。 |
-y | –delayInMillisecond | 延迟的毫秒数(默认值:0) |
-u | –url | 必需的, 要调用的目标URL。可以包含占位符。 |
-m | –method | 使用的HTTP方法(默认值:GET) |
-t | –template | 请求使用的模板的路径(设置请求头或者参数) |
-p | –plugin | 插件(DLL)的名称,它提供了一种用于替换占位符或覆盖状态码的类型。必须位于相同的文件夹中。 |
-l | –logfile | 存储运行状态的日志文件的路径 |
-f | –file | 为测试提供替换值的CSV文件的路径 |
-a | –TSV | 如果您使用-f选项而不是CSV选项来提供制表符分隔文件(TSV) |
-d | –dryRun | 运行一次试运行请求以确保一切正常 |
-e | –timedField | 指定数据中的datetime字段。如果设置,请求将按照顺序发送记录的时间。 |
-g | –TlsVersion | 使用TLS协议的版本。对于TLS 1.0、TLS 1.1和TLS 1.2,接受值为0、1、2和3和SSL3 |
-v | –verbose | 提供详细跟踪信息 |
-b | –tokeniseBody | Tokenise the body |
-k | –cookies | 输出的cookies |
-x | –useProxy | 是否使用默认浏览器代理。用于在Fiddler中查看请求/响应。 |
-q | –onlyRequest | 在干运行(调试)模式下,只显示请求。 |
-h | –headers | 显示请求和响应的报头。 |
-z | –saveResponses | 保存响应在-w参数或如果没有提供\response_<时间戳> |
-w | –responsesFolder | 当且仅当设置了-z参数时保存响应的文件夹 |
-C | –dontcap | 记录参数时不要限制在50个字符 |
-R | –responseRegex | 要从响应中提取的正则表达式。如果它有组,它将检索最后一个组。 |
-j | –jsonCount | 捕获路径下的元素数量,例如root/leaf1/leaf2查找leaf2子元素的数量——将其作为另一个参数存储在日志中。如果数组在JSON的根目录,使用空格:-j ’ ’ |
-W | –warmUpPeriod | 逐步增加并发用户数的秒数。热身呼叫不影响统计数据(默认值:0)。 |
-P | –reportSliceSeconds | 报告片的间隔秒数。例如,如果选择5,报告图表有5秒的间隔(默认值:3)。 |
-F | –reportFolder | 存储报告文件的文件夹的名称。缺省值为yyyy-MM-dd_HH-mm-ss。开始时间FFFFFF。 |
-B | –dontBrowseToReports | 默认情况下,某人会打开浏览器并显示正在运行的测试报告。如果指定,则不会浏览。 |
-U | –shuffleData | 如果指定,将打乱由-f选项提供的数据集。 |
四.常用示例
1. 发送1000个请求调用api
sb -u http://localhost:8087/api/space_coords -n 1000
2. 发送1000个请求调用api, 且并发量为 50
sb -u http://localhost:8087/api/space_coords -n 1000 -c 50
3. 发送50个并发请求调用api, 且并时间限定为 30 秒
sb -u http://localhost:8087/api/space_coords -c 50 -N 30
4. 发送50个并发请求调用api, 且并时间限定为 30 秒, 且模拟实际应用, 每个请求延迟 100 毫秒
sb -u http://localhost:8087/api/space_coords -c 50 -N 30 -y 100
5. 测试带header信息的接口
利用 -t 参数, template.txt 中为header中的验证信息
sb -u http://localhost:8065/data/v/message/find_count -c 50 -N 30 -t template.txt
6. 测试请求方法为Post请求且带参数的接口
利用 -t 参数, template.txt 中为header中的信息和请求参数, 请求头与参数之间有空行
Content-Type: application/json
{
"name": "15211116565",
"age": "123456"
}
sb -u http://localhost:8065/datamiddle/v1/user/login -c 50 -N 30 -m POST -t template.txt
7. 测试请求方法为Get的接口且模拟随机参数
{{{number:RAND_INTEGER:[1:1000000]}}} 为随机生成 1 - 1000000 的数字
sb -u http://localhost:8087/api/add?number={{{number:RAND_INTEGER:[1:1000000]}}} -c 50 -N 30
8. 测试请求方法为Get的接口, 且随机参数设定为固定的几个值
利用 -f 参数, 文件为csv或者txt, 例如 param.txt
number,
110,
120,
119,
114,
sb -u http://localhost:8087/api/add?number={{{number}}} -c 50 -N 30 -f param.txt
9. 测试请求方法为Post的接口, 且随机参数设定为固定的几个值
此时既要利用 -f 参数, 也要利用 -t 参数
-t 的 template.txt 文件:
Content-Type: application/json
{
"name": {{{name}}},
"age": {{{age}}}
}
-f 的 param.txt 文件, 字符串要加双引号:
name,age,
"小红",11,
"小绿",12,
"小黄",13,
sb -u http://localhost:8087/api/add_post -c 50 -N 30 -m POST -t template.txt -f param.txt