JMeter启动提示
# 不要使用GUI模式进行负载测试 GUI模式只是压测脚本的创建和调试
Dont use GUI mode for load testing !, only for Test creation and Test debugging.
# 如果想要进行负载测试 使用CLI模式 即非GUI模式 -- 静默压测会详细介绍
For load testing, use CLI Mode (was NON GUI):
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
# 可以增加Java的堆来满足压测需求
& increase Java Heap to meet your test requirements:
# 修改JMeter文件的Java堆变量
Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file
需求说明
- 被压测演示例子程序说明:
- 包含4个练习用接口
- Demo:
用户登录
- 定义请求名称:用户登录
- 配置 Host 、Port、Path = /api/v1/user/login
- 配置 Method = POST
- 在Http Request中添加 Http Header Manager, 管理该请求的header信息
- 添加 “View Result Tree” 用于查看 请求/响应 详情
请求头提取
- 在Http Header Manager中配置如下参数
- Content-Type : application/json
- access_token:python 源码中查找
浏览菜单
-
创建浏览菜单接口请求
- 添加HttpRequest请求
- 配置请求名称:浏览菜单
- 输入hostname, port, path = /api/v1/menu/list
- 设定 Method = GET
-
添加HTTP头管理器。
jmeter中文显示问题的解决
- 解决乱码问题 -> 在<jmeter_home>/bin/jmeter.properties配置文件中设置 sampleresult.default.encoding=utf-8
- 解决Unicode 显示成可读中文的问题 -> 将 <ijmeter_proj>/unicode2utf8/unicode2utf8.js 内容复制粘贴到 BeanShell PostProcessor 中
订单确认
- 创建订单确认接口请求
- 添加HttpRequest请求
- 配置请求名称:订单确认
- 输入hostname, port, path = /api/v1/menu/confirm
- 设定 Method = POST
用户注销
- 创建用户注销接口请求
- 添加HttpRequest请求
- 配置请求名称:用户注销
- 输入hostname, port, path = /api/v1/user/logout
- 设定 Method = DELETE
http 与 https 协议的区别
- HTTP: 超文本传输协议
- HTTPS:安全超文本传输协议
- 安全保障三原则:
- 内容加密:采用混合加密技术,中间者无法直接查看明文内容
- 验证身份:通过证书认证客户端访问的是自己的服务器
- 保护数据完整性:防止传输的内容被中间人冒充或者篡改
创建https请求
- 添加到ssl manager 中, 加入对应证书的key文件。位置: /application/cert_files/
- 运行时需要输入密码: 1234
本章小结
- POST,GET, DELETE 接口请求
- 请求中的配置参数 host, port, path
- body data中的请求参数 - json
- Http Request Header
- 接口响应结果
- 一点点调试小技巧 – 接口错误 vs 接口没有(404)
Json后置处理器
不同的用户登录会是不同的token,需要把信息头的token不能固定,要根据不同的用户返回的结果放入。
CSV多用户导入
- 从 CSV文件中导入多用户名 + 密码
- 解析access token,获得用户的正确认证标识
- jmeter中的参数传递
并发压测中的事务控制
- 如果需要统计一组请求完成的总计时间,可以考虑使用事务控制器
- 方法: 把需要统计的请求样本放入事务控制器中
静默压测
- 静默 -> 脱离UI运行JMeter压测
- 好处:命令运行更容易“搞事情”
- 命令格式: jmeter –n –t $jmx_file -l $jtl_file
- jmx: JMeter压测程序脚本文件,压测控制过程记录在jmx文件中
- jtl 文件是JMeter压测请求响应数据的原始文件
Web压测报告生成
- 命令格式: jmeter -g /fullpath/result-file -e -o /fullpath/report/folder
自动化压测
- 为啥要自动化压测呢?
- 手动逐步加压
- 需要人肉改并发数,然后等待完成
- 烦 !!!!!
- 所以,制定好策略,让程序自动加压,自动等待;完成后看压测监控记录,或者坐收报告
- 计算机努力的干活,我去做更重要的事情
- 希望测试生涯由此变得美好一些
自动化压测
- 实现思路:
- JMeter 脚本 (.jmx 文件) - 压测逻辑 与 xml 文件
- Shell – 控制逻辑
- JMeter 静默运行 – 脱离UI限制,使得自动化运行更稳定
jmeter –n –t $jmx_file -l $jtl_file
注: jtl 文件是jmeter压测请求响应数据的原始文件
自动化压测
- 生成Web Report,命令:
jmeter -g <jmx_file> -e -o <web_report_path>
- 静默压测+生成 Web 压测报告整合
jmeter –n –t $jmx_file -l $jtl_file -e -o <web_report_path>
自动化压测
自动化压测
- 命令行导入并发数变量
jmeter … –Jthread=100
自动化压测
- 源码解读与实操演练
- 源码位置:{iJMeter}/automation