本文已参与「新人创作礼」活动,一起开启掘金创作之路。
Jmeter
Jmeter 功能非常强大, 是专业的性能测试工具.
下载 & 安装
1.下载地址 : jmeter.apache.org/download_jm…
2.使用的是 5.2.1 版本, 需要 java1.8+ 版本以上.
3.下载并解压, 点击运行 bin/ApacheJMeter.jar 即可.
测试 HTTP 请求的流程
以一个普通的 Get 请求为例。
一个 Jmeter 测试需要如下几种组件:测试计划, 线程组, 取样器, HTTP 请求, 察看结果树.
1.创建测试计划
2.测试计划上右键 -> 添加 -> 线程(用户) -> 线程组
设置参数 , 循环次数就是执行线程组几次.
3.在线程组上右键 -> 添加 -> 取样器 -> http 请求
编写请求内容 :
4.添加监听器, 用于查看压测结果.
这里添加三种:聚合报告, 图形结果, 用表格查看结果. 区别在于结果展现形式不同.
在线程组上, -> 添加 -> 监听器
5.点击运行测试线程 :
下方显示运行结果 :
测试HTTP请求其他设置
请求参数字段有汉字
需要把编码复选框勾选, 才能正常通过接口查询回数据.
使用 POST 请求发送 JSON 格式数据
① 测试计划, 右键, 添加线程组, 线程组中添加 取样器, HTTP 请求, 察看结果树, HTTP 请求配置好各项参数, 方法现在使用 POST.
② 发送 POST 请求, 请求体是 json 格式的话, 还需要设置请求头信息.
http 请求, 右键, 添加 -> 配置元件 -> HTTP 信息头管理器
③ 保存脚本, 运行, 查看运行结果.
添加用户自定义变量
添加用户自定义变量用以 Http 请求参数化, 右键点击 线程组 -> 添加配置元件 -> 用户定义的变量. 并在 Http 请求中使用该参数, 格式为:${ 参数名 }
添加 cookie
在测试计划上, 线程组上, HTTP请求上, 都可以通过右键, 添加, 配置元件, Cookie 管理器 来添加 cookie, 不同位置上的 cookie 对当前测试的作用范围不同.
\
Linux 上使用 Jmeter 进行压测
① Linux 中安装 Jmeter. Jmeter 安装包上传到 Linux 服务器并解压.
② 导出测试计划 ( 文件 -> 保存为测试片段 ). 在 Windows 上先将测试计划配置好, 然后导出为.jmx文件, 这里命名为 test.jmx.
③ 将 jmx 文件上传到 Linux 服务器. 我这里在 Jmeter 安装目录下创建了一个文件夹 MyTest 存放 jmx 文件, 方便管理.
④ 运行压测. 使用jmeter.sh运行 jmx 文件, 将压测结果输出到 result.jtl 文件中, 命令如下.
sh ./bin/jmeter.sh -n -t test.jmx -l result.jtl
⑤ 将 result.jtl 导入 Windows 中的 Jmeter, 即可查看压测结果.
\
添加响应断言
响应断言就是判断响应信息里, 是否有我们想要的信息. 如果有, 就说明测试通过, 如果没有, 就说明测试不通过, 那就可能有 bug 了.
① 右键点击 "HTTP请求" -> "添加" -> "断言" -> "响应断言"
② 添加一个查询是否成功的断言
模式匹配规则 :
- 匹配 : 响应的文本需要和测试模式里的文本
完全一样. 这个模式下可以写正则表达式. - 相等 : 响应的文本需要和测试模式里的文本
完全一样. 这个模式下不能写正则表达式. - 包括 : 响应中
有测试模式中的文本, 即断言成功. 这个模式下可以写正则表达式. - 字符串 : 响应中
有测试模式中的文本, 即断言成功. 这个模式不能写正则表达式. - 否 : 取反, 响应中
没有测试模式中的文本, 即断言成功.
③ 添加断言结果
右键点击 HTTP请求 -> 添加 -> 监听器 -> 断言结果
④ 再运行一次就可以看到断言结果成功或失败了
添加聚合报告
① 右键点击 线程组 -> 添加 -> 监听器 -> 聚合报告, 用以存放性能测试报告.
② 在聚合报告标签页下, 运行测试计划, 结果如下 :
聚合报告参数详解:
- Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性, 这里显示的就是 Name 属性的值
- Samples:请求数——表示这次测试中一共发出了多少个请求, 如果模拟10个用户, 每个用户迭代10次, 那么这里显示100
- Average:平均响应时间——默认情况下是单个 Request 的平均响应时间, 当使用了 Transaction Controller 时, 以Transaction 为单位显示平均响应时间
- Median:中位数, 也就是 50% 用户的响应时间
- 90% Line:90% 用户的响应时间
- Min:最小响应时间
- Max:最大响应时间
- Error%:错误率——错误请求数/请求总数
- Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second), 当使用了 Transaction Controller 时, 也可以表示类似 LoadRunner 的 Transaction per Second 数
- KB/Sec:每秒从服务器端接收到的数据量, 相当于LoadRunner中的Throughput/Sec
一般而言, 性能测试中我们需要重点关注的数据有: #Samples 请求数, Average 平均响应时间, Min 最小响应时间, Max 最大响应时间, Error% 错误率及 Throughput 吞吐量.
一个很详细的 JMeter 使用教程:www.cnblogs.com/du-hong/cat…