性能测试loadrunner之参数关联

1.参数化其他类型:
File
Date/Time
RandomNumber
uniqueNumber
2.从数据库中取值作为参数值:
连接数据库时:需要ODBC数据源
mysql默认不允许远程访问---->需要先开启远程访问
3.关联—》从服务器的响应数据中获取数据
函数:web_reg_save_param()----->关联函数,---->属于注册型函数—特点:该函数放在某个请求的响应如果有我们想要的数据,那么就放在该请求的前面
两种:手动:基本关联—获取一个值,
高级关联:获取多个值
lr_paramarr_idx()—>获取参数数组指定位置的元素,注意:位置从1开始
lr_paramarr_len()—>获取参数数组的长度
lr_paramarr_random()---->获取参数数组随机位置上的元素
lr_save_string(“字符串”,“参数名”)---->将字符串保存到参数中

	自动:
		录制中关联---->需要设置关联规则---->Edit recording options中选择correlation--->new application--->new rule--->设置左右边界即可
		录制完后关联--->1.录制完以后必须先运行一遍  2.扫描脚本---->vuser菜单下--->scan script for correlations-->扫描过程中会将响应数据和上一次运行的响应数据
		做对比,出现不同的内容以后会有黄色提示--->如果是想要关联的内容--->选中该数据右键选择create correlations即可

在这里插入图片描述
关联的步骤:
在这里插入图片描述

一、手动关联

关联的作用:
从服务器响应数据获取动态数据,依赖目标对象的左右边界

//输入用户名和密码进行登录
//需要实时的获取上一个请求的响应数据中的userSession对应的值,放到登录的请求数据中即可
// 如果知道如何取值那么就可以实现登录成功
// 实时获取值的方式:关联
// 函数名:web_reg_save_param();----->为了获取上一个请求的响应数据中的userSession值
// 该关联函数:带有reg字样,凡是带有reg字样的函数我们都称为注册型函数
// 注册型函数的特点:哪个请求的响应数据有我们需要的数据,那么该就放在请求的前面,也就是说该函数需要放在web_url()请求函数的前面

入口:可以是插入的形式插入该函数
在这里插入图片描述
配置:
在这里插入图片描述
配置完成后生成函数:
//web_reg_save_param();

web_reg_save_param("session",
	"LB=name=userSession value=",
	"RB=>",
	"Ord=1",
	LAST);

上代码看一下:

Action()
{
    //web_reg_save_param();
    
	web_reg_save_param("session",
		"LB=name=userSession value=",
		"RB=>",
		"Ord=1",
		LAST);

   
	//打开网站
	web_url("打开网站","URL=http://192.168.103.98:1080/webtours/",LAST);
	//输入用户名和密码进行登录
    //需要实时的获取上一个请求的响应数据中的userSession对应的值,放到登录的请求数据中即可
	// 如果知道如何取值那么就可以实现登录成功
	// 实时获取值的方式:关联
    // 函数名:web_reg_save_param();----->为了获取上一个请求的响应数据中的userSession值
    // 该关联函数:带有reg字样,凡是带有reg字样的函数我们都称为注册型函数
    // 注册型函数的特点:哪个请求的响应数据有我们需要的数据,那么该就放在请求的前面,也就是说该函数需要放在web_url()请求函数的前面
	web_submit_data("登录",
		"Action=http://192.168.103.98:1080/webtours/login.pl",
		"Method=POST",
		"TargetFrame=",
		"Referer=",
		"Mode=HTML",
		ITEMDATA,
		"Name=userSession", "Value={session}", ENDITEM,
		"Name=username", "Value=jojo", ENDITEM,
		"Name=password", "Value=bean", ENDITEM,
		"Name=login.x", "Value=36", ENDITEM,
		"Name=login.y", "Value=8", ENDITEM,
		"Name=login", "Value=Login", ENDITEM,
		"Name=JSFormSubmit", "Value=off", ENDITEM,
		LAST);

	return 0;
}

二、自动关联

在这里插入图片描述

不建议使用

