`
ruilin215
  • 浏览: 1096989 次
  • 性别: Icon_minigender_2
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

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;
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics