内容大纲:
常见的性能问题
性能测试是什么
性能测试和功能测试之间的区别
为什么要进行性能测试
常见的性能指标及性能测试专业术语
性能测试分类
1. 常见的性能问题
系统内部以及软件的代码实现:
- 资源泄漏,包括内存泄漏。
- CPU使用率达到100%,系统被锁定等。
- 线程死锁,阻塞等造成系统越来越慢。
- 查询速度慢,或者列表的效率低。
- 受外部系统影响越来越大
举个例子:
2. 性能测试是什么
简单来说,就是测试人员借助测试工具,模拟系统在不同的场景下,对应的性能指标是否达到预期
3. 性能测试和功能测试之间的区别
功能测试:人工完成,在一些常见的场景下,只要能够运行就可以
性能测试:借助工具完成,在一些极端的情况下,需要保障软件能够正常工作
4.什么样的系统/软件表现属于性能好/不好
就比如说同一个软件的不同版本,1.0版本登录需要花费2s,2.0版本花费1s,这就说明2.0版本做了提升,性能较好
5. 为什么要进行性能测试
- 获取系统性能的指标,作为性能指标的基准
- 验证系统的性能指标是否达到要求(性能需求)
- 发现系统的性能瓶颈,内存泄漏等问题
- 系统正常工作的情况下的最大容量
- 帮助系统运维部门能更好的规划硬件配置
6. 常见的性能指标及性能测试专业术语
6.1 并发数
并发用户会对系统造成压力
比如说:双十一时,有100万的用户同时操作淘宝, 此时淘宝系统承载的压力非常大
- 并发的条件:大量用户,同时操作
- 并发数:同一个时间点,同时请求服务的客户数量
- 系统用户数:数据库中保存的用户数量
- 在线用户数:登录成功后的用户数量
- 并发用户数:当系统达到并发的时候,用户的数量即为并发用户数
6.2 响应时间/平均响应时间
- 从用户视角来考虑,响应时间反映了完成某个操作所需要的时间
- 标准定义是,应用系统从发出请求开始,到客户端接收完所有的字节数据所消耗的时间
用户响应时间:
用户从发起请求到用户看到响应中间经历的时间
N1+A1+N2+A2+N3+A3+N4
请求响应时间:
服务器接收到请求到发出响应这段时间
A1+N2+A2+N3+A3
问:如果一个软件发布上线了,但是使用某个功能时,页面响应时间较长,有哪些可能的影响因素?
- 用户设备太老旧
- 网络太慢
- 服务器处理太慢
- 软件算法时间复杂度太高
- 数据库性能太差
6.3 事务响应时间
- 事务从请求开始,到事务响应成功花费的时间就是事务响应时间
- 每秒完成的事务数,通常指每秒成功的事务数,性能测试中重要的综合性性能指标
举个例子,当用淘宝支付时,输入密码确定,支付成功(在支付前,系统会调用用户,收银台,支付系统.... )
6.4 每秒事务通过数
- TPS 是指每秒系统能够处理的事务数。它是衡量系统处理能力的重要指标
- 每秒事务通过数越大,代表系统处理能力越高
对于同一系统会存在一个最大处理事务能力,它并不随着并发用户的增减而改变
比如地铁检票机:
只有10台进站检票的机器,1台机器1秒能进1个人
并发用户数为5,则TPS为5
并发用户数为10,则TPS为10
并发用户数为100,则TPS仍为10
6.5 点击率
- 每秒点击数代表用户每秒向Web 服务器提交的HTTP请求数。点击率越大,服务器压力越大
- 这里的点击并不是鼠标的一次点击,一次点击可能有多次HTTP请求
6.6 吞吐量
这里的吞吐量以单位时间为度量衡量
6.7 吞吐率
吞吐量/请求处理时间
size/time
6.8 思考时间
- 指模拟正式用户在实际操作时的停顿间隔时间
- 从业务的角度来讲,思考时间指的是用户在进行操作时,每个请求之间的间隔时间
6,9 资源利用率
不同系统资源的使用情况。包含CPU,内存,硬盘,网络等
7. 性能测试方法
7.1 代码级别的性能测试
- 在单元测试阶段就对代码的时间性能和空间性能进行必要的测试和评估,以防止底层代码的效率问题在项目后期才发现的尴尬
- (让系统在正常情况下运行,观察各种性能指标)
- 应用场景:软件性能摸底
7.2 基准性能测试
- 是通过性能测试获取系统的性能指标,建立一个性能基准,作为以后性能测试的参考
- (让系统背负一定的压力,观察性能指标是否出现拐点)
- 系统进行性能基准测试可以在系统开发的较早的阶段发现性能问题
7.3 并发测试
- 是在同一时间内,同时调用后端服务,期间观察被调用服务在并发情况下的行为表现, 目的是为了发现如资源竞争,死锁等问题
- 这里的并发测试指的是严格的并发测试,也就是所有用户在同一时刻向后端服务器发送请求
7.4 压力测试
- 通常指的是后端压力测试,一般采用后端性能测试的方法,不断对系统施加压力,验证系统长期处于临界饱和阶段的稳定性以及性能指标的变化
- (让系统处于饱和状态,观察性能指标)
- 压力测试往往会把系统搞崩溃
7.5 配置测试
系统性能的好坏,不仅仅取决于软件自身的设计和实现,也取决于软件运行所依赖的硬件,网络环境。 为了达到系统性能指标要求,就需要调整系统的硬件配置,如增加服务器或者服务器集群来达到更高的性能。
- 通过基准测试,建立性能基线
- 在此基础上,调整配置
- 基于同样的性能基准测试,观察不同配置下系统性能的差异,目的是找出特定压力模式下的最佳配 置
7.6 可靠性测试
- 验证系统在常规负载模式下长期运行的稳定性
- 验证系统在一段时间内/一周内/一个月内/一年内持续运行,观察各项性能指标是否正常