Action()
{

	web_set_max_html_param_len("1024");

	/* Registering parameter(s) from source task id 512
	// {WCSParam2} = "122796.104414743zDVzDctpzcAiDDDDDHiQHpQtHHcf"
	// */
	//在录制过程中进行关联,前提是在录制以前先开启关联,并设置好值左右边界
	web_reg_save_param("WCSParam2", 
		"LB/IC=name=userSession value=", 
		"RB/IC=>", 
		"Ord=1", 
		"Search=Body", 
		"RelFrameId=1.2.1", 
		LAST);

	web_url("webtours", 
		"URL=http://192.168.103.98:1080/webtours", 
		"TargetFrame=", 
		"Resource=0", 
		"RecContentType=text/html", 
		"Referer=", 
		"Snapshot=t3.inf", 
		"Mode=HTML", 
		LAST);

	lr_think_time(8);

	web_submit_data("login.pl", 
		"Action=http://192.168.103.98:1080/webtours/login.pl", 
		"Method=POST", 
		"TargetFrame=body", 
		"RecContentType=text/html", 
		"Referer=http://192.168.103.98:1080/webtours/nav.pl?in=home", 
		"Snapshot=t4.inf", 
		"Mode=HTML", 
		ITEMDATA, 
		"Name=userSession", "Value={WCSParam2}", ENDITEM, 
		"Name=username", "Value=jojo", ENDITEM, 
		"Name=password", "Value=bean", ENDITEM, 
		"Name=JSFormSubmit", "Value=off", ENDITEM, 
		"Name=login.x", "Value=43", ENDITEM, 
		"Name=login.y", "Value=7", ENDITEM, 
		LAST);

	return 0;
}

2,录制后关联,更不建议使用
在这里插入图片描述

Action()
{
//1.录制以后关联,必须先运行脚本一次
//2.扫描脚本
// 

//Correlation comment - Do not change!Original value='122796.130741191zDVzDcfpQHfDHiQHpQffif' Name ='CorrelationParameter_1'

	web_reg_save_param_ex(
		"ParamName=CorrelationParameter_1",
		"LB=userSession value=",
		"RB=>\n<table border",
		SEARCH_FILTERS,
		"Scope=Body",
		"RequestUrl=*/nav.pl*",
		LAST);

	web_url("webtours",
		"URL=http://192.168.103.98:1080/webtours",
		"TargetFrame=",
		"Resource=0",
		"RecContentType=text/html",
		"Referer=",
		"Snapshot=t1.inf",
		"Mode=HTML",
		LAST);

	lr_think_time(7);

	web_submit_data("login.pl",
		"Action=http://192.168.103.98:1080/webtours/login.pl",
		"Method=POST",
		"TargetFrame=body",
		"RecContentType=text/html",
		"Referer=http://192.168.103.98:1080/webtours/nav.pl?in=home",
		"Snapshot=t2.inf",
		"Mode=HTML",
		ITEMDATA,
		"Name=userSession", "Value={CorrelationParameter_1}", ENDITEM,
		"Name=username", "Value=jojo", ENDITEM,
		"Name=password", "Value=bean", ENDITEM,
		"Name=JSFormSubmit", "Value=off", ENDITEM,
		"Name=login.x", "Value=35", ENDITEM,
		"Name=login.y", "Value=8", ENDITEM,
		LAST);

return 0;
}

三、高级关联

在这里插入图片描述

//高级关联使用时,会把定位到的多个值放到参数数组里面   

//现在就需要从数组里面取值
三个函数分别为:
lr_paramarr_idx(“参数数组名”,i); 取出参数数组指定索引的元素
lr_paramarr_len(“参数数组名”); 取出参数数组的长度
lr_paramarr_random(“参数数组名”); 随机取出参数数组的一个元素
lr_save_string(lr_paramarr_random(“参数数组名”),“参数名”); 将随机取出的参数数组的一个元素保存为一个参数(lr_save_string(lr_paramarr_random(“fights”),“bbb”);)
// lr_output_message(lr_eval_string("{aaa}"));输出显示

把所有符合条件的参数都提取出来
在这里插入图片描述
代码:

