性能测试理论
- 性能测试概述
- 性能测试的概念
- 功能测试与性能测试区别
- 性能测试策略
- 基准测试
- 负载测试
- 稳定性测试
- 其他
- 压力测试
- 并发测试
- 性能测试指标
- 性能测试流程
性能测试概述
性能测试的概念
- 什么是性能?
- 软件质量属性中的“效率”特性
- 时间特性:表示系统处理用户请求的响应时间
- 资源特性:表示系统运行过程中,系统资源的消耗情况。资源包括:CPU、内存、磁盘等
- 什么是性能测试?
- 使用自动化工具,模拟不同的场景,对软件各项性能指标进行测试和评估的过程
- 性能测试的目的?
- 1、评估当前系统能力
- 验收第三方提供的软件
- 获取关键的性能指标,与其他类似产品进行比较
- 2、寻找性能瓶颈,优化性能
- 3、评估软件是否能够满足未来的需要
- 1、评估当前系统能力
功能测试与性能测试区别
- 焦点不同
- 功能测试:验证软件系统操作功能是否符合产品功能需求规格,主要焦点在功能(正向、逆向)
- 性能测试:验证软件系统是否满足业务需求场景,主要焦点是业务场景的满足(时间、资源)
- 有什么关系?
- 性能测试并不是必要的
- 先做功能,再做性能
性能测试策略
基准测试
- 狭义上讲,就是单用户测试。测试环境确定后,对业务模型中的重要业务做单独的测试,获取单用户运行时的各项性能指标。
但用户测试并不是只测试一次,而是大量重复测试。 - 广义上讲,是一种测试和评估软件性能指标的活动。建立基准线,当系统的软硬件环境发生变化之后再进行一次基准测试以确定变化对性能的影响
- 基准测试数据的用途?
- 基准测试不会单独存在
- 为多用户并发测试和综合场景测试等提供参考依据
- 为系统/环境配置、系统优化前后的性能提升/下降提供参考指标
负载测试
通过逐步增加系统负载,确定在满足系统的性能指标情况下,找出系统所能承受的最大负载量的测试。
稳定性测试
在服务器稳定运行(用户正常的业务负载下)的情况下进行长时间测试(1天-1周等),并最终保证服务器满足线上业务需求。
其他
压力测试
-
为什么要进行压力测试
- 1、软件实际使用时,用户量超过预取(系统最大负载量),该如何反应?
- 2、软件由于意外情况出现问题,多久能够恢复?
-
压力测试概念
- 在强负载下的测试,查看系统在峰值情况下是否功能隐患、系统是否具有良好的容错能力和可恢复能力
-
压力测试场景
- 极限负载下导致系统崩溃的破坏性压力测试
- 高负载下的长时间的稳定性压力测试
并发测试
并发测试(绝对并发):在极短的时间内,发送多个请求,来验证服务器并发的处理能力。
- 应用场景:特定活动场景如抢红包、秒杀、抢购等
性能测试指标
-
响应时间
指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的结果,整个过程所耗费的时间。(不包括前端渲染时间) -
并发数
某一时刻同时向服务器发送请求的用户数 -
吞吐量
指单位时间内处理的客户端请求数量,直接体现软件系统的性能承载能力- 从业务角度
- 业务数/小时、业务数/天、访问人数/天、页面访问量/天
- 从网络角度
- 字节数/小时、字节数/天
- 从技术角度
- 每秒事务数(TPS)即控制服务器每秒处理的事务请求的数量、每秒查询数(QPS)即控制服务器每秒处理的指定请求的数量
- 从业务角度
-
点击数
指客户端向服务端发送请求时,所有的页面资源元素(如:图片、链接、框架css、js等)的请求总数量
注意:只有web项目才有此指标;点击数不是页面上的一次点击 -
错误率
指系统在负载情况下,失败业务的概率。失败率=(失败业务/业务总数)*100%
注意:大多数系统都会要求错误率无限接近于0;错误率是一个性能指标,不是功能上的随机bug -
资源利用率
指系统各种资源的使用情况,一般用“资源的使用量/总的资源可用量*100%”形成资源利用率的数据- CPU使用率
- 内存使用率
- 磁盘IO速率
- 网络速率
性能测试流程
- 性能测试需求分析
- 明确被测系统
- 业务功能、技术架构
- 明确测试内容
- 业务角度:用户使用频率较高的关键业务功能
- 技术角度:逻辑复杂度高的业务、数据量大的业务
- 明确测试策略
- 负载测试、并发测试、稳定性测试…
- 明确测试指标
- 有明确需求指标:执行结果与预期指标进行对比
- 无明确需求指标:查找资料、类似的系统对比、对未来流量的预估
- 明确被测系统
- 性能测试计划及方案
- 测什么
- 项目背景
- 测试目的
- 测试范围
- 谁来测
- 进度与分工
- 交付清单
- 怎么测
- 测试策略
- 测什么
- 性能测试用例设计
- 用例名称
- 用例编号
- 用例描述
- 前置条件
- 用例步骤
- 期望结果
- 实际结果
- 并发用户数与事务响应
- 并发用户数与服务器性能
- 并发用户数与数据库性能
- 性能测试执行
- 搭建测试环境
- 包括硬件环境、软件环境、网络环境
- 编写测试脚本
- 使用性能测试工具进行编写测试脚本
- 性能测试监控
- 在脚本执行前,配置各项性能的监控指标
- 执行测试脚本
- 设置性能运行场景,执行性能测试,并同步收集各项性能指标
- 搭建测试环境
- 性能分析和调优
- 性能测试分析人员经过对结果的分析后,如果不符合性能需求,则会提出性能bug,如何由开发人员进行后续的调优
- 性能测试报告总结
- 测试报告是对性能测试工作的总结,为软件后续验收和交付打下基础
- 测试报告的主要内容
- 测试工作的经过回顾
- 缺陷分析和调优
- 风险评估
- 性能测试结果
- 测试工作总结与改进