全链路压测(10):测试要做的准备工作

简介: 功能验证环境即用来验证技术组件本身的功能正确性和接入性能损耗的环境,有独立的随时可用的环境最好。如果考虑到成本,也可以用线下性能环境来进行验证。

前言


前面的几篇文章介绍了全链路压测准备阶段的很多事项,包括核心链路梳理、构建压测模型、容量评估和容量规划,大多都是研发和运维同学负责的事情。


那么全链路压测在准备阶段,测试同学要做哪些事情呢?以我个人的实践经验来说,全链路压测在准备阶段,测试同学要做的事情主要有如下几点。


640.jpg


环境准备


一般来说,需要准备如下三套环境。环境准备阶段,大体的工作事项和分工如下:


640.jpg


功能验证环境


功能验证环境即用来验证技术组件本身的功能正确性和接入性能损耗的环境,有独立的随时可用的环境最好。如果考虑到成本,也可以用线下性能环境来进行验证。实践经验来说,功能验证阶段,要做的事情核心有如下几点:


  1. 能否快速接入;
  2. 压测标记是否完整的透传到了数据库表;
  3. 数据落库或者读库的路由逻辑是否正确;
  4. 下游或外部调用是否都被mock挡板过滤;
  5. 采用自动化的方式快速验证接口链路是否正常;
  6. 梳理的业务场景和测试场景是否都匹配了接入的业务范围等;
  7. 接入前后对业务应用以及中间件的性能损耗是否在可接受范围内;


线下性能环境


如果未经基础的测试就直接在生产环境开展全链路压测,风险和问题排查成本都是很高的。


线下性能测试环境的作用如下:


  1. 满足日常的版本迭代和技术优化性能验证需要;
  2. 生产压测前的单机单接口和单机混合链路压测验证;
  3. 为生产压测集群的资源扩容提供容量评估的参考依据;


生产压测集群


因为全链路压测都是在生产环境进行,压测的目的也是为了满足未来某个时期业务活动的需要,因此需要提前评估准备资源。这里的资源指的是扩容的资源,而非单独重新搭建环境的资源。一般需要准备的资源如下:


  1. 带宽资源;
  2. CDN资源;
  3. 应用资源;
  4. 缓存资源;
  5. M Q资源;
  6. 短信资源;
  7. D  B资源;


数据准备


全链路压测过程中,涉及的数据以及职责分工如下:


640.jpg


铺底数据


铺底数据可理解为冷数据,SQL执行过程中,空表和大表对性能的影响还是很大的。


准备铺底数据,还要根据具体的数据隔离技术实现方案来看,分为如下2方面:


  1. 正式表:如果数据隔离方案采用的是读写业务表,那无须准备铺底数据。但压测产生的数据需要通过特殊字段来做标识处理,避免对业务造成影响。
  2. 影子表:如果采用的是影子表方案,常见的做法就是将涉及到的库表数据按需按量同步到影子表并进行脱敏。
  3. 影子库:影子库的数据铺底数据准备方案和影子表类似,但要考虑的一点是:因为影子库是正式库是在同一个数据库实例上,需要更多的硬件资源支撑,以及在参数配置上(如活跃连接数)需要进行一定调整。


热点数据


为了避免压测时瞬间的大流量对服务的冲击,需要提前将这些热点数据预热到缓存中。最典型的热点数据莫过于用户的登录态token了,其他还有类似秒杀活动的库存数据、商品信息数据以及优惠券等数据。当然,热点数据的预热,需要根据具体的业务来制定预热方案。


参数化数据


参数化数据指的是压测过程中脚本中需要引用到的数据。以电商业务来说,常见的有用户id,商品id,订单id。


准备参数化数据的过程中,需要注意如下几点:


  1. 数据的幂等性(是否可重复使用);
  2. 数据的关联性(是否需要前置动作来更新状态);
  3. 数据的有效性(数据需要在使用阶段内一直生效);
  4. 数据的唯一性(数据在逻辑处理中仅且只有某些场景才可用);


数据可用性验证


做完了上述的几点数据准备工作,最后要做的就是对数据可用性进行验证,看看它是否如预期满足工作需要。


脚本准备


脚本开发


脚本准备实际上是个很复杂的事情,因为要考虑到具体的业务场景和压测链路。我在实践中的做法,一般遵循如下的过程步骤:


  1. 梳理核心链路(得到被测应用和涉及到的接口);
  2. 梳理流量模型(便于压测过程中性能指标监控及流量模型配置);
  3. 划分脚本类型;
  • 准备测试数据的脚本(某些场景用到的数据需要通过前置动作才能产生);
  • 单机单接口压测脚本(性能环境快速验证接口维度的性能表现,快速发现性能瓶颈);
  • 单机混合链路压测脚本(性能环境快速验证应用维度的性能表现,调整流量配比,便于容量评估);
  • 生产环境全链路压测脚本(生产环境压测专用的压测脚本);
  • 梯度增加脚本(验证生产环境的性能,发现性能瓶颈和拐点);
  • 稳定性验证脚本(验证生产服务集群在长时间高负载情况下的稳定性);
  • 数据状态恢复脚本(特殊业务场景数据只能用一次,可理解为数据回滚策略);
  • 稳定性预案验证脚本(验证限流、熔断、降级等稳定性预案是否生效);


