一、性能测试的概念
1.1 什么是性能
- 时间:系统处理用户请求的响应时间
-资源:系统运行过程中,系统资源的消耗情况
1.2 什么是性能测试
使用自动化工具,模拟不同的场景,对软件各项性能指标进行测试和评估的过程
二、功能测试与性能测试的关系
2.1 功能测试和性能测试有什么不同
- 功能测试:验证系统的功能需求规格。焦点:功能(正向、逆向)
- 性能测试:验证系统的业务需求场景。焦点:时间、资源。
2.2 功能测试和性能测试有什么关系
- 一般项目中,先功能测试通过后,后进行性能测试
三、性能测试的策略
常见的性能测试策略有:
基准测试
- 建立基准,系统环境变化后对比确定对性能的影响。不会单独存在,为综合场景测试提供参考依据。
负载测试(常用)
- 逐步增加负载,找到满足系统性能指标情况下的系统最大负载量
稳定性测试(常用)
- 用户正常负载下的长时间测试,保证系统长时间稳定运行
其他:
- 并发测试
- 极短时间内,发送大量请求,验证并发处理能力
- 压力测试
-高负载下,查看系统在峰值情况下的容错能力和可恢复能力
3.1 、基准测试
3.1.1 什么是基准测试
- 狭义上讲:就是单用户测试。(单用户循环多次得到的数据)
- 广义上讲:建立基准线,当系统的软硬件环境发生变化之后再进行一次基准测试以确定变化对性能的影响。
3.1.2 基准测试数据的用途
- 基准测试不会单独存在
- 为多用户并发测试和综合场景测试等提供参考依据
- 为系统/环境配置、系统优化前后的性能提升/下降提供参考指标
3.2、负载测试
3.2.1 什么是负载测试
通过逐步增加系统负载,确定在满足系统的性能指标(如响应时间等)情况下,找出系统所能够承受的最大负载量的测试。
3.2.2 作用
系统最大负载量达到用户要求时,系统才能正式上线使用
3.3、稳定性测试
3.3.1 概念
在服务器稳定运行(用户正常的业务负载下)的情况下进行长时间测试(1天-1周等),并最终保证服务器能满足线上业务需求。
3.4、压力测试
3.4.1 压力测试的概念
在强负载下的测试,查看系统在峰值情况下是否功能隐患,系统是否具有良好的容错能力和可恢复能力。
3.4.2 测试场景
- 极限负载情况下的破坏性压力测试
- 高负载下的长时间的稳定性压力测试
3.5、并发测试
3.5.1 并发测试的概念
并发测试(绝对并发):是指在极短的时间内,发送多个请求,来验证服务器对并发的处理能力。
四、性能测试的指标
- 响应时间
- 指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的结果,整个过程所耗费的时间。
- 注意:
- 通过HTTP接口请求消息来测试
- 不包括 发消息时前端页面的处理时间和收到消息后前端页面的渲染显示时间
- 并发数
- 并发(用户)数:某一时刻同时向服务器发送请求的用户数。
- 吞吐量
- 吞吐量(Throughput):指的是单位时间内处理的客户端请求数量,直接体现软件系统的性能承载能力。从技术角度来看包括 - 单位:每秒事务数(TPS)、每秒查询数(QPS)
- QPS(Query Per Second)每秒查询数:即控制服务器每秒处理的指定请求的数量。
- TPS(Transaction Per Second)每秒事务数:即控制服务器每秒处理的事务请求的数量。 事务:即业务,页面上的一次操作,可能对应一个请求/多个请求
- 吞吐量(Throughput):指的是单位时间内处理的客户端请求数量,直接体现软件系统的性能承载能力。从技术角度来看包括 - 单位:每秒事务数(TPS)、每秒查询数(QPS)
- 点击数
- 指客户端向服务端发送请求时,所有的页面资源元素(如:图片、连接、框架CSS、js等)的请求总数量。
- 错误率
- 指系统在负载情况下,失败业务的概率。错误率=(失败业务数/业务总数)*100%
- 资源利用率
- 是指系统各种资源的使用情况,一般用“资源的使用量/总的资源可用量*100%”形成资源利用率的数据。
- 根据经验,资源指标通常要求:
- CPU不高于75%-85%
- 内存不高于80%
- 磁盘IO不高于90%
- 网络不高于80%
五、性能测试的流程
- 性能测试需求分析:熟悉需求,获取性能需求指标
- 性能测试计划及方案:测什么、谁来测、怎么测
- 性能测试用例设计:用来验证系统是否符合需求
- 性能测试执行: 建立测试环境、编写测试脚本、性能调试监控、执行测试脚本
- 性能分析和调优:分析性能结果、针对性能bug调优
- 性能测试报告总结:测试结果总结
5.1 性能测试需求分析
1. 明确被测系统
- 熟悉被测系统的业务功能
- 熟西被测系统的基数架构
2. 明确测试内容
业务角度:用户使用频率较高的关键业务功能
技术角度:逻辑复杂度高的业务;数据量大的业务
3. 明确测试策略
负载测试;稳定性测试;并发测试...
4. 明确测试指标
有明确需求指标:
- 执行结果与预期指标进行对比
无明确需求指标(分析指标)
- 查找资料
- 类似的系统对比
- 对未来流量的预估
5.2 性能测试计划和方案
01 测什么
- 项目背景
- 测试目的
- 测试范围
02 谁来测
- 进度与分工
- 交付清单
03 怎么测
- 测试策略
5.3 测试用例
性能测试用例模板
5.4 性能测试执行
5.5 性能分析和调优
说明:性能测试人员经过对结果的分析以后,如果不符合性能需求,则会提出性能bug,然后由开发人员进行后续的调优。
提示:
- 调优 - 开发人员为主导,数据库管理员、系统管理员、网络管理员、性能测试分析人员配合进行
- 验证 - 性能测试人员继续进行第二轮、第三轮......的测试,与以前的测试结果进行比对,从而确定经过调整以后系统的性能是否有提升。