性能测试概述
性能测试概念
-
什么是性能?
-
时间:系统处理用户请求的响应时间
-
资源:系统运行过程中,系统资源的消耗情况
-
-
什么是性能测试?
-
使用自动化工具,模拟不同的用户使用场景,对软件的各种性能指标进行测试和评估
-
-
性能测试的目的
-
评估当前系统能力
-
寻找性能瓶颈,优化系统
-
评估软件是否能够满足未来的需要
-
性能与功能测试区别
-
焦点不同
-
功能测试:测试软件的功能是否符合产品需求
-
性能测试:测试软件是否满足用户的使用场景需求
-
-
前后顺序不同
-
先接口功能测试,再性能测试
-
强调:接口功能测试没有通过,不会进行性能测试
-
注:不是所有的接口,都需要进行性能测试
-
-
性能测试策略
基准测试
-
概念:模拟单个用户运行时,系统的性能指标数据
-
目的:为之后真正开展性能测试,做数据准备
-
-
使用场景
-
为多用户并发测试(性能测试),提供数据参考
-
系统配置优化后,性能是否有所提升
-
系统代码优化后,性能是否有所提升
-
负载测试
-
概念:逐步增加用户的访问量,试探系统或服务器的最大承载量
-
负载 = 访问的用户数量
-
-
使用场景:系统最大负载量达到用户要求时,才能正常上线
-
案例说明:
需求:针对TPshop商城的主页,平均响应时长在1500ms以内,支持最大的用户访问量 测试结果 1个人--240ms 10个人--264ms 30个人--726ms
稳定性测试
-
概念:服务器在正常负载下,进行长时间测试,最终能够满足业务要求
-
使用场景:系统在用户要求的业务负载下运行达到规定的时候之后,才能正常上线
压力测试
-
概念:在强负载下测试,系统运行是否有隐患,以及可恢复的能力
-
使用场景
-
极限负载(超过最大可以正常使用的人数)下,进行压力测试
-
高负载(最大正常使用人数)下进行长时间运行,进行压力测试
-
并发测试
-
概念:测试多用户同一时间,使用同一个功能时,是否产生隐藏的问题
-
使用场景:抢购,秒杀,抢红包
-
案例说明:
需求:针对TPshop商城的主页,测试同一时间支持50个用户发送接口请求,平均响应时长在4S以内 测试结果:2157MS
小结
-
测试准备:基准测试
-
正向测试:
-
负载测试:系统功能正常运行的最大承载量(最大用户数)
-
稳定性测试:系统正常运行的最大时间
-
并发测试:指定需求情况下,进行测试(指定同一时间需求处理的请求数量)
-
-
反向测试:
-
压力测试(异常测试):(超过最大承载量,超过最大正常运行时间)系统崩溃之后,提前给出解决的方案
-
性能测试指标
-
作用:使用可量化的数据,用以评估软件性能是否达标
-
验证接口的性能测试是否通过,就是根据是否达到这些性能指标,进行判断
-
-
常用的性能指标:响应时间,并发数,吞吐量,资源利用率,点击数,错误率
响应时间
-
定义:从客户端发起请求,到客户端接收到返回响应结果的时间
-
组成:响应时间=网络传输时间(请求数据传递的时间,响应数据传递时间) + 服务器处理时间
并发数
-
定义:同一时间,同时向服务器发送请求的用户数
-
案例说明
淘宝系统案例 - 哪个是并发数? 场景1:淘宝商城,注册用户数有5亿--不是 场景2:当前登录了淘宝商城的用户数为2000万--不是 场景3:目前正在刷淘宝的用户数有500万--是,并发数500万
吞吐量
-
定义:单位时间内,服务器能够处理的请求数量。(直接体现了软件系统的承载能力)
QPS
-
单位时间内,能够处理的接口请求数量
TPS
-
单位时间内,能够处理的事务(接口业务场景)数量
QPS与TPS关系
-
一个事务对应一个接口:QPS = TPS
-
一个事务对应N个接口: QPS = N * TPS
案例说明
查询订单接口,1S内服务器能正常处理10个接口请求 答案: QPS=10 TPS=10 支付业务功能,涉及3个接口(登录,创建订单,支付),1S内服务器能正常处理10个该业务 答案: QPS=30 TPS=10
资源利用率
-
定义:服务器各种资源的使用情况。资源的使用量/总的资源可用量*100% = 资源利用率
-
常见资源指标有哪些?(面试题)
-
CPU使用率:不高于75%-85%
-
内存使用率:不高于80%
-
磁盘IO(速率):不高于90%
-
网络(速率):不高于80%
-
-
磁盘IO指的是磁盘空间的利用率吗?
-
不是。数据针对磁盘读取和写入的速率
-
性能测试模型
-
图示
-
需要掌握的问题(面试题)
1.在A-B范围内,增加用户数,系统处理能力-吞吐量会(增加) 2.在B-C范围内,增加用户数,系统处理能力(不变) 3.在C-D范围内,增加用户数,系统处理能力会(下降) 4.系统处理能力=(吞吐量),轻压力区=(A-B)区间,重压力区=(B-C)区间,崩溃区=(C-D)区间 4.系统最大负载用户数量为(B~C),极限负载用户数量为(C) 5.系统长时间稳定运行时推荐用户数量为(B~C) 6.性能需求:系统在长时间使用时的用户量在(B~C)之间,考虑性能是否有问题--稳定性测试
点击数
-
定义:针对web项目,访问一个页面,向web服务器发送的请求数量
-
访问一个页面 = 1次点击数
-
-
区分点击数和事务的区别
-
点击数:一个页面包含的所有页面资源元素(如:图片,连接,框架css\js等)的请求总数量
-
事务:完成一个业务场景,需要使用到的接口请求数量
-
错误率
-
定义:在系统负载情况下,业务失败的概率
-
区分性能的错误率与功能测试中的偶然失败
-
关键点:是否在负载情况下,执行的该业务测试
-
案例练习:
-
一个用户创建10次订单,失败了一次 错误率=?--没有负载 10S内,100个用户创建1次订单,失败了10次 错误率=10%--负载:QPS=10
性能测试流程![](https://i-blog.csdnimg.cn/blog_migrate/d12bfbb19754250f17235b2040d53b56.png)
性能测试执行
-
搭建性能测试环境
-
编写性能测试脚本
-
配置性能测试监控指标
-
执行性能测试脚本
性能分析和调优
-
测试人员负责针对性能的测试结果进行分析是否存在bug,由开发人员进行调优
-
bug的确认:是否满足性能指标
-
-
注意:在性能测试的回归过程中,可能需要进行多轮
性能测试报告
-
性能测试的过程
-
性能测试的缺陷分析和调优(重要)
-
性能测试的结果(重要)
-
经验和总结