当前位置: 首页 > news >正文

零基础学习性能测试第三章:执行性能测试

以下是针对零基础学习性能测试的第三章:执行性能测试的详细学习内容设计,聚焦实战操作与快速应用,助你高效上手:


第三章核心目标:学会独立执行完整性能测试,产出有效结果

关键原则:标准化流程 > 工具操作 > 数据解读 > 风险规避


学习模块 1:测试前准备——决定成败的关键(占40%精力)

1.1 环境搭建标准化
  • 为什么重要:环境差异会导致结果失真(最常见失败原因)
  • 操作清单
    • 硬件:确保测试服务器配置(CPU/内存/磁盘)≥生产环境的70%
    • 软件:相同版本的操作系统、中间件(Tomcat/Nginx)、数据库、JDK
    • 网络:模拟生产网络拓扑(可用Docker网络隔离或云环境VPC)
    • 数据核心! 用生产数据脱敏后的子集(数据量级需接近真实)
1.2 测试脚本开发(JMeter实战)
  • 基础脚本要素
    在这里插入图片描述

  • 高级技巧

    • 参数化:CSV文件存储用户名/密码,模拟多用户
    • 关联:正则表达式提取动态值(如sessionID)
    • 思考时间:添加Random Timer(3000-5000ms)模拟用户停顿
    • 事务控制器:将登录+搜索+加入购物车合并为"购物流程事务"
1.3 监控体系搭建
  • 必监控项
    层级工具关键指标
    服务器Grafana+PrometheusCPU>80%, 内存>90%, 磁盘IO等待>50ms
    应用Arthas/JVisualVM线程阻塞, GC频率(FGC>1次/分)
    数据库Slow Query LogSQL执行>500ms, 锁等待超时
    网络iftop/ping延迟>100ms, 丢包率>0.1%

学习模块 2:测试执行——科学加压策略(30%精力)

2.1 负载模型设计
  • 阶梯增压法(推荐新手):
    0-1min:10用户   # 预热阶段
    1-3min:50用户 ↑
    3-10min:100用户 →  # 稳定压力
    10-12min:150用户 ↑ # 探求瓶颈
    12-15min:0用户    # 恢复观察
    
  • 配置JMeter:使用Stepping Thread Group插件实现
2.2 启动测试与实时监控
  • 执行命令(无GUI模式,减少资源消耗):
    jmeter -n -t shopping_test.jmx -l result.jtl -e -o report/
    
  • 监控重点
    • 实时看板:Grafana仪表盘观察CPU/内存曲线
    • 异常预警:设置Prometheus规则(如HTTP错误率>5%触发告警)
    • 日志跟踪tail -f app.log | grep ERROR

学习模块 3:结果分析与瓶颈定位(30%精力)

3.1 关键报告解读(JMeter Aggregate Report)
指标健康值问题线索
Error %<0.5%>1%需立即停止测试
P95 RT符合SLA(如≤2s)突增提示资源竞争
TPS/QPS随压力平稳上升波动大可能线程阻塞
3.2 瓶颈定位四步法

在这里插入图片描述

3.3 典型案例解析
  • 场景:登录接口P99响应时间从1.2s突增至8s
  • 排查
    1. 发现数据库CPU达95%
    2. 慢查询日志定位SQL:SELECT * FROM users WHERE name LIKE '%abc%'
    3. 解决方案:添加索引+取消模糊查询前缀通配符

快速应用指南:3天落地工作实践

Day1:环境与脚本准备
  • 任务:搭建测试环境,录制/调试核心业务脚本
  • 交付物:可运行的JMX文件+参数化CSV
Day2:执行测试与监控
  • 任务:
    • 上午:执行基准测试(单用户验证脚本正确性)
    • 下午:阶梯增压测试(50→100→150用户)
  • 交付物:
    • JMeter HTML报告
    • 服务器监控截图(CPU/内存曲线)
Day3:分析报告与优化建议
  • 任务:
    1. 对比P95响应时间与SLA差距
    2. 定位1个最严重瓶颈(如慢SQL/线程池满)
    3. 编写1页结论报告(附性能曲线+优化建议)
  • 报告模板
    性能测试结论
    • 测试场景:用户登录+商品搜索
    • 达标情况:❌ P95=2.4s > 目标2s
    • 主要瓶颈
      • MySQL CPU持续>90%
      • 慢SQL:SELECT ... ORDER BY create_time DESC (平均耗时1.8s)
    • 优化建议
      1. 为create_time字段添加索引
      2. 限制查询结果分页深度

避坑清单:新人高频错误

  1. 环境陷阱:用本地PC测试服务器应用 → 必须远程执行
  2. 数据陷阱:测试空数据库 → 预埋1000条以上业务数据
  3. 配置陷阱:忘记关闭JMeter GUI → 命令行模式执行
  4. 分析陷阱:只看平均值 → 必须关注P95/P99

终极心法:性能测试不是找"最高能跑多少",而是验证"在预期负载下是否满足要求"。执行中保持质疑:数据是否真实?监控是否全面?结论是否可复现?

通过此标准化流程,即使零基础也能在1周内产出有价值的性能报告。下一步可深入学习:分布式压测、JVM调优、全链路压测。

http://www.dtcms.com/a/289287.html

相关文章:

  • Spring Boot 订单超时自动取消的 3 种主流实现方案
  • 将SAC强化学习算法部署到ROS2的完整指南
  • 基于卷积傅里叶分析网络 (CFAN)的心电图分类的统一时频方法
  • 复杂度+包装类型+泛型
  • 全平台爬虫配置流程
  • Spark专栏开篇:它从何而来,为何而生,凭何而强?
  • Java 递归方法详解:从基础语法到实战应用,彻底掌握递归编程思想
  • XSS的介绍
  • 5G NR PDCCH之CRC处理
  • Java 创建线程的方式笔记
  • 【RK3576】【Android14】ADB工具说明与使用
  • 设计模式笔记(1)简单工厂模式
  • 《汇编语言:基于X86处理器》第8章 复习题和练习,编程练习
  • 深度相机的工作模式(以奥比中光深度相机为例)
  • AI开发 | 基于FastAPI+React的流式对话
  • ChatIM项目语音识别安装与使用
  • 论文笔记: Holistic Semantic Representation for Navigational Trajectory Generation
  • 《计算机网络》实验报告四 TCP协议分析
  • 基于FPGA的多级流水线加法器verilog实现,包含testbench测试文件
  • Haproxy算法精简化理解及企业级高功能实战
  • Uniapp 纯前端台球计分器开发指南:能否上架微信小程序 打包成APP?
  • 专题 解空间的一种遍历方式:深度优先(Depth First)
  • 【unitrix】 6.9 减一操作(sub_one.rs)
  • Go语言的函数
  • qcow2磁盘虚拟机的使用
  • Spring Cloud Gateway 电商系统实战指南:架构设计与深度优化
  • Work SSD基础知识
  • 数列-冒泡排序,鸡尾酒排序
  • LINUX(三)文件I/O、对文件打开、读、写、偏移量
  • 什么是 ELK/Grafana