性能测试中,经常需要对多个接口按一定比例分配来模拟真实的业务场景,即混合场景压力测试。比如金融产品购买的场景中,用户登录之后,购买理财产品,查看交易记录,查看持仓和收益的比例为2:3:4,在使用Jmeter测试工具进行压力测试时,如何控制其比例呢?
一般来说,可以采用多线程组的方式,通过在一个测试计划中建立多个线程组,通过控制每个线程组的线程数比例来达到比例控制的目的。这种测试方法的前提是假定一个混合压力测试场景中每个接口的响应都一样,而一般情况下每个接口的响应时间都不一致,使用这种方法来控制比例很不理想。
下面介绍一种通过IF逻辑控制来控制混合压力测试中接口比例的方法。
思路:通过IF逻辑控制器的if表达式来控制比例,简要的代码如下:
{
num=__counter(true,);//__counter函数,可以用来获取当前的迭代次数
if(num%9<2)//控制比例为2/9
{
createFinanceOrder();
}
if(num%9>=2&&num%9<=4)//控制比例为3/9
{
queryFinanceProductOrderList();
}
if(num%9<>4)//控制比例为4/9
{
queryPositionPincome();
}
}
Jmeter脚本实现方法:在采样器的上一级添加“逻辑控制器”->“如果(If)控制器”,如下图所示:
金融产品购买业务比例,通过添加if逻辑条件:${__counter(true,)}%9<2进行比例控制在22%,即业务比例占整个业务场景的2/9,如下图所示:
交易记录查询业务比例,通过添加if逻辑条件:${__counter(true,)}%9<=4&&${__counter(true,)}%9>=2进行比例控制在33%,即业务比例占整个业务场景的3/9,如下图所示:
金融产品购买业务比例,通过添加if逻辑条件:${__counter(true,)}%9>4进行比例控制在44%,即业务比例占整个业务场景的4/9,如下图所示:
通过在采样器上添加以上三个if逻辑控制器的比例控制,从而达到三种不同业务在整个业务上的比例为2/9:3/9:4/9即:2:3:4。
压测结果如下: