超细整理,全链路性能测试-容量评估与规划,看这篇就够了...
目录:导读
- 前言
- 一、Python编程入门到精通
- 二、接口自动化项目实战
- 三、Web自动化项目实战
- 四、App自动化项目实战
- 五、一线大厂简历
- 六、测试开发DevOps体系
- 七、常用自动化测试工具
- 八、JMeter性能测试
- 九、总结(尾部小惊喜)
前言
1、理解容量
如何定义容量?
容量即系统处于某种负载状态或某项指标达到所能接受的最大阈值下对请求的最大处理能力。
如何理解容量?
容量是可度量的;
系统容量(处理能力)是有限的;
如何规划容量?
预期线上有X的流量下,希望系统在安全水位下具有Y的处理能力;
假设线上出现某种情况导致Xmax,那希望系统的Y可以水平扩展以应对;
如何测试容量?
假设线上预期流量为X,所需容量为Y,容量测试的预期指标为Z,那么:Y=X/Z。
容量测试的几点注意事项:
明确预期流量指标(线上峰值QPS为10W);
明确可接受的时延和安全水位指标(CPU%≤40%,核心链路RT≤50ms);
单机单服务的容量水位,建议通过混合场景来验证:
订单服务有四个核心API;
订单服务的服务器配置是4C8G;
容量测试脚本要综合考虑4个API的流量配比和流量模型;
CPU%≤40%,核心链路RT≤50ms下,测试结果就是单机容量;
2、容量评估
容量评估职责内容划分
3、容量规划
容量规划的价值
互联网公司成本
人力成本;
硬件成本;
运营成本;
容量规划的价值
为性能优化提供参考;
提高资源使用率, 降低成本;
不断促进基础技术设施的建设和优化;
容量规划落地四步走
明确预期的指标和流量模型
没有明确的预期指标就是耍流氓;
流量模型很重要,类似漏斗的转化模型;
知道单点容量和扩容边际递减比率
线下单机单接口单服务压测很有必要;
理论上可以无线水平扩容,但节点越多,复杂度越高,性能提升比率越低;
不断评估线上流量增长趋势和流量模型
借助监控体系不断优化流量模型;
借助告警体系不断发现异常流量;
借助性能基线不断优化性能瓶颈;
借助流量巡检不断找到容量波动;
4、性能基准测试
1)特质
①可重复性:可进行重复性的测试,这样做有利于比较每次的测试结果,得到性能结果的长期变化趋势,为系统调优和上线前的容量规划做参考。
PS:这种特质是为了满足基准测试的日常轮询需要。
②可观测性:通过全方位的监控(包括测试开始到结束,执行机、服务器、数据库),及时了解和分析测试过程发生了什么。
③可展示性:相关人员可以直观明了的了解测试结果(web界面、仪表盘、折线图树状图等形式)。
④真实性:测试的结果反映了客户体验到的真实的情况(真实准确的业务场景+与生产一致的配置+合理正确的测试方法)。
⑤可执行性:相关人员可以快速的进行测试验证修改调优(可定位可分析)。
2)前置条件
基准测试一定要在可控的条件下进行。
面对日益复杂的系统和不断增长的用户数,以及性能测试可能涉及到的多个业务系统,只有做到基准测试所涉及的业务场景、系统架构、测试环境等在可控状态下,才能得到相对准确的结果,为容量规划、缺陷定位、系统调优提供参考和依据。
3)意义
①为容量规划确定系统和应用程序的极限;
②为配置测试的参数和配置选项提供参考依据;
③为验收测试确定系统是否具备自己所宣称的能力;
④为性能基线的建立提供长期的数据统计来源以及比较基准;
4)前提
①测试目的:明确测试的目的,测试什么?用什么测试方法、策略?
②测试环境:被测系统的环境是什么,SIT还是UAT活着PAT?
③测试限制:要执行测试有哪些限制因素,该如何解决?
④风险因素:测试可能存在哪些风险,解决方案是什么?
⑤结果分析:对测试结果如何分析?测试产生的数据如何分析、定位?
5)原则
①测试策略:稳定且连续的工作负载,多次运行,看测试结果数据的正态分布趋势,尽量取平均值;
②数据统计:真实环境下测试数据的平均值、峰值各是多少,取值的维度;
③差异风险:明确存在哪些风险,风险对测试结果的影响,是否忽略;
④特殊情况:有哪些特殊情况,是否有对应的解决方案(比如支付场景中的支付服务调用,是否采用挡板等);
6)需要考虑的因素
交易配比:某些业务场景,一个流程包含多个事务,在模拟并发中,不同的事务各自的占比;
突发性的读写操作:某些特殊业务场景,会有短时的大流量冲击或者请求数量骤减,该如何模拟(浪涌测试);
系统配置:不同环境的系统配置不同,测试结果如何换算、如何对比?
测试时长:测试执行过程中,运行多长时间,不同交易运行的时间分配等;
结果展示类型:平均值、峰值、百分比值如何展示,如何对比?
成功/失败占比:每次测试过程中,成功和失败的事务占比统计;
是否可重现:如测试过程中出现报错或某些异常情况,是否可以重现?
是否可对比:是否有其他测试工具或者测试结果进行对比(尽量多次执行测试,进行测试结果对比:标准方差、正太分布了解一下?)?
7)简单可行的方法
逐渐增加系统负载是一个确定系统所能处理的最大吞吐量的简单办法,也是寻找系统性能拐点的可行策略(阶梯式加压测试)。
8)重点
基准测试的工作重点是统计分析:可以从以下几个维度去进行统计:
①选择合适的测试工具,设定合理的测试方法以及需要确认的系统性能指标;
②选择不同的测试工具,对测试结果进行对比,选择稳定且能反应系统真是性能表现的结果;
③、多次执行测试,收集大量的测试数据集和指标;
④、从不同维度解读分析数据,生成报告。
完整版!企业级性能测试实战,速通Jmeter性能测试到分布式集群压测教程
下面是我整理的2024年最全的软件测试工程师学习知识架构体系图 |
一、Python编程入门到精通
二、接口自动化项目实战
三、Web自动化项目实战
四、App自动化项目实战
五、一线大厂简历
六、测试开发DevOps体系
七、常用自动化测试工具
八、JMeter性能测试
九、总结(尾部小惊喜)
人生最动人的风景,往往藏在最难攀爬的高处。当你觉得力竭时,请记住:每一次坚持都在雕刻更强大的自己。别问路有多远,只管迈步向前;别怕山有多高,向上攀登就是答案!
你体内沉睡着改变世界的力量!每个清晨都是改写命运的新机会,每次挫折都是精心包装的礼物。当全世界都在说"不可能"时,正是你证明"可能"的最好时机!