LoadRunner中文网站 > 新手入门 > LoadRunner关联如何提取动态参数 LoadRunner关联正则表达式设置
教程中心分类
LoadRunner关联如何提取动态参数 LoadRunner关联正则表达式设置
发布时间:2025/06/30 11:51:01

  在性能测试过程中,LoadRunner作为一款强大的自动化测试工具,能有效模拟大量虚拟用户并还原真实业务流程。然而,测试人员在编写脚本时常会遇到一个挑战:动态参数的变化。无论是SessionID、Token、验证码还是其他随时间或行为变化的字段,如果不正确处理这些动态值,脚本执行就会失败。

 

  为了应对这个问题,我们需要掌握LoadRunner关联(Correlation)技术,尤其是如何提取动态参数,以及如何通过正则表达式进行灵活匹配。本文将从实战角度出发,详细讲解“LoadRunner关联如何提取动态参数”和“LoadRunner关联正则表达式设置”,助你彻底攻克动态数据难题。

 

  一、LoadRunner关联如何提取动态参数

 

  所谓“关联”,就是将响应中动态变化的值提取出来,并在后续请求中进行替换,使脚本逻辑保持连贯、真实。

  1.为什么需要关联

 

  比如一个登录流程中,登录请求需要附带一个“Token”,而这个Token是由前一个页面动态生成的。如果你录制的脚本中Token是写死的,那重放时就会因为Token过期或不匹配而报错。

 

  这时候,你就需要将Token从上一个响应中提取出来,再关联到登录请求中。

 

  2.如何设置关联

 

  LoadRunner主要通过web_reg_save_param函数来实现参数提取:

  这个函数的意思是:在响应中查找以token="开头、以"结尾的内容,并将中间的部分保存到参数Token中。后续你可以用{Token}来引用这个值。

 

  3.操作步骤(以Web为例)

 

  Step1:找出需提取的参数

 

  在脚本中定位失败的请求,查看其前一个请求的响应,使用TreeView→Responsebody查找包含动态值的字段。

 

  Step2:设置关联函数

 

  在动态参数出现前的请求前添加web_reg_save_param代码。建议在TreeView中右键添加,也可以手动编写。

 

  Step3:替换目标值

 

  将后续请求中原来的硬编码值改为{参数名}的形式,如{Token}。

 

  Step4:验证

 

  运行脚本,开启ExtendedLog+Parametersubstitution,查看是否成功提取和替换参数。

 

  4.多值提取(数组参数)

 

  如果一个参数在响应中出现多次,可以添加如下选项:

  这样会把所有匹配结果存入一个数组中,后续可用{Param_1}、{Param_2}来引用。

 

  二、LoadRunner关联正则表达式设置

 

  除了用左右边界(LB/RB)方式提取动态值,LoadRunner也支持正则表达式方式来提取更复杂的模式数据,特别适用于HTML结构复杂或字段格式不稳定的场景。

 

  1.正则关联语法简介

 

  从LoadRunner12.50起,引入了web_reg_save_param_regexp函数,它的语法如下:

  说明:

 

  ParamName=Token:设置提取结果变量名为Token;

 

  RegExp=token":"([^"]+)":正则表达式,用小括号提取目标值;

 

  Ordinal=1:表示第一个匹配值(支持ALL提取所有);

 

  比如你要从下面这段JSON中提取token:

  使用正则提取的语句将如下所示:

  运行后即可用{Token}来引用这个值。

 

  2.多组提取

 

  支持一次提取多个字段。例如提取多个JSON字段,可以写多个web_reg_save_param_regexp:

  或者利用正则中的多分组匹配:

  不过这种方式提取的参数会自动命名为ParamName_1、ParamName_2。

 

  3.正则调试技巧

 

  建议使用在线调试器如regex101、RegExr来预览你的正则匹配效果;

 

  用"SaveOffset=xxx"可以提取偏移后的字段;

 

  配合日志设置"Extendedlog+Datareturnedbyserver"检查响应体格式。

 

  4.实用案例(复杂HTML结构)

 

  比如以下HTML内容:

  使用正则表达式提取csrf_token:

  三、关联提取失败的常见问题及对策

 

  问题一:未匹配到值

 

  检查提取函数是否放在正确位置(必须放在目标请求前);

 

  检查响应是否真的包含目标数据;

 

  检查正则或LB/RB是否写错或存在空格等字符未处理。

 

  问题二:值为空或为null

 

  多个字段重复,默认提取第一个可能为空,尝试设置"Ordinal=ALL";

 

  HTML被压缩或混淆,勾选“Enableweb_decompression”。

 

  问题三:正则匹配不到数据

 

  有可能是响应返回为压缩格式,可开启"SetHeadersAccept-Encoding=gzip",或者设置:

  或者启用"Convertresponsetotext"处理二进制响应内容。

  总结

 

  通过上述详尽的讲解,相信你对“LoadRunner关联如何提取动态参数”与“LoadRunner关联正则表达式设置”已经有了清晰的认识。从基本的左右边界提取,到高级的正则表达式使用,再到各种调试技巧与问题排查,LoadRunner的关联功能不但强大,而且灵活。

 

  一个好的性能测试脚本,关键在于参数的提取是否稳定、准确。只有实现高质量的关联,才能确保脚本在各种动态业务场景中稳定运行,也为后续的大规模性能测试奠定基础。

 

  

135 2431 0251