性能测试常规流程
- 学习业务:查看文档、实际操作、询问相关开发人员
- 分析需求:分析非功能需求,确定性能测试范围,了解系统性能指标
- 工作评估:分解工作,评估完成性能测试所需要的时间和人力
- 设计模型:设计性能测试用例和实现方案
- 编写计划:测试范围、人力、持续时间、工作内容、风险评估、风险应对策略
- 评审
- 准备测试环境:脚本开发、测试数据
- 测试执行
- 缺陷管理
- 性能分析
- 性能调优
- 测试报告:测试计划、测试脚本、测试程序、测试报告或者阶段性测试报告
- 评审
性能测试难点
- 评估系统,需求分析
- 第一次上线的系统,与同行系统数据比较,得出负荷和响应时间
- 已上线的系统,直接获取TPS,用户数、数据库ER图等
- 场景设计、用例设计
- 业务分布
- 业务量
- 业务时段
- 业务角色
- 执行时间
- 执行比例
- 测试执行、是否通过
- 做好监控
- 响应时间
- 吞吐量
- 事物成功率
- 硬件指标
- CPU
- 内存
- 存储
- 网络
- 稳定性
- 内存有无泄露
- 其他
- 数据库
- 中间件
- 缓存
- JVM
- 验证系统稳定性
- 做好监控
- 性能优化诊断
如何看性能问题
- 黑盒测试角度: 从用户发送请求,经过服务器处理,存储到DB,返回结果到客户端响应的时间总和
- 开发角度:
- 架构合理性
- 数据库设计合理性
- 代码
- 系统里的内存使用方式
- 系统里线程使用方式
- 系统资源是否有恶性竞争
- 系统管理员
- 硬件资源利用率
- JVM
- DB
- 换哪些硬件能够提高系统性能
- 系统能够支持7*24的服务
- 扩展性、兼容性、最大容量、可能瓶颈
- 性能测试的角度
- 服务器硬件性能
- 根据需求和历史数据指定性能目标
- 建立性能通过模型
- 对开发代码框架和硬件框架进行性能分析
- 针对开发发布版本的基准测试
- 执行软件性能验收及稳定性测试
- 生产环境的配置和优化
- 制定性能测试的测试用例
- 制定性能测试的场景设计
- 协调各部门配合
- 特定的性能分析
常见的性能测试工具:
- HP LoadRunner
- Apache JMeter
- Grinder
- CompuWare QALoad
- Microsoft WAS
- RadView WebLoad
- IBM RPT
- OPENSTA
开源 | 商业 |
---|---|
能够开发最适合的测试工具 | 依赖于工具本身特性,难扩展 |
易于学习和使用 | 依赖于工具本身和文档 |
工具稳定性、可靠性不足 | 有一定的可靠保证 |
可以形成特有的测试工具体系 | 难与其他产品集成 |
性能测试相关术语:
- 负载:给服务器施加压力的过程
- 负载测试:不断加压,找出不同压力下的性能情况
- 压力测试:检验在极限情况下,系统是否能够正常运行
- 稳定性测试:长时间不间断地运行,看性能指标是否符合要求
- TPS: 每秒完成的事务数
- RT/ART: 响应时间/平均响应时间
- PV: 每秒用户访问页面的次数
- 思考时间: 用户在实际操作中停顿的时间
性能测试通过标准