性能测试是什么
- 利用工具取模拟大量用户操作来验证系统能够承受的负载情况,找出潜在的性能问题,分析并解决问题
- 性能测试的价值:保障系统的性能,提供良好的用户体验,尽可能找出系统性能薄弱环节,帮助进行性能优化.
性能测试流程
- 业务学习:了解系统功能
- 需求分析:分析系统非功能需求,圈定性能测试范围,了解系统的性能指标
- 工作评估:分解和评估工作量
- 设计模型:业务模型--映射--测试模型
- 计划编写:计划测试工作(测试范围 人力投入 持续时间 工作内容 风险评估 风险应对策略等)
- 脚本开发:录制或编写性能测试脚本(开发测试挡板程序 测试程序或工具)
- 测试环境准备:服务器 和 负载机
- 测试数据准备:根据数据模型准备被测系统的 主数据 和 业务数据
- 测试执行
- 缺陷管理
- 性能分析
- 性能调优
- 测试报告
- 性能测试主要交付件
- 测试计划
- 测试脚本
- 测试程序
- 测试报告或阶段性测试报告
- 性能测试主要交付件
- 评审:对性能报告中的内容进行评审,确认问题、评估上线风险。
性能测试要素(重要关注点)
- 评估系统,需求分析
不可完全依赖需求文档,还需要相关人员(运维/产品)提供具体的需求数据并进行二次分析-->>真实的性能需求
- 场景设计,用例设计
- 用例设计(选择需要做性能测试的功能)
- 场景设计(有效组织测试用例--按 业务分布、业务量、业务时段、业务角色来综合分配用户数,执行时间、执行比例等)
- 测试执行、是否通过(性能指标:响应时间RT、吞吐量TPS、事务成功率、稳定性、内存有无泄漏、硬件指标<CPU、内存、存储、网络> 、其他(数据库、中间件、缓存、JVM)
- 性能诊断优化
性能测试的角度看性能
- 服务器硬件性能
- 根据需求和历史数据制定性能目标
- 建立性能通过模型
- 对开发代码框架和硬件框架进行性能分析
- 针对开发发布版本的基准测试
- 执行软件性能验收及稳定性测试
- 生产环境的配置和优化
- 制定性能测试的测试用例
- 制定性能测试的场景设计
- 协调各部门配合
- 特定的性能分析
性能测试工具
- HP公司的Loadrunner(商业)
- Apache JMeter(开源)
- Grinder(开源)...
相关术语
- 负载:模拟业务操作对服务器造成压力的过程
- 性能测试(Performance Testing):模拟用户负载来测试系统在负载情况下,系统的响应时间、吞吐量等指标是否满足性能要求
- 负载测试(Load Testing):在一定软硬件条件下,通过不断加大负载(不同虚拟用户数)来确定==在满足性能指标情况下能够承受的最大用户数==。TPS\ RT\ CPU Using\Mem Using
- 配置测试(Configuration Testing):通过测试手段,来获取不同配置下的性能信息-->合理调配资源,提高系统运行效率
- 压力/强度测试(Stress Testing):在一定的软硬件条件下,通过高负载的手段来使服务器资源处于极限状态,测试系统==在极限状态下长时间运行是否稳定==(指标:TPS/RT/CPU Using/Mem Using)
- 稳定性测试(Endurance Testing)::在一定的软硬件条件下,长时间运行一定负载,确定系统在满足性能指标的前提下是否运行稳定
- TPS:每秒完成的事务数
- RT/ART(Respnse Time/average):响应时间/平均响应时间
- PV(Page View):每秒用户访问页面的次数
- Vuser虚拟用户(Virtual user):模拟真实业务逻辑步骤的虚拟用户
- Concurrency并发
- 狭义:所有用户在同一时刻对系统做相同的请求操作-->>测试数据库和程序对并发操作的处理(适用于 性能/负载/压力/稳定性测试场景)
- 广义:多个用户对系统发出请求或操作,但这些请求或操作可以不同(适用于 混合场景、稳定性测试场景)
- 场景(Scenario):模拟真实用户的业务处理过程----构建基于事务、脚本、虚拟用户、运行设置、运行计划、监控、分析等的一系列动作的集合
- 思考时间(Think Time):模拟正式用户在实际操作时的停顿间隔时间
- 标准差(Std. Deviation):标准差越小---波动越小,系统越稳定;标准差越大---波动越大,系统越不稳定
性能测试通过标准
- 包含:
- 服务端性能
- 前端性能
- 用户体验性能
- 通过标准
