性能测试

1、我们理解的性能测试:

  • 使用压力测试工具
  • 测试普遍认知的指标参数
  • 静态页面、查询、登陆登出
  • 跟其他产品比较:给客户、经理和架构师看

2、对性能测试的理解误区:

  • 性能测试是可有可无的东西
  • 性能测试的受众为客户或者第三方
  • 仅仅是为了跟其他产品或者臆想出来的指标比较
  • 没有从客户和业务的角度出发看待性能
  • 仅仅测试表面数字比较好的功能
  • 只关注测试结果忽略测试系统和测试环境的影响
  • 性能测试=模拟测试
  • 忽略数据分析:数据来源?提供什么数据?怎么分析数据?

3、可以从性能测试中得到的信息:

  • 评估性能瓶颈
  • 评估客户市场符合度
  • 评估架构设计
  • 一份有价值的性能分析报告

4、性能测试的关注者:

  • 受众
    • 客户、经理
    • 架构师
    • 测试人员
  • 执行者
    • 测试人员
    • 架构师
  • 执行时机
    • 产品研发之前确定性能指标
    • 架构设计完成之后确定度量标准
    • 稳定版本发布之前出具性能分析报告
    • 架构更改或者性能调优之后评估改动结果
  • 执行方式

5、性能测试不等与压力测试:

  • 目标的差别
    • 性能测试的目的是检查系统是否符合业务性目标设定,并为系统架构的整体优化提供参考。
    • 压力测试的目的是检查系统是否可以支撑一定压力。
  • 测试方法的相似性
    • 大都通过压力测试工具,尤其是并发压力测试工具进行测试
  • 测试参与人员
    • 性能测试需要架构师的参与
  • 测试数据分析的差异
    • 性能测试更加关注数据后面的业务价值
    • 性能测试数据是为了帮助架构师找到性能的拐点
    • 压力测试不需要对数据进行分析

6、指标:

  • 并发数
    • 强并发情况(并发同时访问同一功能)
    • 弱并发情况(并发同时访问不同功能)
    • 在线用户
  • 响应时间
    • End-to-End 性能日志
  • 客户端指标
    • HTTP  4XX, 5XX错误情况
    • 页面交互次数
    • 页面装载时间
    • 页面大小
  • 服务器硬件数据指标
    • CPU占用率
    • IO读写情况
    • 网络数据指标
    • 吞吐量、带宽利用率
    • 服务端局域网堵塞情况
  • 运行环境数据指标(JVM)
    • 堆内存情况
    • GC后内存占用情况
  • 并发线程情况
    • 线程数、线程死锁情况
    • GC情况(GC次数、消耗时间,Full GC间隔时间)

7、测试工具:

  • 性能测试工具
    • Load Runner测试数据
    • Web测试数据
    • Http Analyzer
    • Firebug/Yslow
    • Fiddler
    • 互联网网络测试: WANem
  • 监控工具
    • 通过JConsole获取JVM性能数据
    • 特定服务器的监控工具,如OEM(AUM?)
    • 通过JMX定义扩展性能记录
    • 局域网网络流量监控软件
  • 定制分析工具
    • 日志分析工具
    • GC日志的分析
    • Apache Http Server日志的分析
    • 应用程序异常日志的分析
    • Application Runtime Tracking
    • AOP,异步机制,对服务端应用记录响应性能日志
    • User Behavior Survey
    • 记录用户访问的分布及每个功能的压力分布
    • End-to-End Performance Logging
    • 页面请求及网络传递时间
    • 服务端数据处理时间
    • 服务端应用事务调用时间
    • 页面装载及渲染时间

8、设定参考指标:

  • 业务背景 (Business Background)
  • 明确真实的用户量、数据量,确定性能估计标准
  • 物理部署架构 (Deployment Architecture)
  • 明确每个部署节点的作用和压力
  • 明确节点所在服务器的伸缩能力
  • 核心业务功能(Core Function)
  • 找到性能测试的价值点
  • 服务质量标准 (Quality of Service)
  • 确定成功率,测试可接受率、响应时间等标准
  • 用户体验(User Ability)
  • 确定响应时间标准、HTTP4xx,5xx错误可接受率。

相关推荐