分段随机实践—模拟线上流量

本文探讨了在性能测试中模拟线上流量的重要性,包括流量回放和构建测试场景请求两种方式。通过分段随机的方法,根据线上流量分析出接口请求比例和参数比例,以更贴近真实流量。文章介绍了两种实现思路,并提供了测试脚本及项目实践案例,验证了方法的有效性。
摘要由CSDN通过智能技术生成

在日常的性能测试中,流量回放是一个非常优秀的方式,不仅可以快速构建测试用例且无限贴近预设场景,而且借助许多优秀的回放框架如goreplay等,可以极大地降低测试门槛,节省时间成本。此方式非常适合进行快速的性能排查,于在有限的资源下快速发现解决问题。

而另外一种方式就是重新构建测试场景的请求。常用的单接口测试、多接口混合测试、链路测试、全链路测试等等都是基于这个方式。单相比于流量回放能够实现的场景更加灵活,对于测试过程的控制也更加精细,对于集成CI/CD以及性能巡检也更加容易。但这类测试用例所面临的最大问题就是如何更加贴近真实流量。从单个接口来说就是用户在请求的时候参数分布,从业务链来说用户操作链路分叉。如果是针对某些特定场景的用例,所需要考虑的这些因素就比较少,但是在外扩方向上的全量负载测试的情况和内缩方向的精细化性能测试来说就显得有些捉襟见肘,复杂度就会飙升。

在之前的文章中,(需要的加我qq:3177181324)提到将所有的接口封装成方法,将功能和性能测试对象都转化成对这个方法的测试。通过构造参数、请求方法、处理返回值,这三步将执行测试用例的整个过程放在Java或者Groovy脚本中实现,这样用例的复杂程度很降低可读性会增高,也能极大提高测试框架的拓展性。

在实践过程中有一个必经之路的小石头:分段随机,就是根据线上流量分析出一个预设场景下的流量模型,主要信息就是接口请求比例,接口参数比例。然后根据这个比例发送不同的请求,携带不同的参数,使得压测流量更加贴近真实流量。

功能实现

这里我写了两个方法,思路前半部分重合如下:

  • 先将map分成两个对应的list,一个保存key一个保存value

后半部分不尽相同:

第一种:

  1. values转换成第i项为旧listi项之和的形式
  2. 随机函数从1~values最后一项(即旧list所有项之和)一个整型数字
  3. 循环判断该值落入某两个index下标的value之间,取出keys中响应的key返回
    /**
     * 根据不同的概率随机出一个对
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值