LoadRunner使用之变量参数化

LR性能测试之参数化设置

Q:何为参数化?

LR在录制程序运行的过程中,VuGen(脚本生成器) 自动生成了包含录制过程中实际用到的数值的脚本,如果你企图在录制的脚本中使用不同的数值执行脚本的活动(如查询、提交等等),那么你必须用参数值取代录制的数值,这个过程叫做参数化。通俗讲,就是把脚本中一个数值,通过读取文件或者数据库的方式进行替换。

Q:为什么要参数化?  

最直白讲就是为了模拟数据的真实性。一些提交数据我们想让它提交内容每次都有不同的变化,那么可以对提交内容进行参数化,常见到的如一些系统不允许我们使用同一用户重复登录,这时候我们就得对登录的用户名、密码进行参数化,使之在并发运行时,都是使用不同的用户名、密码进行登录的。

Q:如何参数化?

LR工具对于参数化的功能设计,是简单易用,难点可能主要在参数化适用方式和配置规则上面。

以下介绍参数化基本过程:

右键单击要参数的参数,选择参数化配置,进入到参数配置页面:

参数化过程比较简单,参数化时复杂的是对参数属性的设置。主要是以下两个属性的组合。

select  next row 中有三个选项:  Sequential(顺序读取)、Random(随机读取)、Unique (唯一)

update the value 中也有三个选项:  Each Occurrence(每次遇到 )、  Each iteration(每次迭代  )、 Once(一直 )

这两个属性可以有九种组合方式,每种方式都不一样。接下来我们就用一个小实例来验证一下每种取值方式的效果。

录制一个lr自带实例WebTours的定单脚本。脚本中将出发城市与到达城市均参数化一下。参数化后还需做个关联(这个就重点说了)保证回放脚本成功。

设置10个用户并发持续加载的场景(参数文件中有10个数据),用默认设置均可。即每15秒加载两个用户,持续时间为5分钟,每30秒停止5个用户。

然后并发跑脚本。

以下为9种组合的测试结果:

(1)sequential      
Once

十个用户 每个用户取值均一样,,每个用户的所有迭代中的取值均一样。

第一个用户执行了5次迭代,每次迭代均取得第一个参数。

第二个用户也执行了5次迭代,每次迭代均取的第一个参数。

第三个。。第四个。等等十个用户均一样。

(2)unique     
once

十个用户 每个用户取值都唯一,每个用户的所有迭代中的取值均一样。

第一个用户执行了5次迭代,每次迭代均取第一个参数;

第二个用户执行了5次迭代,每次迭代均取第二个参数;

第三个。。。第四个。。。依此类推。

第十个用户执行了5次迭代,每次迭代均取第十个参数。

(3)Random  Once

十个用户,每个用户为随机取值,每个用户的所有迭代中的取值均一样。

第一个用户执行了5次迭代,每次迭代均取第三个参数;

第二个用户执行了5次迭代,每次迭代均取第七个参数;

第三个。。。第四个。。。依此类推十个用户随机取值。

(4)Sequential     
Each iteration

十个用户,每个用户每次迭代取一个新值。

第一个用户,第一迭代,取第一个参数 ;第二次迭代,取第二个参数 。。。。第十次迭代,取第十个参数。

第二个用户,第一次迭代,取第一个参数;第二次迭代,取第二个参数 。。。。第十次迭代,取第十个参数。

第三个。。第四个。。。依此类推。

(5)Unique     Each
iteration

由于只设置了十个参数,运行过程中报参数不足的错误。

第一个用户,第一次迭代,取第一个参数;第二次迭代报错。。。第十次迭代报错。

第二个用户,第一次迭代,取第二个参数;第二次迭代报错。。。第十次迭代报错。

第三个。。第四个。。依此类推。

如果修改为100个参数则:

第一个用户,第一迭代,取第一个参数 ;第二次迭代,取第二个参数 。。。。第十次迭代,取第十个参数。

第二个用户,第一次迭代,取第十一个参数;第二次迭代,取第十二个参数 。。。。第十次迭代,取第二十个参数。

第三个。。第四个。。。依此类推。

(6)Random     Each
Iteration

十个用户,每个用户每次迭代均随机去一个值。

第一个用户,第一迭代,取第一个参数 ;第二次迭代,取第四个参数 。。。。第十次迭代,取第七个参数。

第二个用户,第一次迭代,取第三个参数;第二次迭代,取第二个参数 。。。。第十次迭代,取第一个参数。

第三个。。第四个。。。依此类推。

(7)Sequential       
Each ocurrance

十个用户,每个用户每次遇到均取一个值。

第一个用户,第一次迭代,每次遇到顺序取一个值;第二次迭代,按顺序接着取值。。。。。

第二个用户,第一次迭代,每次遇到顺序取一个值(从第一个参数开始);第二次迭代,按顺序接着取值。。。。。

依此类推。

(8)
unique          Each occurrance

十个用户,每个用户每次遇到均取一个不同的值。

参数列表中要有足够的参数。

(9)
Random       Each Occurrance

十个用户,每个用户每次遇到随机取一个值。