脚本联调


脚本开发完成,接下来就是联调工作。


联调阶段,除了要考虑环境因素,重点是验证数据模型和流量模型是否匹配的问题。


压测方案


编写压测方案的目的:同步信息,保持整体的压测节奏一致,为下一阶段工作做铺垫。


  1. 背景和目的(通用内容);
  2. 业务和技术指标(统一目标,即使有临时变更也能快速调整);
  3. 涉及范围和链路(更细化的内容,需要和涉及的各团队一一对齐);
  4. 压测实施里程碑(生产压测需要多轮,每轮次的目标和要做的事情);
  5. 压测任务及进度(整体的压测任务拆分以及当前进度,提前评估风险);
  6. 压测模型和策略(类似功能测试过程中的case评审,查漏补缺的过程);
相关文章
|
12天前
|
人工智能 数据可视化 测试技术
Postman 性能测试教程:快速上手 API 压测
本文介绍API上线后因高频调用导致服务器告警,通过Postman与Apifox进行压力测试排查性能瓶颈。对比两款工具在批量请求、断言验证、可视化报告等方面的优劣,探讨API性能优化策略及行业未来发展方向。
Postman 性能测试教程:快速上手 API 压测
|
24天前
|
人工智能 数据可视化 测试技术
AI测试平台自动遍历:低代码也能玩转全链路测试
AI测试平台的自动遍历功能,通过低代码配置实现Web和App的自动化测试。用户只需提供入口链接或安装包及简单配置,即可自动完成页面结构识别、操作验证,并生成可视化报告,大幅提升测试效率,特别适用于高频迭代项目。
|
6月前
|
监控 测试技术 数据库连接
RunnerGo API 性能测试实战:从问题到解决的全链路剖析
API性能测试是保障软件系统稳定性与用户体验的关键环节。本文详细探讨了使用RunnerGo全栈测试平台进行API性能测试的全流程,涵盖测试计划创建、场景设计、执行分析及优化改进。通过电商平台促销活动的实际案例,展示了如何设置测试目标、选择压测模式并分析结果。针对发现的性能瓶颈,提出了代码优化、数据库调优、服务器资源配置和缓存策略等解决方案。最终,系统性能显著提升,满足高并发需求。持续关注与优化API性能,对系统稳定运行至关重要。
|
2月前
|
人工智能 缓存 监控
大模型性能测试实战指南:从原理到落地的全链路解析
本文系统解析大模型性能测试的核心方法,涵盖流式响应原理、五大关键指标(首Token延迟、吐字率等)及测试策略,提供基于Locust的压测实战方案,并深入性能瓶颈分析与优化技巧。针对多模态新挑战,探讨混合输入测试与资源优化
|
4月前
|
测试技术
软考软件评测师——可靠性测试测试方法
软件可靠性是指软件在规定条件和时间内完成预定功能的能力,受运行环境、软件规模、内部结构、开发方法及可靠性投入等因素影响。失效概率指软件运行中出现失效的可能性,可靠度为不发生失效的概率,平均无失效时间(MTTF)体现软件可靠程度。案例分析显示,嵌入式软件需满足高可靠性要求,如机载软件的可靠度需达99.99%以上,通过定量指标评估其是否达标。
|
12月前
|
Web App开发 前端开发 安全
前端研发链路之测试
本文由前端徐徐撰写,介绍了前端测试的重要性及其主要类型,包括单元测试、E2E测试、覆盖率测试、安全扫描和自动化测试。文章详细讲解了每种测试的工具和应用场景,并提供了选择合适测试策略的建议,帮助开发者提高代码质量和用户体验。
249 3
前端研发链路之测试
|
11月前
|
数据采集 缓存 测试技术
性能测试中,除了迭代次数,还有哪些因素会影响测试结果?
性能测试中,除了迭代次数,还有哪些因素会影响测试结果?
308 2
|
11月前
|
缓存 监控 测试技术
全网最全压测指南!教你如何测试和优化系统极限性能
大家好,我是小米。本文将介绍如何在实际项目中进行性能压测和优化,包括单台服务器和集群压测、使用JMeter、监控CPU和内存使用率、优化Tomcat和数据库配置等方面的内容,帮助你在高并发场景下提升系统性能。希望这些实战经验能助你一臂之力!
846 3
|
11月前
|
缓存 监控 数据挖掘
C# 一分钟浅谈:性能测试与压力测试
【10月更文挑战第20天】本文介绍了性能测试和压力测试的基础概念、目的、方法及常见问题与解决策略。性能测试关注系统在正常条件下的响应时间和资源利用率,而压力测试则在超出正常条件的情况下测试系统的极限和潜在瓶颈。文章通过具体的C#代码示例,详细探讨了忽视预热阶段、不合理测试数据和缺乏详细监控等常见问题及其解决方案,并提供了如何避免这些问题的建议。
247 7
|
缓存 Java 测试技术
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
使用JMeter对项目各个接口进行压力测试,并对前端进行动静分离优化,优化三级分类查询接口的性能
455 10
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存

热门文章

最新文章