性能测试类型 || 性能指标的分类 || 性能测试开展流程
一、性能测试类型
1、基准测试
基准测试指的是模拟单个用户执行业务场景时,考察系统的性能指标。严格意义上来讲,基准测试并不能算作性能测试范畴,它跟功能测试并没有太大区别。差异在于,基准测试的目的更多地是关注业务功能的正确性,或者说验证测试脚本的正确性,然后,将基准测试时采集得到的系统性能指标,作为基准测试结果,为后续并发压力测试的性能分析提供参考依据。
2、负载测试
负载测试主要指的是模拟系统在正常负载压力场景下,考察系统的性能指标。这里说的正常负载,主要是指用户对系统能承受的最大业务负载量的期望值,即预计系统最大应该支持多大用户的并发量。通过负载测试,目的是验证系统是否能满足预期的业务压力场景。通常负载测试是最典型的性能测试类型,通过实施负载测试来获取性能拐点,也叫最佳性能点,当达到这个点的时候,系统能力、极限能力是多少?也常用来做线上流量评估。
3、压力测试
通俗地讲,压力测试是为了发现在多大并发压力下系统的性能会变得不可接受,或者出现性能拐点(崩溃)的情况。在加压策略上,压力测试会对被测系统逐步加压,在加压的过程中考察系统性能指标的走势情况,最终找出系统在出现性能拐点时的并发用户数,也就是系统支持的最大并发用户数。开展压力测试主要用于探测应用或者应用的支撑基础设施某些部分的极限能力。通过一直增加负载,直到应用的部分功能不能正常工作,目的是找到被测系统的容量天花板。
4、疲劳强度测试
疲劳强度测试的加压策略跟负载测试也很接近,都是对系统模拟出系统能承受的最大业务负载量,差异在于,疲劳强度测试更关注系统在长时间运行情况下系统性能指标的变化情况,例如,系统在运行一段时间后,是否会出现事务处理失败、响应时间增长、业务吞吐量降低、CPU/内存资源增长等问题。
5、稳定性测试
稳定性测试会把用户真实会发生的场景放大3-5倍,然后在线上运行24小时,在这个阶段会发现很多稳定性问题,例如:list回收,java list回收,一旦回收出现问题,可能会出现内存溢出,这个在日常测试过程中,是很难测出来的,所以用稳定性测试查出这些问题。
6、容量测试
当我们业务越来越复杂的时候,比如一场大促,应该怎么评估线上的性能?如何去做合理的扩容?这个时候就需要开展相应的容量测试了。
通过对比可以发现,不同的性能测试类型,其本质的差异还是在加压策略上,而采用何种加压策略,就取决于我们实际的测试目的,即期望通过性能测试发现什么问题。明白了这一点,性能测试类型的差异也就不再容易混淆了。性能测试手段的重点在于加压的方式和策略。
二、性能指标分类
从维度上划分,性能指标主要分为两大类,分别是业务性能指标和系统资源性能指标。
1、业务性能指标可以直观地反映被测系统的实际性能状况,常用的指标项有:
-
并发用户数
-
事务吞吐率(TPS/RPS)
-
事务平均响应时间
-
事务成功率
2、而系统资源性能指标,主要是反映整个系统环境的硬件资源使用情况,常用的指标包括:
-
服务器:
CPU利用率、处理器队列长度、内存利用率、内存交换页面数、磁盘IO状态、网卡带宽使用情况等;
-
数据库:
数据库连接数、数据库读写响应时长、数据库读写吞吐量等;
-
网络:
网络吞吐量、网络带宽、网络缓冲池大小;
-
缓存(Redis):
静态资源缓存命中率、动态数据缓存命中率、缓存吞吐量等;
-
测试设备(压力发生器):
CPU利用率、处理器队列长度、内存利用率、内存交换页面数、磁盘IO状态、网卡带宽使用情况等。
三、性能测试开展流程
-
获取性能测试需求,确定性能目标
-
构建性能测试环境
-
编写性能测试脚本
-
构建性能测试场景
-
执行性能测试和分析
-
测试结果分析和报告
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器