场景要求如下:100个用户,其中10个用户执行A业务逻辑、20个用户执行B业务逻辑、30个用户执行C业务逻辑、40个用户执行D业务逻辑;要求这100个用户的操作是同时并发的。
由于多业务操作,那么首先会想到录制4个脚本+Group方式去执行这个场景,但是真的能做到吗?
每个单独的脚本中,都能控制同时执行A、或者B;但是怎么样控制ABCD同时执行呢?
所以我的办法是录制1个脚本,脚本中分别包含ABCD四个业务逻辑,分别用TrasactionA、TrasactionB、TrasactionC、TrasactionD表示。
首先确认以上操作是能够完成的,哪怕是录制4个脚本,然后手工将这四个脚本合并。
完成以上操作之后我们就有了这样的1个脚本,在这个脚本中是一个顺序执行的脚本,ABCD,如下:
Action
{
TransactionA;
TransactionB;
TransactionC;
TransactionD;
}
然后通过判断VUserID的方式来进行用户的分配,首先在ParameterList中新建一个VUserID类型的参数,定义为NewParam_VUserID;
那么在LoadRunner脚本中可以这样子引用到;
char ParamVUID_Nbr[24];
int ParamVUID_INT;
sprintf(ParamVUID_Nbr,"%s",lr_eval_string("{NewParam_VUserID}"));
lr_save_string(ParamVUID_Nbr,"ParamVUID_Nbr");
通过atoi函数进行字符串和数字之间的转换;
ParamVUID_INT = atoi( lr_eval_string("{ParamVUID_Nbr}"));
然后改写脚本为
Action
{
在这里加入集合点;
if (ParamVUID_INT<=10)
TransactionA;
if (((ParamVUID_INT>10)&&(ParamVUID_INT<=30))
TransactionB;
if (((ParamVUID_INT>30)&&(ParamVUID_INT<=60))
TransactionC;
if (ParamVUID_INT>60)
TransactionD;
}
OK,这下子应该可以顺利实现100个用户的按比例分发,并且让A、B、C、D并发执行了。
超级PS:前几天试验了一下,集合点是可以跨脚本的,所以这个方法基本上是又破又长了,^_^