LoadRunner参数化怎样处理动态数据,LoadRunner参数化数据关联方法是性能测试中非常重要的两个操作。如果你的测试脚本只用静态数据,不处理服务端返回的动态内容,那么在实际回放过程中很容易出现失败,比如登录后Token不更新、订单号重复、Session失效等问题。为了让脚本更稳定,模拟更多真实用户行为,就必须对数据做参数化和关联处理。下面我们就一步一步说明怎么用LoadRunner做好这两件事。
一、LoadRunner参数化怎样处理动态数据
参数化,说白了就是让脚本里那些“写死”的数据变得可变。比如用户名、密码、产品ID、地址、手机号码等,在真实使用场景中,肯定每个用户不一样,如果测试时都用同一个值,系统压力是不准确的。所以我们需要引入参数。
1.替换静态值为参数
在VuGen里打开脚本,找到像“user1”这样的写死数据,右键点击,选择“Replace with a Parameter”。输入参数名,比如“UserName”。LoadRunner会自动生成变量形式,比如`{UserName}`。
接着你需要:
打开“Parameter List”,点击“Edit with Notepad”或者直接导入CSV文件
每一行填一组测试数据,例如:

设置读取方式,可以是顺序读取、随机抽取或唯一值
2.参数的使用范围要控制好
你可以设置参数在不同层级上变化:
每个虚拟用户使用一条数据
每次迭代都用一条新的数据
每个操作动作都更换参数值
这些可以在Parameter的属性设置里进行配置。设置得当可以避免数据冲突,也能让测试更真实。
3.动态数据无法提前准备怎么办?
很多时候,数据并不是你提前知道的,比如登录后服务端返回的SessionID、用户ID、Token等,这类数据无法提前写进CSV文件,只能在测试过程中“当场提取”,这种情况,就需要用到关联了。

二、LoadRunner参数化数据关联方法
关联,就是告诉LoadRunner:“你去观察某个接口的响应,把里面我需要的某段数据提取出来存成变量,然后我在下一步用它。”这个过程比静态参数化复杂一点,但也是脚本稳定运行的关键。
1.基本用法:提取文本值
最传统的方法是使用`web_reg_save_param`,格式如下:

这句话的意思是:在执行当前请求前,我告诉脚本,“等服务器返回内容中,看到`Set-Cookie:session=xxx;`这样的内容时,把xxx这一段提取出来,存到变量`{session_id}`里。”
提取出来之后,就可以在接下来的请求里用`{session_id}`来代替原来的静态值。
2.JSON格式的提取更简单
现在很多接口响应都是JSON格式,比如登录接口返回:

你可以用`web_reg_save_param_json`来提取:

这样`token`字段就直接提出来了,不需要设置什么左右边界,更简洁,也更直观。
3.一次提多个值怎么处理?
比如接口返回一个商品列表,有多个ID,你想都提出来。可以在`web_reg_save_param`里加上`ORD=ALL`参数,LoadRunner就会生成多个变量,比如:
`{product_id_1}`
`{product_id_2}`
…
`{product_id_count}`表示总数量
你可以在脚本里随机挑一个:

4.自动化辅助工具可以使用
如果你对提取的左右边界不确定,VuGen提供“自动关联助手”,在脚本调试失败时打开“Design Studio”,系统会自动分析响应内容,帮你推荐哪些内容是可以被提取的。你可以一键添加对应的代码,不过这类工具提取结果要人工检查,不能全依赖。

三、参数化与关联实战技巧
实际项目里,很多脚本都不是一次性完成的,而是需要边跑边调,下面是几个很常见的处理技巧:
1.登录+操作=靠参数化+关联联动
比如你用参数化传入用户名和密码,登录接口成功后会返回token,你再用关联把token提取出来,然后下单、支付这些接口都要用到这个token。如果这一步没做好,脚本虽然表面能跑,实际全是无效请求。
2.参数提取失败时,脚本要能自动报错
你可以加判断代码,比如:

这样就不会出现“测试完成了但全是错”的情况。
3.参数更新频率不能太高或太低
有些人喜欢每一行都换数据,其实没必要。如果你模拟的是“每个用户一个账号”,那就一人一条。如果你模拟的是“每次操作都不同”,那就每次都换一条。不能随便设,不然结果失真。
4.多接口间的数据要保持连贯
比如登录获取了用户ID,下单用用户ID建单,支付时再用订单ID。这些值都不能断,不能混。如果你发现有个接口返回了“ID无效”“未登录”等错误,很可能就是你参数没传好,变量名拼错或者值没提对。

总结
LoadRunner参数化怎样处理动态数据,LoadRunner参数化数据关联方法这两个操作,在脚本开发中就像“搭架子”和“拉电线”,一个是结构,一个是数据通路。没有参数化,脚本只能跑一个用户;没有关联,流程就断掉了。测试工作如果要做得扎实、可靠,这两个功能必须用熟,不能只靠自动化工具,手动调试、理解返回结构、判断变量提取是否正确,都是性能测试工程师的基本功。