第一个用户,第一次迭代,每次遇到随机取一个值,第二次迭代,随机再取值。。。。。

第二个用户,第一次迭代,每次遇到随机取一个值,第二次迭代,随机再取值。。。。。

依此类推。

总之,主要区分 sequential 、Unique、Random 的区别。

sequential为顺序取,每个用户均从第一个参数开始取值。

Unique为唯一,每个用户取值均不同。

Random 为随机,每个用户均随机取值。

来自为知笔记(Wiz)

时间: 2024-10-11 18:05:46

LoadRunner使用之变量参数化的相关文章

loadrunner 日志中 输入参数化的值

1.脚本中对用户名进行参数化后:如下(我的参数化文件中有三个值) web_submit_data("authentication", "Action=http://www.moojnn.com/mojingcsp/authentication", "Method=POST", "TargetFrame=", "RecContentType=application/json", "Referer=h

LoadRunner脚本优化之—参数化迭代介

在LoadRunner的脚本优化时,有时发送给服务器的请求参数化时,服务器返回的内容也会和参数化的内容相对应,例如发送的请求带有查询key=123,则服务器也会返回含有123相关的内容.这时我们在使用检查点检查服务器参数化返回的数据正确性时,通常也会用到和服务器同样的参数. 这样在每次迭代过程中,每次都会取不同的值,完成检查过程. 但是如果基于实际场景设计的脚本是:在一个迭代周期内,此action需要循环多次,于是引入了block块.将此action加入到一个block块中,设置循环次数为2.再

LoadRunner参数和变量之间的转换

这是用LoadRunner自定义监控Tomcat的脚本为基础而写的脚本.阐述了参数相互之间以及参数与变量之间复制传递原理.下面的代码注释是按照自己的理解写的,正确性不一定保证. [cpp] view plaincopy Action() { //定义三个字符数组用于条件判断 char jFM[100]; char jTM[100]; char jMM[100]; //必须要预先声明数据转换函数,否则得到的监控结果不正确. double atof(const char *string); //以下

Jmeter变量参数化及函数应用

分类: 测试工具 2006-12-14 10:54 12041人阅读 评论(5) 收藏 举报 javascriptloadrunnerrandom脚本测试多线程 我们在使用Jmeter录制脚本后,经常会对已录制的脚本进行修改,需要把一些参数使用一些变量替代,Jmeter是支持这些功能的,不过是通过函数实现的.下面举一个简单的例子,使用随机数替代一个参数:        打开录制好的脚本,点击Jmeter的“选项”,选择“函数助手对话框”(或者使用快捷键“Ctrl+F”),在“选择一个功能”的下拉

LoadRunner使用之变量关联

性能测试LR小结之参数关联(LoadRunner11.0) 关联对于LR是经常需要用到的,本章使用简单登录来介绍关联功能. 1.       Q:何为关联? 所谓的关联就是把脚本中某些写死的代码(hard-coded)数据,转变成撷取自服务器所送的.动态的.每次都不一样的数据.通俗讲就是变量替换,把每次访问页面中的一些动态参数,使用固定的变量进行替换.如:最常见的sessionid,不同用户访问系统会产生不同的sessionid, 2.       Q:为什么要关联? 如在一个登录脚本中用户登录

Jmeter接口测试系列之测试用例变量参数化处理

在进行接口测试时,一组完整的接口测试用例,存在后一个测试用例使用前一个用例的请求结果中的数据,此时就需要参数化测试用例中值.直接使用变量调用会存在问题,此时就需要用到beanshell去改变. 举例说明: 比如接口1中的usertoken,需要在登录成功后去获取.此时就需要先测试登录接口,在登录的时候,提取出usertoken,然后再测试用例中配置调用,在请求之前,将测试用例中调用转换成并提取出变量值,供请求参数调用. 1.在登录成功的接口中,提取userToken (正则表达式提取) 2.在测

loadrunner怎么将变量保存到参数中

用这个lr_save_string 函数 char *b = "很简单";lr_save_string(b,"b"); lr_output_message("%s",lr_eval_string("{b}")); int a =100; //初始化char *b="abc"; a=123; //赋值b="xyz"; lr_save_int(a,"intA"); //将

win7下loadrunner创建mysql数据库参数化问题解决

问题现象: 安装mysql数据源驱动后,lr创建mysql驱动程序列表没有安装的驱动程序: 安装完mysql ODBC数据源后 2.在控制面板-数据源(ODBC) 3.创建mysql数据源: 4.从lr连接mysql参数化: 解决办法: 从新下载win7 64bit版本的: mysql-connector-odbc-3.51.30-winx64.msi文件即可解决:

loadrunner 添加事务 与参数化

1.事务.计算单个请求的相应时间 添加事务 (事务是可以嵌套的.但必须成对的) lr_start_transaction('openshouye') 事务开始 lr_end_transaction('openshouye') 事务结束 lr_get_transaction_duration('openshouye') 获取事务时间(包含浪费时间) 必须放置事务结束之前(Removes wasted time from all open transactions) lr_get_transacti