51Testing软件测试论坛

标题: 关于loadrunner 并发时脚本取得唯一值 [打印本页]

作者: hand_smile    时间: 2008-5-6 12:01
标题: 关于loadrunner 并发时脚本取得唯一值
各位高手,我有一个问题:
我在测试并发时的场景设计是这样的:每10S增加5个用户,运行3分钟后停止所有用户
部分脚本,需要给rowinfoid的数据加comments:
web_reg_save_param("taskid",
         "LB=<input type=\"hidden\" name=\"rowinfoid\" value=\"",
         "RB=\">",
         "Ord=ALL",
         LAST);

count=atoi(lr_eval_string("{taskid_count}"));
srand(time(NULL));
 rand_id=rand()%count+1;
 sprintf(task,"{taskid_%d}",rand_id);
  lr_save_string(lr_eval_string(task),"taskid2");
我取的是随机值,回放时没有问题,但是在场景运行中就有问题了
因为有5个用户同时加载,所以有时候会出现几个用户同时同一个rowinfoid的数据写comments

如果换成以下代码
count=atoi(lr_eval_string("{taskid_count}"));
for(i=1;i<=count;i++){
                  sprintf(task,"{taskid_%d}",i);
                  sprintf(task1,"%s",lr_eval_string(task));
          }

lr_save_string(task1,"taskid2");
每次取的值都是最后一个,如果同时加载几个用户,也会出现为同时同一个rowinfoid的数据写comments的情况
但是每隔一段时间加载用户就不会出现这种情况
我的问题是:
有没有可能在同时我的场景中(每10S增加5个用户,运行3分钟后停止所有用户)用代码实现,每运行一次脚本,取不同的rowinfoid值呢?
偶是脚本菜鸟,请高手们指点指点

[ 本帖最后由 hand_smile 于 2008-5-13 17:32 编辑 ]
作者: hand_smile    时间: 2008-5-6 15:26
有没有人解答下我的问题呀?
作者: wgx2345    时间: 2008-5-6 16:54
srand() 这一步的值 用参数化的数值代替呗 或者用lr_whoami 里面的vuser_id 代替
总之伪随机数是靠不住地
作者: hand_smile    时间: 2008-5-13 17:31
按照楼上的方法改进,并发时能取不同值了,多谢楼上的
脚本,贴出来
Action()
{
          int count;
        int i,rand_id;
        char task[50];
        char task1[50];
         int vid, scid;
        char *vuser_group;

lr_whoami(&vid, &vuser_group, &scid);
lr_message( "Group: %s, vuser id: %d, scenario id %d", vuser_group, vid, scid);

count=atoi(lr_eval_string("{T0_count}"));
    srand(vid);
        rand_id=rand()%count+1;
          lr_output_message("rand number is %d",rand_id);
                sprintf(task,"{T0_%d}",rand_id);
         sprintf(task1,"%s",lr_eval_string(task));
      lr_save_string(task1,"taskid2");

不过这个函数lr_whoami(&vid, &vuser_group, &scid);最后的scenario id  什么时候用?




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2