LR获得参数化中每个关键字的搜索响应时间

转自【http://novasblog.blog.163.com/blog/static/4371351420081019113042869/

 

 

    在测试搜索引擎时我们一般采用大量的搜索关键字,有时有必要了解在并发访问的情况下每个关键字的响应时间,一般如果不对脚本进行处理的话,你可以获得每个关键字的响应时间。但是,这些时间没有跟相应的关键字对应,所以对程序的调优没有什么大的帮助。这里介绍一种方法,可以让你知道在并发访问下每个关键字的响应时间。
    解决办法是可以把搜索的操作定义为一个事务,事务名也用参数值代替,
这样就可以从测试结果中知道该关键字的响应时间了。举例如下:
#include "web_api.h"
Action()
{
lr_start_transaction(lr_eval_string("{SearchParam}"));
web_url("s",
   "URL=http://www.baidu.com/s?wd={SearchParam}",
   "Resource=0",
   "RecContentType=text/html",
   "Referer=",
   "Snapshot=t1.inf",
   "Mode=HTTP",
   LAST);
lr_end_transaction(lr_eval_string("{SearchParam}"), LR_AUTO);
return 0;
}
  这样就可以在场景运行时通过事务监视图中就可以看到每个关键字的
所用的时间了。
    这种方法的缺点是当关键字比较多时,监视器中行数会增多,可能
导致Controller显示不下。
    还有一种方法,示例如下:
#include "web_api.h"
Action(){
float trans_time;
lr_start_transaction("sousuo");
web_url("s",
  "URL=http://www.baidu.com/s?wd={SearchParam}",
  "Resource=0",
  "RecContentType=text/html",
  "Referer=",
  "Snapshot=t1.inf",
  "Mode=HTTP",
  LAST);
trans_time =  lr_get_transaction_duration("sousuo") * 1000;
     lr_output_message("SearchParam:%s,duration:%fms",lr_eval_string("{SearchParam}"),trans_time);
lr_end_transaction("sousuo", LR_AUTO);
return 0;
}
   一般使用这种方法比较好,可以把lr_output_message函数换为自定义
的函数,把结果写到一个结果文件中去,注意写入的文件最好以vuser id
来命名,这样可以保证同时只有一个进程在读写这个文件(这样一来不同
的用户读写不同的文件,否则如果所有用户写入同一文件在用户数多的情况下
并发可能造成对同一文件的访问共享违例,获得vuser id的函数为lr_whoami)。
另外需要说明的是这里获得的事务时间可能比通过lr_start_transaction
和 lr_end_transaction获得的事务的时间要小一些,这是由于测试工具自身的
原因造成的,可以不必理会。
    同时,如果想知道查询过程中哪个关键字搜索结果错误,也可以加上验证点,
同时可以再加一些代码,把搜索超过一定时间的关键字过滤出来。

自己补充的完整程序,如下:
#include "web_api.h"
Action(){
float trans_time;
long file_stream;
char file_name[32];
char *filename;
int user_id;
int scid;
char *vuser_group;
char *suffix="txt";
lr_start_transaction("sousuo");
web_url("s",
  "URL=http://www.baidu.com/s?wd={NewParam}",
  "Resource=0",
  "RecContentType=text/html",
  "Referer=",
  "Snapshot=t1.inf",
  "Mode=HTTP",
  LAST);
trans_time =  lr_get_transaction_duration("sousuo") * 1000;
lr_output_message("SearchParam:%s,duration:%fms",lr_eval_string("{NewParam}"),trans_time);
lr_whoami(&user_id, NULL, &scid);
sprintf(file_name,"c://sousuo//usrID_%d.%s",user_id,suffix);
filename=file_name;
lr_output_message("filename is :%s",filename);

if ((file_stream = fopen(filename, "aw")) == NULL ) //create a file
     {
          lr_error_message("Cannot open %s", "null file");
          return -1;
     }
fprintf(file_stream, "Keyword:%s->%fms/r/n",lr_eval_string("{NewParam}"),trans_time);//response time is written into file.
fclose(file_stream);
lr_end_transaction("sousuo", LR_AUTO);
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值