Action()
{
		char * str;
    	web_reg_save_param("session",
		"LB=name=userSession value=",
		"RB=>",
		"Ord=1",
		LAST);

        web_url("打开网站","URL=http://192.168.103.98:1080/webtours/",LAST);

        web_submit_data("登录",
            "Action=http://192.168.103.98:1080/webtours/login.pl",
            "Method=POST",
            "TargetFrame=",
            "Referer=",
            "Mode=HTML",
            ITEMDATA,
            "Name=userSession", "Value={session}", ENDITEM,
            "Name=username", "Value=jojo", ENDITEM,
            "Name=password", "Value=bean", ENDITEM,
            "Name=login.x", "Value=36", ENDITEM,
            "Name=login.y", "Value=8", ENDITEM,
            "Name=login", "Value=Login", ENDITEM,
            "Name=JSFormSubmit", "Value=off", ENDITEM,
            LAST);

        //点击fights
		web_url("点击fights","URL=http://192.168.103.98:1080/webtours/welcome.pl?page=search",LAST);
//该请求的响应数据中有我们需要的数据,所以我将关联函数放在该请求前面----此时用高级关联方式
		
	web_reg_save_param("fights",
		"LB=name=outboundFlight value=",
		"RB=>",
		"Ord=ALL",
		LAST);


        //选择出发地目的地,点击continue
        
	web_submit_data("web_submit_data",
		"Action=http://192.168.103.98:1080/webtours/reservations.pl",
		"Method=POST",
		"TargetFrame=",
		"Referer=",
		"Mode=HTML",
		ITEMDATA,
		"Name=advanceDiscount", "Value=0", ENDITEM,
		"Name=depart", "Value=Denver", ENDITEM,
		"Name=departDate", "Value=01/15/2018", ENDITEM,
		"Name=arrive", "Value=London", ENDITEM,
		"Name=returnDate", "Value=01/16/2018", ENDITEM,
		"Name=numPassengers", "Value=1", ENDITEM,
		"Name=seatPref", "Value=None", ENDITEM,
		"Name=seatType", "Value=Coach", ENDITEM,
		"Name=findFlights.x", "Value=28", ENDITEM,
		"Name=findFlights.y", "Value=5", ENDITEM,
		"Name=.cgifields", "Value=roundtrip", ENDITEM,
		"Name=.cgifields", "Value=seatType", ENDITEM,
		"Name=.cgifields", "Value=seatPref", ENDITEM,
		LAST);


	//高级关联使用时,会把定位到的多个值放到参数数组里面   
   //现在就需要从数组里面取值
//	str=lr_paramarr_idx("fights",lr_paramarr_len("fights")-1);//变量定义必须放在首行
//	lr_output_message("%s",str);
	//str中存放的值为字符串,而非参数,所以不能直接将字符串放入到下面的代码中
   //这时候需要将字符串内容保存到参数中
//	 lr_save_string()
//	 lr_save_string("helloworld","aaa");//将helloworld放入参数aaa中
//	 lr_output_message(lr_eval_string("{aaa}"));


//	lr_output_message(lr_eval_string("{bbb}"));
//	lr_paramarr_len()
//	lr_paramarr_random()
//	lr_paramarr_random("fights");
	lr_save_string(lr_paramarr_random("fights"),"bbb");

        //选择航班信息点击continue
	
	web_submit_data("web_submit_data",
		"Action=http://192.168.103.98:1080/webtours/reservations.pl",
		"Method=POST",
		"TargetFrame=",
		"Referer=",
		"Mode=HTML",
		ITEMDATA,
		"Name=outboundFlight", "Value={bbb}", ENDITEM,
		"Name=numPassengers", "Value=1", ENDITEM,
		"Name=advanceDiscount", "Value=0", ENDITEM,
		"Name=seatType", "Value=Coach", ENDITEM,
		"Name=seatPref", "Value=None", ENDITEM,
		"Name=reserveFlights.x", "Value=60", ENDITEM,
		"Name=reserveFlights.y", "Value=4", ENDITEM,
		LAST);

	return 0;
}


参数化与关联的区别
参数化数据是固定的,关联的数据是动态的
参数化的数据是保存在参数化文件中的,关联的数据是从服务器动态获取的

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值