在LoadRunner的脚本优化时,有时发送给服务器的请求参数化时,服务器返回的内容也会和参数化的内容相对应,例如发送的请求带有查询key=123,则服务器也会返回含有123相关的内容。这时我们在使用检查点检查服务器参数化返回的数据正确性时,通常也会用到和服务器同样的参数。
这样在每次迭代过程中,每次都会取不同的值,完成检查过程。
但是如果基于实际场景设计的脚本是:在一个迭代周期内,此action需要循环多次,于是引入了block块。将此action加入到一个block块中,设置循环次数为2。再次运行一下,得到这样的结果:
可以发现:在每个ITerations时,参数化的值都会更新,但是在单个ITerations的多次block循环时,每次取得的参数化的值是一样的,问题来了:如果让每次block块的循环也取得不一样的值呢?
查了下资料,发现通过参数化的设置可以做到。
打开参数化设置框
其中 Update value 提供了三个可选择方式:
Each ITeration:每次迭代更新参数值。
Each occurrence:每次出现此参数时,更新此参数值。
Once:只取一次,一直这样用下去。
看到这里后,果断使用 Each occurrence 方式,坐等运行大吉啦~
红红的提示告诉我,脚本没有跑过,仔细看了下,发现了问题原因:
由于参数化的策略是每次出现都会重新取值,这样在 find 函数和真正调用的函数中,都会调用不同的值,于是就会出现检查的值和实际运行的值总是取的不同的情况。
那这种情况应该怎么破呢?
又要用参数化,但检查的函数和运行的函数要用同一参数,但是不能用同一参数配置。可以用以下方法解决:
对检查函数重新定义一个参数化变量“check”,在其参数配置中如下设置:
选择需要运行的参数化数据表
Select next row 策略使用“Same line as NewParam”
重新运行了一下,发现还是会报错:
分析了下,由于 check 是 same line wITh “NewParam”,而 NewParam 是后运行的,这样就会导致了 check 总是会慢半拍。于是将这两个变量对调了一下:check 变量使用参数化并 Update value=Each occurrence,NewParam 变量 same line wITh “check”,重新运行了下,发现没有错误了。
附:参数化不同方式详解:
http://blog.chinaunix.net/uid-9236609-id-2005877.html
最后:
1)关注+私信回复:“测试”,可以免费领取一份10G软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Mysql数据库、抓包工具、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试等。