一.关联介绍:
LR录制的脚本只是忠实记录了所有从客户端发送到服务器端的数据,并在脚本回放的时候按照录制的顺序将录制下来的数据重新发送出去。但是,实际上许多的系统都采用SessionID或SeqID等方法来标识不同的任务和数据报,应用在每次运行时发送的数据并不完全相同。所以,为了让脚本能够支持测试的需求,就必然要用某种机制对脚本的数据进行出来了。总之一句话:通过关联可以在测试中保持动态值。
二.一般的关联步骤:
1.从服务器返回的数据中选取需要进行关联的数据。
2.将该数据存入脚本的一个参数中
3.将脚本中需要使用该数据的地方用参数来替换。
Tip:对于web来说,一般会用一个hidden 的 field存放。所以在可以服务器返回的记录查找该字段值。
三:关联的目的:
1.简化或优化代码
例如,如果依次执行一系列的相关查询,您的代码可能会变得很长。为了减少代码的大小,可以嵌套查询,但这样会失去准确性,而代码会变得复杂而难以理解。通过关联语句,不需要嵌套就可以链接查询。
2.用于动态数据
许多应用程序和网站当前日期和时间标识会话。如果尝试重播脚本,该操作将会失败,应为当前时间与录制时间不同(LR自带的WEB演示程序)。通过关联数据可以保存动态数据,并在整个方案过程中使用这些数据。
四:关联操作
方法一:自动关联
1.Tools -Recording Options。
2.设置完成后录制登陆 – 退出过程。
3.利用LR自带的自动关联进行关联。
方法二:手动关联
1:录制测试脚本,录制二遍
2:使用WinDiff工具找出两次脚本的不同,判断是否需要进行关联(Tools下的 Compare with Vuser进行2个相同操作的脚本对比)
3:确定插入关联的位置
4:在VIEW TREE中使用web_reg_save_param函数手动建立关联
5:将脚本中有用到关联的数据,用参数代替
6:验证关联的正确性
五:定位需要关联操作
1.Vuser -Scan Script. for Correlations
2.在Server Response 中进行比对2次服务器变化的数值。
六:常见的需要关联的场景
1.登录操作。
2.先查后修改,先差后删除。
3.并发控制:防止2个用户同时修改或同时删除一条记录。
七:关联函数模型
int web_reg_save_param (const char *ParamName, <List of Attributes>, LAST); 成功返回:LR_PASS(0),失败LR_FAIL(1)
例子:web_reg_save_param (“Test”,”LB=userSession Value”,”LB=>”,”Ord=1″
“RelFrameID=1.21″,”Serch=Body”,”IgoreRedirections=Yes”,LAST);
八:手动关联总结
1、正常情况下的手动关联:web_reg_save_param(“SessionId”,” LB =value=/””,” RB =/”>”, LAST );
LR:所需截取字符串的左边界
RB:所需截取字符串的右边界
如果左右边界中存在各种特殊字符,如双引号等,则需先用/进行转义
一般情况下,如果所截字符串的左右边界比较唯一的话,可以直接用上面的方式进行获取,无需设置别的属性
了。(“LAST”是固定的。。。)
2、如果进行关联后,有报错信息,提示参数化未成功,有可能是以下几方面的原因:
1)左右边界取值不正确,可以进入Generation log中,查看在关联的参数左右边界是否正确
2)关联函数的位置放置错误
可以将log设置成输出Extended log。
设置方法为:Vuser->Run-time Settings->Log属性中,选中Extended log 并选中下面三个日志。
在输出的日志中找到所要关联化的参数第一次的输出位置(注意是response返回的值,不是request中的),
对照左侧的脚本行数,将关联函数放在此行数之前,即可。
3、关联没问题,运行时无报错,可就是得不到参数的值,可以从Extended log中找到原因。
将Replay Log中的日志改为输出Extended log->Parameter substitution日志,再重新运行一次,便可看到
所关联参数的变化情况。
4.如果某个参数关联成功,可是运行时却发现还会报错,那么可以考虑一下是不是因为有别的值跟你所截取的
这个参数相关联,随着那个值的变化,你所截取的这个参数也会进行某一方面的变化,那样的话就需要将那个变化的值
同样进行参数化。也有可能是被关联的参数被HTTP请求多次返回,每次界面引用的值都不同,注意通关抓包来分析
九、关联中常用的转义内容
/b Backspace键
/f 换页
/n 换行
/r 回车
/t 水平制表符
/v 垂直制表符
/’ 单引号标记
/” 双引号标记
// 反斜线
/? 文本问号
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/192410.html