全网最详细,性能测试各种测试场景分析+性能测试基准测(超细总结)


前言

面对日益复杂的业务场景和不同的系统架构,前期的需求分析和准备工作,需要耗费很多的时间。不同的测试策略,也对我们的测试结果是否符合预期目标至关重要。

1、性能测试-测试策略

性能测试实施过程中,针对不同的业务场景,我们经过分析和场景建模后,会选择不同的测试策略。下面详解覆盖了绝大多数的场景。

并发测试
模拟客户端请求,在单位时间内(S)同时发起一定量的请求,验证系统是否具有并发性的问题。

PS:不要无脑高并发!!!

负载测试
不断增加请求压力,直到服务器某个资源项达到饱和(比如CPU使用率达到90%+)或某个指标达到安全临界值(比如运维的监控告警阈值or拐点);

负载测试(也叫阶梯式压测)一般主要用来寻找性能的拐点,验证系统在既有测试环境不同的请求压力下能否正常运行。
示例如下:

请添加图片描述

容量测试
采用负载测试策略,验证在现有测试环境下被测系统的最大性能表现(可接受的最大性能表现,不一定是最优性能表现)。

极限测试
在既有测试环境下,不考虑资源占用率的极限情况(CPU使用率达到95%以上或IO异常繁忙或Load值较高),在系统不宕机的情况下的最大处理能力。

PS:由于被测系统的业务场景各不相同,这种策略,采用率相对较少。

配置测试
不断调整系统各方面的配置(软硬件、参数配置等),验证在性能达到最优时(最优的性能一定是权衡各方面因素找到的平衡点)的最佳配置。

浪涌测试
验证系统在某段时间内并发突增或请求量波动较大的情况下,系统能否正常稳定的提供服务。

PS:这种测试策略使用的也相对较少,主要针对不确定性的短期的峰值流量涌入场景(比如某微博的离婚、恋爱、分手话题)。

稳定性测试
以恒定的并发数(根据负载测试的结果,CPU使用率在70%时对应的并发数),验证系统在混合场景下的性能表现。

批处理测试
验证待测系统在既有环境下,系统的批处理(一般都是一个crontab或者触发式的job)业务能力能否满足生产的业务需求指标。

高可用测试
在集群多节点或分布式的情况下,破坏其中一个或多个集群节点,验证系统能否及时恢复服务能力。

2、性能测试-适用场景

以上几种测试策略,根据适用的业务&测试场景、采用该策略的目的以及场景出现频次来划分,仅供参考。

请添加图片描述

①中小型团队:常规的测试策略选型:并发、负载、容量、配置、批处理、稳定性、高可用策略,可以覆盖绝大部分需求。
②电商类业务:高并发、高可用、稳定性,是重中之重。
③业务场景:很多时候一个性能需求包含好几个业务场景,但并发、负载、容量、稳定性,建议都采用。
④需求场景:需求分析和场景建模做不好,测试结果往往偏差很大。
⑤压测环境:环境的调研选型,建议和生产环境等配置最小化部署,这是成本和结果精准度的平衡。
⑥测试数据:无论是数据量还是数据的有效性以及热点数据的覆盖率,都决定了测试结果的可参考价值。
⑦技术建设:基础架构(包括环境、服务部署、详尽的监控体系、问题处理流程)的完备,才能让性能测试左移。
⑧文档建设:一定要重视文档建设和数据留存,这样可以避免很多不必要的麻烦和重复性工作。
⑨平台化:平台的作用是对流程的规范以及多人协同工作的效率整合,不要过度追求平台化(但一定要有技术规划和方案准备)。
⑩不要无脑高并发!!!

3、性能测试-基准测试

通过设计合理的测试方法,选用合适的测试工具和被测系统,实现对某个特定目标场景的某项性能指标进行定量的和可对比的测试。

基准测试一定要在可控的条件下进行。

面对日益复杂的系统和不断增长的用户数,以及性能测试可能涉及到的多个业务系统,只有做到基准测试所涉及的业务场景、系统架构、测试环境等在可控状态下,

才能得到相对准确的结果,为容量规划、缺陷定位、系统调优提供参考和依据。

意义
为容量规划确定系统和应用程序的极限;
为配置测试的参数和配置选项提供参考依据;
为验收测试确定系统是否具备自己所宣称的能力;
为性能基线的建立提供长期的数据统计来源以及比较基准;

原则
测试策略:稳定且连续的工作负载,多次运行,看测试结果数据的正态分布趋势,尽量取平均值;
数据统计:真实环境下测试数据的平均值、峰值各是多少,取值的维度;
差异风险:明确存在哪些风险,风险对测试结果的影响,是否忽略;
特殊情况:有哪些特殊情况,是否有对应的解决方案(比如支付场景中的支付服务调用,是否采用挡板等);

需要考虑的因素
交易配比:某些业务场景,一个流程包含多个事务,在模拟并发中,不同的事务各自的占比;
突发性的读写操作:某些特殊业务场景,会有短时的大流量冲击或者请求数量骤减,该如何模拟(浪涌测试);
系统配置:不同环境的系统配置不同,测试结果如何换算、如何对比?
测试时长:测试执行过程中,运行多长时间,不同交易运行的时间分配等;
结果展示类型:平均值、峰值、百分比值如何展示,如何对比?
成功/失败占比:每次测试过程中,成功和失败的事务占比统计;
是否可重现:如测试过程中出现报错或某些异常情况,是否可以重现?
是否可对比:是否有其他测试工具或者测试结果进行对比(尽量多次执行测试,进行测试结果对比:标准方差、正太分布了解一下?)?

简单可行的方法
逐渐增加系统负载是一个确定系统所能处理的最大吞吐量的简单办法,也是寻找系统性能拐点的可行策略(阶梯式加压测试)。

重点
基准测试的工作重点是统计分析:

可以从以下几个维度去进行统计:
选择合适的测试工具,设定合理的测试方法以及需要确认的系统性能指标;
选择不同的测试工具,对测试结果进行对比,选择稳定且能反应系统真是性能表现的结果;
多次执行测试,收集大量的测试数据集和指标;
从不同维度解读分析数据,生成报告。

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

生活总会有起伏,但只要坚定目标、勇往直前,即使路途崎岖,也能走出一条自己的康庄大道。让我们勇敢追梦,不断超越自我,闯出属于自己的精彩人生!

人生如一场马拉松,不是跑得最快者胜利,而是那些能够坚持到终点的人最值得尊敬。保持努力和耐心,不忘初心,砥砺前行,向着目标奔跑!

世界上没有天生的强者,只有坚持不懈的人。无论前方有多少挑战和困难,我们都要勇敢面对,保持信念和毅力,坚定走下去,一步一个脚印,奋斗到底!

猜你喜欢

转载自blog.csdn.net/shuang_waiwai/article/details/130685851