LoadRunner VuGen脚本增强之参数化
来源:互联网 发布:php b2c商城系统 编辑:程序博客网 时间:2024/05/16 12:15
LoadRunner学习笔记4-LoadRunner VuGen脚本增强之参数化
使用LoadRunner做测试,如果我们需要模拟不同用户登录系统,通过参数化,我们可以实现。LoadRunner中的参数化有两种,一种是俗称文件形式的参数化,一种是数据库形式的参数化。
一般参数化的应用场景有如下几种:1)真实的模拟用户操作。2)系统不允许同一个用户频繁地进行相同操作。3)系统对数据的唯一性有要求。设置参数化的一般步骤为:分析需要参数化的数据->设计数据分配方式->查找替换对象。
一、文件参数化
假设用户登录需要用户名、密码两个参数。我们先把用户名进行参数化,参数化的值分别为canshu1,canshu2,canshu3,它们的密码都是123456。操作步骤如下:
1.点击工具栏中的参数按钮,弹出下图的参数化对话框,单击new按钮,并重命名为username。
2.单击菜单中的Edit with Notepad,在弹出的文本中输入参数化的值,每个值占据一行,最后保留一个空行,然后保存关闭即可。如下图所示:
3.回到脚本中,找到要参数化的用户名,双击选中,单击鼠标右键,选择Use Existing Parameter->username。
4.完成参数化后,参数username被{}包围,这是在LoadRunner中的规则。
"Name=username", "Value={username}", ENDITEM,
5.单击菜单Vuser->Run-Time Setting->RunLogic,设置迭代次数为3,这样才能验证参数化是否正确。
6.运行并验证,经过三次迭代后,脚本没有问题,都可以正常登录。
如果用户名和密码想要一一对应,参数化方法如下:
1.重复上述步骤,参数化用户名。新建参数pwd,并选择File为username.dat.
2.单击Add Column按钮,弹出对话框后,单击OK按钮。
3.单击Edit with Notepad按钮,输入与用户名对应的密码。
4.回到脚本中替换掉密码即可,方法与用户名的替换相同,替换完成后的代码如下:
"Name=username", "Value={username}", ENDITEM, "Name=password", "Value={pwd}", ENDITEM,
二、数据库参数化
文件参数化的方法可以完成大部分的测试需求,但是可能在遇到超大数据量时并不适用。这时,我们就需要使用数据库参数化。
要想使用数据库参数化首先就需要安装ODBC,我选择的是MySQL数据库。MySQL数据库安装教程在我的博客里有:MySQL数据库安装。下载一个MySQL ODBC 并安装到本地,之后配置即可。注意:LoadRunner只能识别32位的ODBC驱动。如果在安装ODBC过程中出现找不到模块的错误,在安装VC 2010后,还是不行的话,那就更换低版本的驱动试试。
1.在脚本里新建一个参数,名为usernamedb。
2.单击Data Wizard按钮,在弹出的对话框中选择Specify SQL statement manu并单击“下一步”按钮。
3.单击Create按钮,在弹出的对话框中选择机器数据源后单击新建按钮。
4.选择系统数据源并单击下一步按钮,选择MySQL ODBC 驱动,并单击下一步按钮,出现如下界面:
5.完成上述填写并确定后,在列表看到新建的数据源。双击数据源后,可以把此数据员配置到Data Wizard中。
6.在上图中的SQL处输入想要查找的SQL语句,如select * from test,这样就可以查询出想要的数据,之后单击Finish按钮,完成所有设置。最后结果如下图所示:
在实际工作中,只需要变换MySQL信息以及对应的SQL语句即可。
三、“五彩斑斓”的数据化
LoadRunner的参数化功能十分强大,可以在参数化对话框的Parameter type下拉列表中选择参数化类型。
参数化的类型非常多,但一般最常用的是File和Table类型,其他参数的类型用法总结如下:
Date/Time:可以需要参数化日期的地方使用此类型。
Group Name:使用该虚拟用户所在的Vuser Group名称来代替参数化。
Iteation Number:使用脚本执行的当次迭代次数来代替参数化。
Load Generation Name:使用产生Vusers负载的名称来代替参数化。
Random Number:使用一个随机数来代替参数化。
Unique number:使用一个唯一的整数来代替参数化。
User Defined Functions:扩展接口,可从用户开发的DLL文件中提取数据。
Vuser ID:使用虚拟用户的ID来代替参数化。
XML:提供对XML格式数据的支持。可以从XML中读取数据进行参数化。
四、参数化数据分配方式
参数化设置完成后,更新分配值的方法设置更重要。理解如下两个概念:
1.Select Next Row:选择下一行的策略
sequential:顺序执行
Random:随机取行
Unique:使用唯一行
2.Update Value on:
Each iteration:每次迭代都要取新值。
Each Occurrence:只要发现该参数就去取新值。
Once:在所有的反复中都是用同一个值。
这两个组合起来有9种可能,详细描述见下表:
实例数据:A、B、C
虚拟用户:Vuser1、Vuser2、Vuser3
脚本中参数出现三次,脚本迭代三次。
注意:使用Unique类型必须注意数据表有足够多的数。
比如Controller 中设定20 个虚拟用户进行5 次循环,那么编号为1 的虚拟用户取前5个数,编号为2 的虚拟用户取6-10 的数,依次类推,这样数据表中至少要有100个数据,否则Controller 运行过程中会返回一个错误。
因此Unique类型例子在数据表中加入数据D、E、F、G、H、I。
第二次迭代,无论参数任何时候出现,Vuser1、Vuser2、Vuser3,取B
第三次迭代,无论参数任何时候出现,Vuser1、Vuser2、Vuser3,取C sequential each occurrence 在某次循环中或者脚本中使用参数的地方,所有用户取值相同。脚本中出现要使用参数的话,参数值就更新一次,循环一次值再更新一次 第N次迭代,参数第一次出现,Vuser1、Vuser2、Vuser3,取A
第N次迭代,参数第二次出现,Vuser1、Vuser2、Vuser3,取B
第N次迭代,参数第三次出现,Vuser1、Vuser2、Vuser3,取C sequential once 在所有的循环中所有用户取值相同。所有的用户所有的循环中,只用一个值(即参数中的第一行值) 无论如何所有用户都取A random each iteration 不同的用户,在不同的循环次数中,随机取值 第N次迭代,无论遇到该参数多少次,Vuser1都只取A,或者B,又或者C,本次迭代不再更新
第N次迭代,无论遇到该参数多少次,Vuser2都只取A,或者B,又或者C,本次迭代不再更新
第N次迭代,无论遇到该参数多少次,Vuser3都只取A,或者B,又或者C,本次迭代不再更新
在N+1次迭代,每个Vuser重新随机抽取数据 random each occurrence 不同的用户,脚本中出现要使用参数的话,随机取值一次,循环一次再随机取值一次 第N次迭代 第一次遇到该参数,Vuser1、Vuser2、Vuser3在A、B、C中随机抽取一个
第N次迭代,第二次遇到该参数,Vuser1、Vuser2、Vuser3重新在A、B、C中随机抽取一个
第N次迭代,第三次遇到该参数,Vuser1、Vuser2、Vuser3重新在A、B、C中随机抽取一个
在N+1次迭代,每个Vuser继续保持每遇到一次参数就重新抽取一次数据 random once 不同的用户,不管循环多少次,只随机取值一次 第N次迭代,无论遇到该参数多少次,Vuser1都只取A,或者B,又或者C
第N次迭代,无论遇到该参数多少次,Vuser2都只取A,或者B,又或者C
第N次迭代,无论遇到该参数多少次,Vuser3都只取A,或者B,又或者C
在N+1次迭代,每个Vuser不会重新抽取数据 unique each iteration 若选择手工自配参数,那LR按照每用户几个参数先分配参数,然后进行循环。
若选择自动分配参数:Controller中edit schedule中run until comletion:按照循环次数先分配第一个VU(例如设置的循环次数为3,那分配给第一个VU 3个参数值),然后接下来的3个参数值分配给第二个VU,依次类推….
Controller中edit schedule中run for:若选择自动分配,LR将按照用户数均分参数,剩余的参数不使用。 第一次迭代,无论参数出现多少次,Vuser1取A,Vuser2取D。Vuser3取G
第二次迭代,无论参数出现多少次,Vuser1取B,Vuser2取E,Vuser3取H
第三次迭代,无论参数出现多少次,Vuser1取C Vuser2取F,Vuser3取I unique each occurrence 只能手工分配用户,给每个用户分配好X个参数后,在脚本中有参数的地方,就使用已经分配好的X个参数 第一次迭代,第一次出现该参数Vuser1取A,Vuser2取D Vuser3取G
第一次迭代,第二次出现该参数Vuser1取B,Vuser2取E,Vuser3取H
第一次迭代,第三次出现该参数Vuser1取C Vuser2取F,Vuser3取I unique once 按照用户数分配给每个用户分配一个参数而已。以后的循环这个用户就使用这一个参数 无论进行多少次迭代,无论参数任何时候出现,Vuser1取A Vuser2取B,Vuser3取C
参考文章:LR中select next row和update value on的设置
- LoadRunner VuGen脚本增强之参数化
- LoadRunner VuGen 脚本增强之检查点
- LoadRunner VuGen脚本增强之逻辑判断增强与事务
- LoadRunner之VuGen录制脚本
- LoadRunner之VuGen录制脚本
- LoadRunner VuGen脚本调试
- [LoadRunner]初识LoadRunner12之VuGen
- LoadRunner VuGen不能正常录制脚本解决方法
- 使用Loadrunner VuGen编辑器手动编写脚本
- LoadRunner脚本参数化
- loadrunner脚本参数化
- Loadrunner之VuGen录制选项Recording Options
- LoadRunner快速使用入门之Vugen
- LoadRunner脚本之EXTRARES参数
- loadrunner--脚本的参数化
- LoadRunner脚本技巧总结之参数化部分
- LoadRunner脚本优化之—参数化迭代介
- LoadRunner脚本优化之—参数化迭代介
- OJ_1168.喝可乐
- Html Css 基础小结
- Codeforces Round #378 (Div. 2) D. Kostya the Sculptor __ data structures、map<ii, priority_queue<ii>>
- Android 设计模式之MVC模式
- 运算符
- LoadRunner VuGen脚本增强之参数化
- codeforce 570D Tree Requests(dfs+位运算,好题)
- 11.6培训
- java学习笔记(二)流
- swift 地图定位(四)
- EasyUI插件使用(一)
- ollvm
- leetcode_60. Permutation Sequence 找n的全排列中的第k个序列
- Eclipse编码设置(解决中文字符乱码)