Web端并发测试前脚本处理——设置关联函数

前言:为什么需要做关联?

  关联是对脚本中每次请求动态取值的值进行特殊参数化的一个过程。Virtual User Generator录制出的脚本是一系列的请求,这些请求在从服务器返回数据之后再次回放时,又生成了新的请求数据,从而不能继续使用原来录制的脚本重复请求服务器,导致回放失败。我们可以使用LoadRunner的关联函数——web_reg_save_param_ex,抓取请求中重新生成的动态变化的值,存到参数中以参数化的方式应用到脚本中动态取值的地方,这样请求就正确,脚本就能重复使用了。
  关联原理:百度链接
https://jingyan.baidu.com/article/6b182309fffa6bba59e1595f.html

下面以一个web端的提交表单为例,做一次关联

一个平台提交表单的并发脚本准备
一、录制脚本
  打开Virtual User Generator,新建一个脚本,选择协议为http,输入脚本名称,点击【创建】
Web端并发测试前脚本处理——设置关联函数
  点击菜单栏红色按钮-录制,选择web浏览器,录制方式这里选择火狐-Mozilla Firefox,也可以选择Google Chrome或者其他浏览器(但是亲测火狐录制兼容性好,回放时不会出一些奇怪错误,对于小白建议选择火狐录制),输入待测试的URL点击【开始录制】
Web端并发测试前脚本处理——设置关联函数
  脚本停止录制之后LR会解析脚本,并进行自动关联,自动关联报错或生成录制报告报错不用管,脚本录制成功就好了。
  脚本解析成功之后我们可以从头阅读下脚本,把明显重复请求的脚本删除,比如第一次进入一个列表,提交成功之后还是进入相同列表的请求删除,以免增加不必要的请求次数,使事务执行的统计时间不准确。
二、回放脚本
  检查完脚本的完整性之后点击Run,运行脚本,查看回放是否成功。回放结果失败,一个请求报错了,报错行是399行,提示:无法获取有关提交的文件“D:\AutoTestResult\baoxiaozuizhong\LoadRunner.pdf,将录制脚本上传的文件复制到报错所指的目录,重新回放时脚本就不报错了。
Web端并发测试前脚本处理——设置关联函数
  但是又出现了新的方法报错,如下图,save方法报错
Web端并发测试前脚本处理——设置关联函数
三、添加Charles反向代理,运行LR时即时抓取服务器对应端口请求,查看报错原因
  (1)进入Charles,点击Proxy-Reverse Proxies Settings弹框,点击Add,添加本地端口,也可以不改默认值,这里使用8686;然后添加服务器ip和端口,点击【ok】反向代理添加完成Web端并发测试前脚本处理——设置关联函数
  (2)点击【搜索】——【快速替换】,将脚本中的服务端ip全部替换成Charles中设置的本地ip——loalhost:8686,我们使用loalhost:8686将请求到刚设置的远程服务器
Web端并发测试前脚本处理——设置关联函数
  替换成功之后重新跑一下LR,回放成功之后查看Charles已成功抓取到LR运行的数据
Web端并发测试前脚本处理——设置关联函数
  在Charles中展开查看Save请求,save请求失败,http状态码500.
Web端并发测试前脚本处理——设置关联函数
验证是不是Hidden Token动态值导致请求失败有2种办法:
方法一:重新跑一次LR比较2次save请求服务端的Hidden Token值是否一样,发现LR一直以相同的token值——”10035089-9dd7-41da-8048-a7906d3bdcc2”请求服务器,请求失败时提示生成了NewToken值。
Web端并发测试前脚本处理——设置关联函数
如下图,录制的脚本中的Hidden token值与抓包请求的值一样,确定Hidden token是动态值。
Web端并发测试前脚本处理——设置关联函数
方法二、录制二个一模一样的脚本,用LR自带的比较工具,点击【工具】-【比较】-【与外部文件比较】,比较2次录制的Hidden token值不一样,如下图,也可以判断出Hidden token是动态值
Web端并发测试前脚本处理——设置关联函数
四、创建关联函数,抓取动态值Hidden token
  点击【回放】-【运行时设置】开启所有扩展日志,如下图
Web端并发测试前脚本处理——设置关联函数
  开启扩展日志之后重新Run一下脚本,回放之后点击【保存】将日志导出为.txt,方便搜索查看日志,也可以直接在日志中搜索动态值所在行的关键字HIDDEN_TOKEN,找到所在行显示Action.c(164),即hidden token 动态值发送行在164行前插入关联函数,如下图所示Web端并发测试前脚本处理——设置关联函数
  在侧边栏搜索函数“web_reg_save_param_ex”,双击进入,填写左右边界值,参数名称填写token点击【确定】,关联函数创建完成
Web端并发测试前脚本处理——设置关联函数
注意:
(1)找左右边界时尽可能把边界值划大,因为左右边界值是唯一标识token值的,如果边界值划的小,有可能会因为你写的边界值与请求中其他参数重复从而提取到错误的参数,导致关联失败。
(2)边界值是区分大小写、识别空格的,这一点特别需要注意,不能省略掉空格。
  将脚本中所有使用到Hidden Token值的地方全部用参数{token}替换,token是我关联函数的参数名称
Web端并发测试前脚本处理——设置关联函数
  打印输出动态参数,使用lr_output_message函数,lr_output_message(“打印的token值是%s”,lr_eval_string("{token}"));点击【确定】添加成功
  最后重新Run一下脚本,查看打印参数与Charles抓包的HIDDEN_TOKEN值是否一样,一样则关联成功
  抓包得到的HIDDEN_TOKEN=8d3179ab-a229-4113-94bb-cc7bb53c68bb,日志中打印出的HIDDEN_TOKEN与此值相同,如下图
Web端并发测试前脚本处理——设置关联函数
Web端并发测试前脚本处理——设置关联函数
  进入系统或者数据库查看回放的脚本已经入库,则证明关联成功,脚本可以继续设置事务、集合点、进行并发测试了。