当日学习要点
- 理解性能测试的定义和目的
- 理解性能测试中常见的测试策略
- 理解性能测试中常见的性能指标
- 理解性能测试的流程
- 能够对比说出Loadrunner和jmeter的优缺点
一、性能测试描述
01-为什么要进行性能测试
- 在真实项目商用时,需要大量的用户进行使用,因此需要模拟大量用户使用的场景
02-性能的概念
-
什么是性能?
— 就是软件质量属性中的”效率”特性
- 时间特性: 系统处理用户请求的响应时间
- 资源特性: 系统运行过程中,系统资源的消耗情况
-
什么是性能测试?
使用自动化工具,模拟不同的场景,对软件各项性能指标进行测试和评估的过程
-
什么是性能测试的目的
- 评估当前系统能力
- 寻找性能瓶颈,优化性能
- 评估软件是否能够满足未来的需要
03-性能测试和功能测试
- 功能测试和性能测试有什么不同?
- 功能测试: 验证系统的功能需求规格。焦点:功能(正向,逆向)
- 性能测试: 验证系统的业务需求场景。焦点:时间,资源
- 功能测试和性能测试有什么关系?
- 一般项目中,先功能测试通过后,后进行性能测试
二、 性能测试的策略(性能测试分类)
01-基准测试
-
什么是基准测试
- 狭义上讲:就是单用户测试(单用户循环多次得到的数据)。测试环境确定后,对业务模型中的重要业务做单独的测试,获取单用户运行时的各项性能指标
- 广义上讲: 是一种测量和评估软件性能指标的活动.你可以在某个时刻通过基准测试建立一个已知的性能基准线,当系统的软硬件环境发生变化之后再进行一次基准测试以确定变化对性能的影响
-
基准测试数据的用途
- 基准测试不会单独存在
- 为多用户并发测试和综合场景测试等提供参考依据
- 为系统/环境配置,系统优化前后的性能不断提升\下降提供参考指标
02-负载测试
-
概念:
通过逐步增加系统负载,确定在满足系统的性能指标(如响应时间等)情况下,找出系统所能承受的最大负载量的测试。
-
作用
系统最大负载量达到用户要求时,系统才能够正式上线使用
03-稳定性测试
-
概念:
在服务器稳定运行(用户正常的业务负载下)的情况下进行长时间测试(1天-1周等),并最终保证服务器能满足线上的业务需求.
-
作用:
系统在用户要求的业务负载下运行达到规定的时间时,系统才能正式上线使用.
04-压力测试
-
概念:
在强负载下的测试,查看系统在峰值情况下是否功能隐患,系统是否具有良好的容错能力和可恢复能力
-
场景测试
- 极限负载的情况下导致系统崩溃的破坏性压力测试
- 高负载下的长时间的稳定性压力测试
第一种:极限负载情况下的破坏性压力测试(C-D区间)
第二种:高负载下的长时间稳定性压力测试(B-C区间)
05-并发测试
-
概念:
并发测试(绝对并发): 是指在极短的时间内,发送多个请求,来验证服务器对并发能力的处理能力
-
应用场景:
特定的活动场景,如: 抢红包,秒杀,抢购等
三、性能测试的指标
01-响应时间
-
定义: 指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的结果,整个过程所耗费的时间.
📌 注意:
1. 通过HTTP接口请求消息来测试
2. 不包括: 发消息时前端页面的处理时间 和 收到消息后前端页面的渲染显示时间
-
组成: 网络传输时间+服务器处理时间
02-并发数
- 定义: 某一时刻同时向服务器发送请求的用户数
03-吞吐量
-
什么是吞吐量
- 指的是单位时间内处理的客户端请求数量. — 直接体现软件系统的性能承载能力
- 指的是单位时间内处理的客户端请求数量. — 直接体现软件系统的性能承载能力
-
吞吐量的单位有哪些?
- 从业务角度: 业务数/天,访问人数/天,页面访问量/天
- 从网络角度: 每秒查询数(QPS),每秒事务数(TPS)
-
QPS和TPS有什么关系?
- 事务,即业务.一个事务可以对应一个请求\多个请求
- 一个事务对应一个请求时: TPS=QPS
- 一个事务对应多个请求时: TPS = N * QPS
04-点击数
- 定义: 所有页面元素(如: 图片,连接,框架等)的请求总数量
- 注意:
- 点击数是请求数,不是页面上的一次点击
05-错误率
- 定义: 指系统在负载情况下,失败业务的概率. 错误率=(失败业务/业务总数)*100%
- 注意:
- 大多数系统都会要求错误率无限接近于0
- 错误率是一个性能指标,不是功能上的随机BUG
06-资源利用率
- 定义:
- 是指系统各种资源的使用情况,一般用” 资源的使用量/总的资源可用量*100%”形成的资源利用率的数据
- 常见资源指标又哪些?
- CPU使用率: 不高于75%-85%
- 内存(大小)使用率: 不高于80%
- 磁盘I-O(速率): 不高于90%
- 网络(速率): 不高于80%
四、性能测试的流程
01-性能测试需求分析
- 明确被测系统
- 熟悉被测系统的业务功能
- 熟悉被测系统的技术架构
- 明确测试内容
- 业务角度:
- 用户使用频率较高的关键
- 技术角度:
- 逻辑复杂度高的业务
- 数据量大的业务
- 业务角度:
- 明确测试策略
- 负载测试
- 稳定性测试
- 并发测试
- 压力测试
- …
- 明确测试指标
- 有明确需求指标
- 执行结果于预期指标进行对比
- 无明确指标
- 查找资料
- 类似的系统对比
- 对未来流量的预估
- 有明确需求指标
02-性能测试计划及方案
思路:
- 测什么
- 测试背景
- 测试目的
- 测试范围
- 谁来测
- 进度与分工
- 交付清单
- 怎么测
- 测试策略
- 测试的目的和范围
- 测试人员和分工
- 测试的时间安排
- 测试的方法
03-性能测试用例设计
04-性能测试执行
建立测试环境 | -搭建性能测试环境,包括硬件环境,软件环境,网络环境 -提示: 一般情况下可以要求运维和开发工程师协助完成 |
建立测试环境 | -按照性能测试用例的需要,使用性能测试工具军星编写测试脚本 -提示:脚本可以自己编写,也可以使用工具来录制 |
性能测试监控 | -在执行脚本前,配置各项性能的监控指标 -如:响应时间,TPS,错误率,资源使用率(CPU,内存,磁盘等) |
执行测试脚本 | -设置性能运行场景,执行性能测试,并同步收集各项性能指标 -提示:执行性能测试脚本前,保证脚本都调试通过 |
05-性能分析和调优
说明: 性能测试分析人员经过对结果的分析以后,如果不符合性能需求,则会提出性能BUG,然后由开发人员进行后续的调优
提示:
- 调优: 开发人员主导,数据库管理员,系统管理员,网络管理员,性能测试分析人员配合执行
- 验证: 性能测试往往会继续进行第二轮,第三轮…的测试,与之前的测试结果进行对比,从而确定经过调整以后系统的性能是否有提升
06-性能测试报告总结
测试报告是对性能测试工作的总结,为软件后续验收和交付打下基础.
测试报告的主要内容:
- 测试工作的经过回顾
- 缺陷分析和调优
- 性能测试结果
- 测试工作总结和改进