避免缓存造成的性能测试结果失真
1 为什么要进行参数化
- 数据库或应用程序需对值进行了唯一性校验;
避免缓存造成的性能测试结果失真;
举例说明:如查询张三的信息,第一次会很慢,第二次再查询时明显速度快很多。
原因分析:查询用户信息时打开表后,会先检查内存(执行计划)里是否有该 SQL 语句的执行结果,有直接拿结果,没有则会去磁盘查,在磁盘找到数据后,再将数据同步到内存。
2 怎样进行参数化
2.1 选择要参数化的值
如图,选择要参数化的值,右键选择[Replace with a parameter]
2.2 填写参数名称
填写参数名称,点击[ok]即可
2.3 打开变量列表,填写变量值
3 参数化变量和值是怎样对应的
根据脚本中的参数名({username})去找参数列表中的的参数 username,再去找参数列表中的 username 对应的 bat 文件
4 参数化取值策略详解
如下 Loadrunner 参数化取值策略由[select next row]、[update value on]两部分组成。各取值情况如下:
● Select next row(除去 same as):顺序、随机、唯一
● Update value on:每次迭代、每次出现、唯一
取值策略简单理解就是:当触发值的变更值条件时,下一个取值怎么取,除去 same as 这种取值,根据排列组合共有 9 种取值情况。
用如下脚本,迭代 2 次来说明这 9 种取值组合,其中 p1 参数值为 a1-a10,p2 参数值为 b1-b10。
取值结果详见下图:
5 特别说明
当 update value on 值为[unique]时,可设置[when out of values]、[Allocate Vuser values in Cotroller]值
注意
:
- 唯一+每次出现:不能自动分配(loadrunner 不会读脚本,不知道脚本中的循环),只能手动分配
手动分配时要注意:计算每个用户分配多少个值、参数化文件中要录足够的值
计算手动分配时,为每个用户分配多少个值:
1 | 例 1:银行流水号参数化,10 个并发,跑 10 分钟,1 个用户跑 TPS=10,假如服务器的 tps 无限大 |