零、性能测试
1. 性能测试目的:
满足真实业务场景,支持大量用户、满足商用需求。
2. 性能概念
软件质量属性中的“效率”特性(不卡)
时间特性:系统处理用户请求响应的时间
资源特性:系统资源的消耗情况,包括:cpu、内存、磁盘等
3. 性能测试概念
使用自动化工具[jmeter]模拟不同场景[即不同的策略],对软件的各项性能指标[各种指标]进行测试和评估的过程。
后台处理程序的性能(代码性能)
应用服务器、数据库、架构设计等是否存在瓶颈
服务器消耗资源(cpu、内存、磁盘、网络)
4. 性能测试目的
- 评估当前系统的能力(需求文档还包括性能的需求)
- 寻求性能瓶颈、优化性能(找bug)
- 评估软件是否满足未来的需求
5. 区分功能测试与性能测试以及之间的关系
(1)功能测试
关注正向逆向的功能
(2)性能测试
关注时间与资源的效率
(3)区别
功能测试完成且bug修复完成之后再做性能(有代码修改就会影响性能)
一、性能测试的策略
1. 基准测试
(1)概念
- 基准–检测单个用户的性能是否达标,作为一个参考。
- 狭义:单用户测试,获取单用户运行时的各项指标。单用户循环测试多次得到的数据。
- 广义:在某一个时刻通过基准测试建立性能的基准线;当软硬件环境发生变化时再次测试,查看性能的影响[判断某一环境变化之后对性能是变好/坏]
- 举例:
基准线:商城V1.0版本,模拟5w用户在8CPU16G内存上运行,下单响应时间为3s
场景 1:商城V1.0版本,模拟5w用户在8CPU32G内存上运行,下单响应时间为2.5s
场景 2:商城V1.0版本,模拟10w用户在8CPU16G内存上运行,下单响应时间为4s
场景 3:商城V1.1版本,模拟5w用户在8CPU16G内存上运行,下单响应时间为2.8s
(2)用途
- 基准测试不会单独存在
- 为多用户并发测试和综合场景测试等提供参考依据
- 为系统/环境配置,系统优化前后的性能提升/下降提供参考依据。
2. 负载测试
(1)概念
- 通过逐步增加系统负载,确定在满足系统的性能指标的情况下,找出系统所能承受的最大负载量的测试。
(2)作用
- 系统最大负载量达到用户需求时,系统才能正式上线使用
3. 稳定测试
(1)概念
- 在服务器稳定运行(用户正常负载情况下)进行长时间测试(1天~1周等),并最终保证服务器能满足线上业务需求。
(2)作用
- 系统在用户需求的业务负载下运行达到规定的时间时,系统才能正式上线使用。
其他:并发测试、压力测试
4. 压力测试
(1)概念
- 在强负载下的测试,查看系统在峰值情况下是否存在功能隐患、系统是否具有良好的容错能力和可恢复能力
(2)测试场景
- 极限负载情况下的破坏性压力测试
- 高负载下的长时间的稳定性压力测试
(3)分类:
- 高负载下的长时间稳定性压力测试(如:B-C区间内进行24/3*24小时长时间测试)
- 极限负载下的破坏性压力测试(如:C-D区间内进行测试)
5. 并发测试(绝对并发)
(1)概念
- 并发测试(绝对并发)︰是指在极短的时间内,发送多个请求,来验证服务器对并发的处理能力。
(2)应用场景
特定活动场景,如:抢红包、秒杀、抢购等。
二、性能测试的指标
1. 概念
对性能测试结果进行量化测试
2. 响应时间
- 指从客户端发起请求开始,到客户端接收到结果的总时间
- 包括:服务器处理时间+网络传输时间
3. 并发用户数
- 某一时刻同时向服务器发送请求的用户数
场景:目前正在刷淘宝的用户数有500万
并发用户数(某段时间内同时向系统提交请求),一请求就会产生负载。
4. 吞吐量
(1)什么是吞吐量?
- 指的是单位时间内处理的客户端请求数量。
- 直接体现软件系统的性能承载能力。
(2)吞吐量的单位有哪些?
- 从业务角度: 业务数/天、访问人数/天、页面访问量/天
- 从网络角度: 字节数/小时、字节数/天
- 从技术指标: 每秒查询数(QPs)、每秒事务数(TPs)
(3)QPs和TPs有什么关系?
- 事务,即业务。一个事务可以对应一个请求/多个请求
- 一个事务对应一个请求时:
TPS = QPS
- 一个事务对应n个请求时:
TPS = n * QPS
一个QPS – 一个http请求
一个web的点击请求/业务请求/事务请求–一个或多个http请求
5. 点击数
所有页面元素(eg: 图片、链接、框架等)的请求总数量
注意,不是页面的一次普通点击
6. 错误率
- 指系统在负载情况下,失败业务的概率
- 注意:
- 错误率是性能指标,是高负载下的失败业务的概率
- 随机bug是功能bug,先解决随机bug才能进行性能测试(单个用户下)
7. 资源使用率
(1)什么是资源利用率?
- 系统各种资源的使用情况,“
资源的使用量/总的资源可用量×100%
”
(2)常见资源指标有哪些?
- CPU使用率:不高于75%-85%
- 内存(大小)使用率:不高于80%
- 磁盘IO(速率):不高于90%
- 网络(速率):不高于80%
三、性能测试的流程
1. 性能测试需求分析
2. 性能测试的计划和方案
测什么 “测一个xxx项目,项目目的是xxx,有xx用户使用,大概测了xxx测试点”
谁来测
怎么测
3. 性能测试用例
功能测试测试用例八要素
编号、标题、模块、级别、前置条件、测试数据、步骤、预期结果
4. 性能测试执行
5. 性能测试分析和调优
6. 性能测试报告
- 测试工作经过回顾(xx时间做了XX事情)
- 缺陷分析与调优(遇到的问题)
- 风险评估
- 测试结果
- 总结与改进