川石教育
全国咨询热线:136-9172-9932
  1. 首页 > 资讯与干货 > IT资讯

软件测试培训之性能压测方案设计

作者:川石信息 日期:2023-05-12 13:34:07 点击数:

  我们在做性能测试工作是的时候,经常都会遇到一个比较头疼的事情,就是压测方案设计怎么做?接下来我们就来一起学习一下。

性能测试方案设计

  为什么要做压测?

  1、什么是压力测试?

  不断向被测对象施加压力,测试系统在压力情况下的表现。

  2、压力测试的目的是什么?

  测试得出系统的极限性能指标,从而给出合理的承诺值或者容量告警;

  找出系统的性能瓶颈,对性能做出优化;

  测试系统在高负载情况下的稳定性;

  验证系统在过载情况下的限流和降级预案;

  3、不做压测会产生什么问题?

  线上容量评估不准确,流量增加,服务被打挂

  升级前没做压测,升级后性能出现劣化,可用性降低;

  无法给出准确的承诺值,导致集群水位过低,资源被浪费或者集群水位过高,系统存在稳定性bug;

  压测方案设计

  压测环境可以简单的分为模块级压测和链路级压测,它们的主要特点和区别如下:

  1、模块级压测

  应用场景:比较变更前后的性能,看性能是否有劣化;定位模块本身的性能瓶颈。

  环境要求:不要求与线上环境完全一致,只需要保证变更前后两次的压测在同一个环境即可。

  业界方案:维护一套固定的线下环境,进行周期性、常态的压测。

  2、链路级压测

  应用场景:做整条链路的容量评估;评估系统整体可用性。

  环境要求:要求尽量与线上环境保持一致,这样的压测数据才是有借鉴意义的。

  业界方案:使用线上环境,根据不同的隔离方式使用不同的方案:

  1)不做流量隔离,压测流量和业务流量共存,由于没有做隔离,只能在低峰期压测

  2)逻辑隔离,通过流量调度或者分流方式,将压测流量打到一个压测环境去。压测流量和业务流量在同一个机房跑,但并不会打到同一个业务实例。

  3)物理隔离,利用异地多活的特性,将业务流量从一个机房切出,留下一个空机房做压测。

  第一种方案是最接近线上真实环境的,但是存在着一些安全风险;后两种方案安全性高很多,但是没有完全利用整个线上架构,存在一定程度上的失真。

  3、线上压测怎么保证安全性?

  1)流量隔离,如上述方法做流量隔离。但是只做流量隔离是不够的,即使是物理隔离,也会对线上数据进行修改,所以还要做数据隔离。

  2)压测流量经过中间件时进行打标,做压测标记,比如http流量可以配置一个特殊的header。

  3)在业务集群对流量标记进行数据隔离,比如对压测流量产生的日志写到另一个路径(有的系统会对日志做一些分析统计);存储/缓存方面将压测流量产生的数据存储到影子表,正常流量访问正常表;

  4)消息屏蔽,如果消息队列无法识别出压测消息,则会造成线上消息堆积,影响线上流量,所以需要对压测消息进行屏蔽。

  4)对不支持压测的第三方服务进行mock。

  压测模型

  压测要覆盖哪些场景?压测请求和数据如何构造?如何模拟业务流量形态?以上三个问题分别对应压测模型中的业务模型、数据模型和流量模型。

  1、业务模型

  压测需要覆盖哪些业务场景?

  需要梳理出核心业务场景,必须包含核心接口和大流量接口,大流量接口可能是一些不对用户暴露的,在内部频繁使用的接口。

  如何模拟业务场景?

  需要理清楚接口之间的关系。对待一些简单查询的接口,没有前后依赖关系,只需要关注流量配比就行了;对待一些复杂业务场景,则需要还原业务处理流程,理清楚接口串联逻辑。可以通过场景录制和场景回放来梳理。

  2、数据模型

  基于线上数据进行改造

  请求部分可以直接把线上流量录制下来,对请求加压测标记,并对关键id做便宜;铺底数据可以直接将线上存储数据拷贝到另一个压测表。

  基于模型构造

  通过对线上日志和请求进行分析,梳理出对性能有影响的数据特征和请求特征,根据这些特征构造出数据,其中铺底数据需要通过真实的业务应用来构建。

  压测模型的特例:流量录制,原样回放

  特点:不用模拟业务场景、不需要构造数据;只能录制到线上已有流量的服务和接口;只能在线上环境回放,只能回放只读接口;只适用于老服务读接口的压测;

  流量录制可以把低峰期、平峰期、高峰期的流量都录制下来,以免出现漏测的情况。

  3、流量模型:模拟业务流量形态

  1)线上有流量

  观察线上流量形态。

  网上绝大部分开源的监控打点都是5s以上的,最理想的情况可以达到ms级别的,可以通过分析日志来进行实现。

  2)线上没有流量

  分析用户行为或者调用方行为。

  常见的业务流量形态可以分为两种,一种是连续递增型,还有一种是脉冲型(比如抢红包)

  4、流量预估

  流量形态是模拟线上流量曲线,此外我们还需要进行流量预估,计算出压测的量级。

  已双十一活动为例,我们可以把接口分为三类:

  1)背景接口

  流量不随活动而变化,压测是仅作为背景流量,取近期峰值即可;

  2)普通关注接口

  流量随活动而变化,用通用模型计算

  3)重宝接口

  比如交易接口,取历史大促的峰值

  压测结果分析

  1、观测指标

  系统指标

  >>qps/tps,最大tps一定是稳定的,如果存在抖动,那系统已经存在问题。

  >>响应时间,从客户端发起请求到收到请求的全过程时间

  >>错误率,根据sla来定

  >>资源指标

  >>cpu利用率,一般要低于80%,avg低于60%比较保险

  >>内存使用率,低于80%比较保险,否则可能陷入GC死亡循环

  >>磁盘吞吐/网络吞吐

  >>特性指标,根据具体业务来定

  >>连接池使用率

  >>消息队列堆积

  >>pps

  2、仿真度分析:压测结果是否有价值?

  比较同等水位下压测场景和线上真实场景服务表现相似度,可进行仿真度分析的指标:

  >>流量,流量比例,接口覆盖

  >>链路覆盖

  >>机器资源,cpu利用率、内存利用率

  >>可用性指标,时延,错误率

  >>业务指标

  把这些指标组装成一个向量,和线上指标做比较,二者差异,差异越小,仿真度就越高。



相关文章
  • 亚马逊运营成功转行软件测试,薪资13K表示很满意!2023-05-12 13:34:07
  • 西安川石的兰朋友喊你来当他的学弟学妹啦!2023-05-12 13:34:07
  • 国外的月亮也不一定比国内测试猿的年薪美~2023-05-12 13:34:07
  • 建筑工程专业朱同学成功转行为软件测试人!2023-05-12 13:34:07
  • 财务管理专业转行软件测试月薪甩会计几条街!2023-05-12 13:34:07
  • 只有技术沉淀才能成功上岸,深圳就业薪资13K!2023-05-12 13:34:07
  • 薪资11K!实现自我价值,从掌握一门IT技术开始...2023-05-12 13:34:07
  • 文科生转行软件测试照样拿下高薪15K!2023-05-12 13:34:07
  • 恭喜罗同学喜提19.5K,成功入行软件测试!2023-05-12 13:34:07
  • 毕业1年,迷茫的他最终选择转行软件测试2023-05-12 13:34:07