JMeter 使用
Jmeter安装使用 - 鹿先森JIAN - 博客园 (cnblogs.com)
逻辑控制器
IF 控制器
添加方式:测试计划 → 线程组 → 逻辑控制器 → IF控制器
案例:
- 1、使用 ‘用户定义的变量’ 定义一个全局变量name,name的值可以是 baidu 或 itcast
- 2、根据name的变量值实现对应网站的访问
判断为 true,则执行里面的 HTTP请求
由于 ‘用户定义的变量’ 中 name = baidu,所以执行了百度请求,而没有执行 itcast 请求。
循环控制器
添加方式:测试计划 → 线程组 → 逻辑控制器 → 循环控制器
- 控制的作用域不同:线程组控制是线程组下的所有请求,循环控制器控制逻辑控制器下的所有请求
- 如果线程组循环次数为M,循环控制器循环次数为N:
- 循环控制器下的HTTP请求运行:M*N 次
- 线程组下的其他HTTP请求运行:M 次
ForEach 控制器
-1:取出所有地址数据
发送HTTP请求,携带变量参数。
JMeter 定时器
同步定时器 - 并发测试
简单来说,就是阻塞线程,直到阻塞了n个线程,然后立即释放它们,模拟高并发。
使用场景:测试抢购、秒杀、抢红包等高并发的场景时使用。
案例一:
模拟百度请求,线程组100人,每30一组,5000ms超时时间。
超时时间:设置为0时,如果用户组的数量积累不到30,就导致程序挂起。所以,别设为0。
监听器 → 聚合报告:点击运行,查看动态上升的用户请求数。
常数吞吐量定时器 - 稳定性测试
英文名:Constant Throughput Timer
- 1. 添加线程组,循环次数:永远
- 2. 添加HTTP请求
- 3. 添加常数吞吐量定时器
- 4. 添加查看结果树
- 5. 添加监听器 - 聚合报告
目标吞吐量:是每分钟的吞吐量,600/mins
启动线程组,查看聚合报告,吞吐量显示的是:每秒的吞吐量QPS = (目标吞吐量 / 60s) * 线程数
固定定时器 - 延迟请求
- 请求方法:POST
- 请求URL:https://ihrm-test.itheima.net/api/sys/login
- 请求头:Content-Type: application/json;charset=UTF-8
- 请求体:{"mobile":"13800000002","password":"123456"}
- 添加线程组
- 添加HTTP请求1 - 错误1次
- 添加HTTP请求2 - 错误2次
- 添加HTTP请求3 - 错误3次
- 添加HTTP请求4 - 正确用户名密码
- 在HTTP请求4下,添加固定定时器
- 添加查看结果树
HTTP信息头管理器:post要设置请求头才行
消息体数据:表单、json数据。
JMeter 分布式
分布式相关注意事项
- 关闭防火墙
- 所有的控制机、代理机、服务器都在同一个网络上
- 所有机器的Jmeter和JAVA版本必须一致
- 关闭RMI SSL开关
分布式配置与运行
案例
1. 把 jmeter 复制两遍,当作代理机1、代理机2
3. 修改控制机的 bin/jmeter.properties 文件:配置代理机的IP+port,修改 rmi.ssl.disable为true
4. 关闭防火墙,启动代理机,启动控制机
- 代理机:进入bin 目录,双击运行 jmeter-server.bat 文件,会弹起cmd窗口(不用关)
- 控制机:进入bin 目录,双击运行 jmeter.bat 文件,进入可视化界面
5. 控制机:编写测试,发送请求
线程组:设置线程数为5,即每台代理机发5次请求。
发送请求:运行 → 远程启动所有
总请求数 = 线程数 * 代理机数
JMeter 报告
聚合报告
- 1、请求:https://www.baidu.com
- 2、模拟5个用户并发,控制服务器QPS为20,运行时长设置为10分钟
- 3、添加聚合报告,收集系统性能指标:响应时间、吞吐量、错误率、网路速率
HTML报告
进入到 jmeter 的 bin 目录下,直接 cmd 弹窗,输入命令即可。
如果忘记命令咋写,可以启动 bin/jmeter.bat 文件,cmd窗口有:
案例
- 1、请求:https://www.baidu.com
- 2、模拟5个用户并发,控制服务器QPS为20,运行时长设置为1分钟
- 3、添加聚合报告
- 4、生成测试报告
下图中,[测试结果文件]、[测试报告保存目录] 不能事先存在,有则删。
生成前,该目录下不能有测试结果文件:result.jtl,不能有测试报告保存目录:report
常用平均并发数计算公式
普通计算方式
0.48 请求数 / 秒
二八原则计算方式
按照业务数据进行计算
考虑系统的有效工作时长,区间内的总请求数,结合二八原则进行计算。
系数:每家公司不一样,热门系统就高点吧,得估算未来业务量。
总结 + 案例
案例
JMeter 下载第三方插件
说明: 先下载JMeter插件管理工具包,再用此包下载JMeter插件。
下载JMeter插件管理工具包
下载 jar 包:Install :: JMeter-Plugins.org
安装第三方插件
配置好插件管理工具包后,打开JMeter,点击 “选项” → “Plugins Manager” 打开插件管理器,其他的插件都可以在这里进行管理。
- 打开 Plugins Manager 插件管理器
- 选择 Available Plugins,即当前可用的插件
- 选择需要下载的插件(等待右方文本内容展示出来)
- 点击右下角的下载按钮,自动地完成下载,Jmeter会自动重启
推荐插件:提升测试效率:JMeter 常用插件推荐_jmeter常用插件-CSDN博客
- 3 Basic Graphs:基本图表
- 5 Additional Graphs:附加图表
- Custom Thread Groups:自定义线程组
- PerfMon (Servers Performance Monitoring):服务器性能监控
性能测试常用图表及组件
1. Concurrency Thread Group:阶梯线程组
作用:它能够设置阶梯式增加用户数,运行时间。
添加方式:测试计划 → 线程(用户)→ Concurrency Thread Group
2. Transactions per Second(TPS):每秒事务数
性能测试中,最重要的两个指标之一。
作用:在测试脚本执行过程中,监控查看服务器的TPS表现,比如整体趋势、实时平均值走向、稳定性等,相当于聚合报告里的 “吞吐量” 指标数据。
区别:聚合报告里的 “吞吐量” 指标数据是最后的数据,而 Transactions per Second 是整个过程的浮动数据。
3. Response Times Over Time(TRT):事务响应时间
性能测试中,最重要的两个指标的另外一个。
作用:是在测试脚本执行过程中,监控查看响应时间的实时平均值、整体响应时间走向等。
添加方式:测试计划 → 线程组 → 监听器 → Response Times Over Time
4. Bytes Throughput Over Time:字节 / 每秒吞吐量(发送、接收)
作用:查看服务器吞吐量(单位:字节/秒),包括接收、发送。相当于聚合报告里的 “发送”、“接收” 指标数据。
添加方式:测试计划 → 线程组 → 监听器 → Bytes Throughput Over Time
5. PerfMon Metrics Collector 性能指标收集器
服务器端性能监控数据采集器。在性能测试过程中,除了监控TPS和TRT,还需要监控服务器的资源使用情况,比如CPU、memory、I/O等。该插件可以在性能测试中实时监控服务器的各项资源使用。
添加方式:测试计划 → 线程组 → 监听器 → PerfMon Metrics Collector
注意:使用之前需要在服务器端安装监听服务程序并启动
监控服务器服务程序:
- 1. 下载安装包 ServerAgent-2.2.3.zip,链接地址:https://github.com/undera/perfmon-agent
- 2. 解压 ServerAgent-2.2.3.zip,(Linux需要修改startAgent.sh文件权限:chmod 777 startAgent.sh)
- 3. 启动:windows 双击 startAgent.bat;linux 用命令 ./startAgent.sh
- 4. 启动这个工具后,jmeter的插件 jp@gc - PerfMon Metrics Collector 就可以收集服务端的资源使用率了。
案例
- 1、启动windows上安装的Tpshop商城项目
- 2、使用JMeter编写脚本,访问首页,控制运行时间为60s,并同步监控服务器资源指标
操作步骤:
- 1. 上传 ServerAgent-2.2.3.zip 到windows服务器上,并进行解压
- 2. 启动ServerAgent程序 startAgent.bat
- 3. 添加线程组,配置持续时间为60s
- 4. 添加HTTP请求- 首页
- 5. 添加监听器 → PerfMon Metrics Collector 插件,设置监控指标。
- 6. 添加聚合报告
导出:右键图标,可以保存为图片、CSV文件。。。
监控性能指标
系统指标:响应时间、吞吐量、错误率、并发数
使用监听器 → 聚合报告,它能查看系统客户端的这些信息。
资源指标:CPU、内存、磁盘、网络
使用监听器 → PerfMon Metrics Collector,具体用法看上面介绍。