一、参数化概述
1、什么是参数:
对于一个URL来说由域名+端口号+路径+参数 组成,网址中”?”后边的都是参数,参数由key和value组成,多个参数通过””来连接。
2、参数化的概念:将脚本中某个写死的参数,把它转化为一个数组列表,我们可以从数组里边取到值,来进行值的传递。
拓展:如何查询一个域名对应的IP及域名的解析
查询域名对应的IP:
在浏览器地址栏中输入” 183.232.231.172”就可以访问百度的页面
→ 端口8080是默认的,可忽略,最后边的”/”默认为一个页面,如” /index.php”
域名的解析:
→
→
index.php
3、需要进行参数化的情况:
①数据库校验字段的唯一性
②应用程序不允许用一个值进行反复操作(游戏的登录)
③避免数据库的查询缓存,而导致性能测试结果失真
(数据库在执行一条sql操作时,会进行语法检查、语意分析、检查表是否存在、是否有权限进行操作,然后生成执行计划,open表进行查询操作、若数据在内存中,在内存中取数返回,如果内存中没值,在硬盘中取数返回,若数据库缓存开启会将结果放入查询缓存)
页面输入的东西,最多需要进行参数化。服务器返回的非输入之外的值,有可能需要进行关联。
4、如何避免使用参数化:
①去掉数据库唯一字段限制(数据量太大的情况)
②改应用程序
③关掉数据库的查询缓存
二、脚本的参数化操作基本界面说明
注意:如上图在userNo.dat中对参数进行编辑操作完成后,光标的位置应该在”006”的回车一行,多一行或者少一行都不行,如果保存的时候,光标在” 006”的后边,而不是回车的下一行,那么脚本在进行参数化取值的时候,不会取到值”006”。
三、取值策略及值更新策略详细说明
1、取值策略选择"same line as xxx"
当userNo.dat文件中,有两列时,取值策略会多一个选项"same line as xxx",如下图配置:
根据如上两图,username的参数userNo取的是userNo.dat文件的第一列的值,password的参数passwd取的是userNo.dat文件的第二列的值,在参数取值策略中password选择"same line as userNo"意思是说,无论username选择文件中第一列哪个值,password的取值就是该username取值所在行的第二列的值,回放脚本,检查结果:
对比userNo.dat中的参数列表,发现userNo=0003和pwd=888是在同一行中且对应的,回放结果正确。
2、参数化测试代码段
1 Action()
2 {
3 int i; //声明一个变量
4 for (i=0;i[span style="color: rgba(128, 0, 128, 1)">2;i++) //循环
5 {
6 char a = "{p1}"; //获得参数赋值给a
7 char b = "{p2}//代码效果参考:http://www.ezhiqi.com/bx/art_6305.html";//获得参数赋值给b
8 char *c = "{p1}"; //获得参数赋值给c
9
10
11 lr_output_message("%s,%s\n,%s\n",lr_eval_string (a),lr_eval_string (b),lr_eval_string (c)); //打印
12
13 return 0;
14 }
3、取值策略:顺序 + 值变更策略:每次迭代
4、取值策略:顺序 + 值变更策略:每次遇到
5、取值策略:顺序 + 值变更策略:ONCE
6、取值策略:随机 + 值更新策略:迭代
7、取值策略:随机 + 值更新策略:每次遇到
8、取值策略:随机 + 值更新策略:ONCE
9、取值策略:唯一 + 值更新策略:迭代
用户1:a1--a5,b1--b5 用户2:a6--a10,b6--b10
唯一是对多用户而言,在并发的时候,会出现唯一,将总的参数化池划分子集,各子集间没有交集
值的分配策略
在跑并发时需要遵循的原则:
①数据库表中的值是否足够,
②要算出给每个用户分配多少个值,才够用
在唯一的时候,用户和用户之间,他们的值会单独区分开来
参数模拟(不适用于值的更新策略为每次出现的情况),如下图:
可以模拟多用户参数的取值情况(用该模拟器模拟的时候,着重自己分析,该模拟器存在bug)
10、取值策略:唯一 + 值更新策略:每次遇到
值不够时候处理,注意这里选择取值策略为唯一才会出现,如下图:
对于Abort Vuser处理方式,会报如下错误:
Error: Parameter 'p1': No more unique values for this parameter in table 'p1.dat' 【unique range is 1-10】. The Vuser is aborted according to "When Out Of Values" policy.
对于continue with last value处理方式,会报如下错误:
Error: Parameter 'p1': No more unique values for this parameter in table 'p1.dat' 【unique range is 1-10】.The parameter continues with last value of the range according to "When Out Of Values" policy.
但是依然用最后一个值替换
对于continue in a cyclic manner处理方式不会报错,从头开始取值
11、取值策略:唯一 + 值更新策略:ONCE
四、其他一些内容
1、通过数据库大批量赋给参数值
需要在负载端安装数据库驱动
2、参数化类型
①Unique Number(唯一的数字)
②Random number
③Date/Time
五、总结
1、对银行流水号进行参数化