性能常识 性能测试 (一):性能测试基础与性能测试流程

· 2021年03月19日 · 2930 次阅读

性能测试基础与性能测试流程

了解资源利用率、吞吐量、响应时间与并发用户数的关系

三者与并发用户数关系图如下。但在现实测试中,曲线不会是平滑的

性能测试的流程是什么样的

一.需求分析与测试设计 (性能需求目标 + 业务模型拆解)

  • 1.根据具体的性能测试需求,确定测试类型以及压测的模块 (web/mysql/redis/系统整体)
  • 2.前期要与相关人员充分沟通,初步确定压测方案及具体性能指标
  • 3.QA 完成性能测试设计后,需产出测试方案文档发送邮件到项目组,并且再次与相关人员沟通(或者组织性能测试评审),确认是否满足需求

在没有以往的指标数据时,可以通过 UV 和 PV(可以让产品提供),计算并发用户数和 QPS

  • 性能项目按目标场景分类:

    • 新上线系统性能测试:要求容量测试,系统最大容量。
    • 系统升级性能测试类:和基线版本对比,性能不下降。
    • 新系统性能优化类:伴随调优目标的性能测试。
  • 测试场景:基准场景 (单交易容量场景)

  • 测试场景:容量场景 (递增场景、最大 TPS、最快响应时间场景)

二.环境设计与搭建

三.测试数据准备 (基于模型的数据准备)

  • 1.接口请求参数:自己构造/日志获取/上下关联;
  • 2.数据表的数据填充;
  • 3.如果是多接口,则需结合业务场景设计请求比例。

四.性能指标预期 (性能需求目标)

  • 1.每秒请求数(QPS)
  • 2.请求响应时间(最小、最大、平均)
  • 3 并发用户数
  • 4.错误率
  • 5.机器性能:cpu idle 30%、memory 无剧烈抖动或者飙升
  • 6.压测过程接口功能是否正常

当然,不同性能测试方式下指标预期会有差异

五.发压工具配置及脚本编写 (压力策略)

  • 1.这里采用 JMeter
    • (1) 集成包,解压即可使用,Windows、Linux 通用(依赖 java 环境)
    • (2) jmx 脚本为 xml 文件,Win、Linux 环境均可直接运行
    • (3) 多线程并发
    • (4) 运行完脚本会生成 jtl 日志,可在 Win 环境界面工具中查看、统计
  • 2.脚本的编写
    • (1) http 请求
    • (2) 其它
  • 3.命令: (1) 启压:./jmeter -n -t hb.jmx -l hb.jtl
测试工具选型:
  压测场景:单接口/复杂事务 => JMeter 场景构造
  压力需求:<1000 QPS or 万级以上 => JMeter 分布式支持
  是否周期性:JMeter Jmx 场景文件,数据驱动,结果落库
  二次开发需求:JMeter 开源插件化思想,支持 Thrift,Dubbo 等多种协议。可以快速平台化。
  问题支持:JMeter 开放社区,广泛使用

六.测试过程 (预计的前置准备过程,和压测时间点规划)

  • 1.测试前环境检查:记录机器参数
  • 2.起压:根据被压情况,调节并发量到适合的情况
  • 3.查看记录各项性能指标
    • (1)nginx 日志查看每秒请求数
    • (2)查看 nginx 错误请求
    • (3)查看机器参数:cpu idle、mem 等
    • (4)查看 db、cache 等数据是否写入正常
    • (5)访问接口,查看功能是否正常

七.结果分析与测试报告

  • 1.根据测试过程中记录的各项参数,结合压测工具产生的日志,对测试结果进行分析,并产出测试报告
  • 2.测试完成后,及时与相关人员沟通,确认是否满足需求
  • 3.发送测试报告邮件
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册