我想使用HP LoadRunner控制TPH / TPS。在JMeter中,我们可以使用恒定吞吐量计时器来完成此操作,或者如果有其他替代方法,请共享。

例如:


交易A登录(100 TPH)
交易B搜索产品(1000 TPH)
事务C-添加到购物车中的产品(200 TPH)
交易D-付款(200 TPH)
交易电子注销(100 TPH)

最佳答案

如果所有这些事务都位于不同的脚本中,那么没问题,因为您可以为每个脚本设置不同的步调和运行时设置。

我认为您的问题是所有这些事务都在同一脚本中。在这种情况下,唯一的解决方案是在脚本中创建一个参数,将此参数称为iterator,并将其类型设置为迭代编号。这样,此参数在第一次迭代中将具有值1,在第二次迭代中将具有值2,依此类推。

现在,您可以在调用每个事务之前使用此参数。

假设您的最高TPH为1,000。然后将脚本的运行时设置速度设置为1,000 TPH。但是,如果您希望某个事务的运行量少于该事务,比如说只有100 TPH,那么您仅需要每10次迭代运行一次(1,000 / 100 = 10)。

为此,可以在脚本中使用iterator % 10

// Cast the iterator parameter to an int
var i;
i = atoi(lr_eval_string("{iterator}"));

// This  will run 100 TPH
if ((i % 10) == 0)
{
     lr_start_transaction("Login");

     // Do login
     ...

     lr_end_transaction("Login", LR_AUTO);
}


再例如,要运行200 TPH,可以使用iterator % 5

// This  will run 200 TPH
if ((i % 5) == 0)
{
     lr_start_transaction("Add Product");

     // Do Add Product
     ...

     lr_end_transaction("Add Product", LR_AUTO);
}

09-10 16:43