录制原则:
- 基于浏览器的应用程序推荐使用HTML方式
- 不是基于浏览器的应用程序推荐使用URL方式
- 如果基于浏览器的应用中包含了JavaScript并且该脚本向服务器产生了请求,比如DataGrid的分页按钮等,也要使用URL方式
- 基于浏览器的应用中使用了HTTPS安全协议,使用URL方式
使用事务的原因:
2、事务能够用于度量高风险业务流程的性能指标;
3、事务能够度量在一组操作中每一步的性能指标;
4、通过事务计时实现了不同压力负载下的性能指标对比;
5、通过事务计时可以帮助定位性能瓶颈;
事务的开始函数:lr_start_transaction() eg: lr_start_transaction("登陆");
事务的结束函数:lr_end_transaction() eg:lr_end_transaction("登陆",LR_AUTO);
事务的状态包括:LR_PASS、 LR_FAIL 、 LR_AUTO 、 LR_STOP 。 eg:lr_set_transaction_instance_status(LR_FAIL);
lr_fail_trans_with_error除了可以设置的状态,还可以输出错误日志信息。
lr_fail_trans_with_error("an error has occurred:%",my_get_error_string(status));
获取事务的状态:lr_get_transaction_status()
获取事务所消耗的时间:trans_time=lr_get_transaction_wasted_time()
关联(correlation):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相应的值,已变量的形式替换录制时的静态值,从而向服务器发出正确的请求,这种动态获得服务器响应内容的方法被称作关联。当客户端的某个请求是随着服务器端的相应而动态变化的时候,我们就需要用到关联.
手动关联
第一种:
int web_reg_save_param( const char *ParamName, <List of Attributes>, LAST );
第一部分(const char *ParamName):参数名,用双引号括起来,逗号分开
第二部分(<List of Attributes>):包括LB、RB、RelFameID、Ord、Search、SaveOffiset、SaveLen等。
第三部分(LAST ):结束标志。
第一步:录制测试脚本,录制二遍
第二步:使用WinDiff工具协助找出需要关联的数据
1. 在第二份脚本中,点选VuGen的【Tools】>【Compare with Vuser…】,并选择第一份脚本。
2. 接着WinDiff会开启,同时显示二份脚本,并显示有差异的地方。WinDiff会以一整行黄色标示有差异的脚本,并且以红色的字体显示真正差异的文字。(假如没看到红色字体,请点选【Options】>【View】>【Show Inline Differences】)。
查看二份脚本中差异的部份,每一个差异都可能是需要做关联的地方。
注意:lr_thik_time部分的差异可以忽略
找到不同的部分后,复制,然后打开Recording Log或是Generation Log,按Ctrl+F,在查找窗口中粘贴差异部分的内容,点击查找找到后,查看该部分的信息,确认是客户端的请求信息还是服务器回应的信息
如果出现在
一般做的关联都是出现在****** Response Header For Transaction With Id 7 ******和****** Response Body For Transaction With Id 7 ******中的部分。
在找到这个信息后,需要记录如下信息:
a、记录这个不同数据之前的内容和之后的内容
b、记录这个不同数据出现的位置,是Header还是Body
第三步:确认插入关联的位置
我们在 日志 中找到了两次脚本的不同点的位置,根据这个位置,我们再确定是在哪个请求之后产生的,也就是说要定位发生不同点的response是由哪个request产生的,找到了这个请求的函数位置,我们就知道要往哪里做关联了。
一般情况下关联函数写到发出请求的函数之前就可以了。
第四步:插入关联函数
在插入关联函数前,我们先介绍关联函数web_reg_save_param
一个web_reg_save_param函数的例子:
web_reg_save_param ("sessionid",
"LB=Session_id:",
"RB=;",
"Search=Body",
LAST);
在这里我们只介绍几个常用参数的含义
语法:int web_reg_save_param(const char *ParamName, <list of Attributes>, LAST);
参数说明:
ParamName: 存放得到的动态内容的参数名称
list of Attributes: 其它属性,包括:Notfound, LB, RB, RelFrameID, Search, ORD, SaveOffset, Convert, SaveLen。属性值不分大小写
LB( Left Boundary ) : 返回信息的左边界字串。该属性必须有,并且区分大小写。
RB( Right Boundary ): 返回信息的右边界字串。该属性必须有,并且区分大小写。
Search : 返回信息的查找范围。可以是Headers,Body,Noresource,All(缺省)。该属性质可有可无。
那么 如何 插入该关联函数呢?
1.将vugun切换到 view tree 模式下
2.在左边的列表中,找到在上一步发出请求的函数,点击“右键”
选择“insert before”
3.在弹出的“add step”对话框的“find function”中输入“web_reg_save_param”,点击“ok”
在“parameter name”中输入,关联函数的名称,这里最好有含义,“sessionid”
在“left boundary”中输入,刚才记录下的不同点字符串的左面的几个字符,定义左边界,Session_id:
在“right boundary”中输入,刚才记录下的不同点字符串的右面的几个字符,定义右边界,;
在“search in ”中,选择“body”
点击“ok”
4.回到脚本编辑模式下,查看该函数插入是否正确
在发出请求的函数前应该看到:
web_reg_save_param ("sessionid",
"LB=Session_id:",
"RB=;",
"Search=Body",
LAST);
第五步:将脚本中有用到关联的数据,用参数代替
如发出请求的参数如下,那么将原来服务器返回的动态值使用{ sessionid } 来替换:
web_submit_form("login.php_2",
"Snapshot=t2.inf",
ITEMDATA,
"Name=login", "Value=wangjin", ENDITEM,
"Name=password", "Value=wangjin", ENDITEM,
"Name=Session_id","Value={ sessionid } ", ENDITEM,
"Name=Submit", "Value=Login", ENDITEM,
EXTRARES,
"URL=/media/images/border_bg_l.gif", ENDITEM,
"URL=/media/images/header_bg.gif", ENDITEM,
"URL=/media/images/th.gif", ENDITEM,
LAST);
第六步:验证关联的正确性
回放脚本,验证关联的正确性。
第二种:
选择Tree 视图模式,点击HTTP View 下查看Response Body 中,打到需要关联的内容,右键在下拉列表中选择“Create Coorelation”
预关联
预关联也可以叫做“ 一边录制一边关联”
在录制脚本时打开Recording Options 设置窗口
1、点击一New Application 按钮,新建一个叫做WebTours 的应用
2、选择这个规则,点击 New Rule 按钮一个规则。
3、然后做如下设置:
搜索web_reg_save_param_ex 函数,选中函数,点击OK ,弹出函数的设置窗口:
Prameter name: 此设置存放参数的名称。
Left boundary: 此处设置左边界,这里是用来填写关联对于数据处理的左匹配内容规则。
Match case : 默认情况下边界是检查Match case ,也就是检查大小写的。
Binary data : 如果要关联的内容是非ASCII 字符的,需要选择此项
Regular expression : 在LR11 中关联提供了使用正则表达式的功能,但是LR11 Patch3 中取消web_reg_save_param_ex 函数对此功能的设置。
Reight boundary: 此处设置右边界。
DFEs : 在录制选项和回放中我们提供了DFE的功能,在关联这里也支持DFE的数据处理。 (DFE等后面再解释,或你自行查资料)
Ordinal : 这个关键字在很多函数里面都有应用,在这里可以填写任意一个整数,也可以填All 。如果填写数字,那么说明从返回的记录中取出对应顺序的值,而填写All 的话将会返回所有内容。
Save Offset : 设置关联的内容偏移量,从第几位开始进行关联操作。
Save Length : 关联出来的内容所需要保存的长度。
Warm if text was not found (Default is Error) : 对于关联的对象不存在的处理。
Filters : 下面的选项都是帮助关联返回限定的,通过这些设置可以进一步减少返回的范围。
自动关联 的步骤如下:1.开启自动关联选项
刚才提到的两种关联机制,如果用户想使用loadrunner自带的关联规则创建关联,那么需要在【Recording Options】>【Internet Protocol】>【Correlation】中启用关联规则,选中“Enable correlation during recording”,当录制这些应用 系统 的脚本时,VuGen会在脚本中自动建立关联。也可以在【Recording Options】>【Internet Protocol】>【Correlation】中添加关联规则,达到自动关联的目的。
如果需要在回放脚本时,loadrunner自动检测需要关联的部分,那么需要在【Tools】>【general options】>【Correlation】中选中“save correlation information during replay”和“show scan for correlations popup after replay of vuser”,当回放玩脚本后,会弹出Scan action for correlation窗口,进行关联点的搜索
2.录制脚本
录制脚本的过程在这里就不多说了
3.回放脚本
如果录制的脚本存在需要做关联的部分,那么在回放脚本时会出现错误
4.系统自动弹出检测关联对话框,或手动启动关联检测对话框
如果选择了【Tools】>【general options】>【Correlation】中的“save correlation information during replay”和“show scan for correlations popup after replay of vuser”,那么在回放脚本后会自动弹出“Scan action for correlation”窗口,点击“yes”进行自动查找
如果没有选择上述 设置 ,那么也可以按CTRL+F8启动关联自动搜索
5.查看系统检测出的关联点进行关联设置
如果在录制和回放中存在差异,loadrunner会在“Correlation Results”中列出需要做关联的内容,用鼠标点击一条需要做关联的内容,点击“Create Rule”,系统会显示获得当前数据的规则,点击“yes”,完成规则的创建,同时查看脚本中增加了一个web_reg_save_param函数
也可以点击【Correlate】按钮创建关联,一笔一笔做,或是按下【Correlate All】让VuGen一次就对所有的数据建立关联。
注意:由于Correlation Studio会找出所有有变动的数据,但是并不是所有的数据都需要做关联,所以不建议您直接用【Correlate All】。
6.回放脚本 检查 关联的正确性
创建好关联后,回放脚本检查关联的正确性