阅读 96

Loadrunner关联函数web_reg_save_param()的参数Ordinal作用

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

背景

关联是性能测试中必不可少的技术点,即为了模拟真实场景而设计的,同样关联的接口测试亦是如此;首先介绍loadrunner工具的几个相关函数:大抵函数的参数部分,除了Ordinal不写就是默认Ordinal=1(取出第一个匹配的参数),写了Ordinal=All即为保存响应满足左右边界的所有参数,那此时{param_1}就不是一个正确的参数引用,而就是{param_1}字符串,下面来以web_reg_save_param_ex函数为例介绍:

web_reg_save_param("param_1",                                    

"LB=class=\"",                                    

"RB=\"",                                    

"Ordinal=All",                                    

                   LAST);

web_reg_save_param_regexp("ParamName=param_1",

"RegExp=class=\"(.*?)\"",               

"Ordinal=All",                                      

                          LAST);

web_reg_save_param_ex("ParamName=param_1",               

"LB/IC=class=\"",                                          

"RB/IC=\"",                                          

"Ordinal=All",                                          

                      LAST);

int i = 0;

char param_index[64];

web_reg_save_param_ex( "ParamName=goods_id_list",

"LB=goods_id\":\"",

"RB=\",\"miniapp_name",

"NotFound=warning",         

"Ordinal=All",

SEARCH_FILTERS,

LAST);         

web_custom_request(){ 

for(i=1;i<=atoi(lr_eval_string("{goods_id_count}"));i++){

sprintf(param_index, "goods_id_%d}", i);

lr_message("goods_id %d:%s",i,lr_eval_string(param_index));}

int goods_count;

goods_count=atoi(lr_eval_string("{goods_id_count}"));         

i=1;         

char str[64];

while(i<=goods_count){ 

sprintf(str,"goods_id_%d}",i);

lr_save_string(lr_eval_string(str),"Value");

lr_message("goods_id_%d:%s",i,lr_eval_string(str));

i++;     

} 

lr_save_string(lr_paramarr_random("goods_id_list"), "goods_id_random");

lr_log_message("随机取值 %s",lr_eval_string("{goods_id_random}")); 
复制代码

2、上面的意图是通过关联函数,获取动态参数,再使用随机函数取值与下一个接口交互,用自带的机票订票系统来看效果:

Action()

{

web_set_max_html_param_len("12040");

web_reg_save_param("userSession",

"LB=value=",

"RB=>",

"NotFound=ERROR",

"Search=Body",

"Ord=ALL",

		LAST);

web_url("WebTours",

"URL=http://127.0.0.1:1080/WebTours/",

"Resource=0",

"RecContentType=text/html",

"Referer=",

"Snapshot=t1.inf",

"Mode=HTML",

  		LAST);

web_reg_find("Fail=NotFound",

"Search=Body",

"SaveCount=Success",

"Text=Welcome",

  		LAST);

web_custom_request( "Login.pl",

"URL=http://127.0.0.1:1080/WebTours/login.pl",

"Method=POST",

"Body=userSession={userSession}&username=jojo&password=bean&login.x=59&login.y=8&JSFormSubmit=off",

"Mode=HTML",

		LAST);

lr_output_message("-----------------------token为:%s",lr_eval_string("{userSession}"));

return 0;

}
复制代码

3、web_reg_save_param()函数的Ord设置ALL,按F4设置log输出为Paramter subitution:

4、关联函数找到的参数userSession,就不再是可引用的变量,而是一个{userSession} 字符串,所以会报错检点失效;那么上面正确的值应该是{userSession_1},为了展示随机函数的使用效果;我们把脚本修改一下,设置循环5次就可以看效果:

lr_save_string(lr_paramarr_random("userSession"),"userSession_random");

lr_log_message("每次随机取值 %s",lr_eval_string("{userSession_random}")); 
复制代码

5、F4设置run logic循环五次,这样看结果不直观,使用while循环看效果;

6、同上,关联函数都可以使用Ordinal参数,获取更多的参数,如果业务需要取自不同的数据关联,这很有效。 

文章分类
后端
文章标签