我想使用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);
}