1、Jmeter基础功能回顾
- 创建JMeter脚本
- 录制新建:需求急、有时候需要修改、不推荐
- 手动创建:推荐
- 接口压力测试请求的创建
- post
- get
- put
- …
- 压力测试请求中的数据传递
- JSON提取器
- XPATH提取器
- 压力测试中的结果断言校验
- Response Assertion
- JSON Assertion
- 利用Beanshell生成测试数据
- Beanshell script逻辑生成数据
- Java代码逻辑生成数据
- 全局变量与CSV数据导入
- User Defined Variables
- CSV Data Set
- 压测结果解读
- 聚合报告
- 请求/响应结果树
- Debug Sample
2、压测脚本准备
- 被压测试程序:https://github.com/princeqjzh/iJmeter >iJmeter/application/orderservice.py
- 压测脚本:iJmeter-master\jmx\orderservice.jmx
- 总结
- 被压测程序
- Http请求样本
- Http Header 控制
- 响应数据解析
- 思考时间
- 数据导入、传递和自定义
- 断言
- 测试报告
3、性能监控平台压测实战
- JMeter原生测试报告弊端:
- 不具备实时性
- 报告中的数据是测试时间段内的平均值
- 长相丑陋
- 性能监控平台的优势
- 实时展示JMeter压测数据
- 数据范围可选
- 长得好看
- JMeter性能监控平台组成
- JMeter:压测数据,产生压测数据
- InfluxDB:开源时序数据库,特别适合用于处理和分析资源监控数据,用于存储压测数据
- Grafana:度量分析与可视化图标展示工具,可以支持不同种类的数据源,用于将存储与InfuxDB中的数据以图表的形式展示出来
- 部署方式:
- docker部署
- 下载对应docker镜像,启动container实例
- 搭建监控环境,验证两个端口正常3000 8086
- 压测实施计划
- 指定压测策略 不同的并发数10, 20, 50, 100, 200, 400, …
- 单个并发数压测时常:1分钟
- 记录结果
- 期待测试结果
- 验证能够支撑多大并发数,峰值数
- 验证错误率,定义可接受范围,<=0.1% or <=0.5% or must=0%
- Demo:运行压测,收集数据
- 并发数设定:10,20,50,100,200,400, …
- 分析合理最大并发数,使用合理最大并发数 ,进行长时压测验证结论
- 注意事项:
- 一个内网,降低网络因素影响
- 如果高并发出错率偏高,可以降低并发数,以获取更合理的结果
- 实际工作中,发压机与被压测应用需要运行在不同的机器上,分摊不同的资源
- 并发数设定原则:从小->大,先粗粒度,在细化,最后最优的并发数为 瓶颈值* 50% / 30%
- 应用系统的流量与并发数的对应关系
- 错误率与并发数的关系
- 系统合理能力的判断与验证
4、总结:
- JMeter压测脚本的创建,请求,数据获取,数据传递,验证 …
- JMeter性能监控平台,Influxdb、Grafana、Jmeter
- 性能监控平台搭建
- 性能测试的实施
- 合理最大并发数的判断
- 最大并发数验证