欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LoadRunner之VuGen参数化

程序员文章站 2022-05-27 09:09:55
...

一、什么是参数化

概念:根据需求动态的获取数据的过程

二、为什么要参数化?

1. 减少重复代码
2. 数据代码进行分离,方便维护

需求1

说明:由于虚拟机运行速度原因,我们使用lr_output_message()函数练习学习使用参数化
要求:
    1. 输出 我要去北京;我要去上海;我要去广州;我要去深圳;

三、参数化操作

3.1 打开参数化菜单

 

LoadRunner之VuGen参数化

选中要参数化的文本->鼠标右键->Replace with a Parameter
或者
菜单【Insert】>【New Parameter...】

3.2 Replace with a Parameter 打开的窗口

 

LoadRunner之VuGen参数化

1. Parameter name:参数化引用名称(参数化时使用)
2. Parameter type:File 【推荐-File】
3. Properties:属性-点击此按钮,可直接设置参数化引用名称对应的值;【点击】

提示:
    1). 点击OK;参数化引用名称具体的值,需要再次设置;

3.3 Properties 设置面板

 

LoadRunner之VuGen参数化

1. Parameter type: 参数类型 File 【重点】
2. File:参数保存的文件类型及位置,一般为txt;【推荐】
3. Add Row:添加行,在当前表格编辑数据;【可选】
4. Edit with Notepad:在记事本内编辑数据;【推荐】
5. Select next row:运行或迭代时对行的选择方式 
    1). 
6. Update value on:运行或迭代时对值的选取方式

提示:
    1). Select next row与Update value on为组合关系,不同组合效果不同,我们单独来学习

需求1 解决方案

1. 创建指定路径及txt文本格式 如:C:\lr11\scripts\city.txt
2. 使用Edit with Notepad 编辑数据:北京、上海、广州、深圳
3. 编写脚本 
4. 迭代次数 4

问题:如何把设置好的参数读取打印出来?

为了更好学习使用参数化,我们必须先了解个函数

函数:lr_eval_string() 

为什么要了解lr_eval_string()函数?

1. lr_output_message(“str”):函数为把str字符串输出到日志,它自身并不能解析读取参数。
2. 为了日志记录详细我们必须学习个能读取参数,在通过lr_output_message()函数来输出到日志

函数 lr_eval_string()

功能:读取变量的值,并以Char类型返回
示例:
    lr_eval_string("{parameter}")
提示:
    1). 参数名称使用花括号{}包括
    2). 参数使用双引号包括

需求1 代码示例

1. 代码:
    Action()
    {
        lr_output_message("我要去%s",lr_eval_string("{NewParam}"));
        return 0;
    }

 

3.4 Select next row与Update value on

LoadRunner之VuGen参数化

Select next row(选择下一行)

说明:读取参数文件行的方式
方式:
    1. Sequential:顺序,按照行的顺序读取数据,如果迭代次数大于行数,再次从第一行开始读取
    2. Random:随机,随机读取行
    3. Unique:唯一,每次读取唯一行,不重复;如果行数读完,立即停止迭代;

Update value on(更新值的时间)

说明:参数值更新的方式
方式:
    1. Each iteration:每次迭代以后更新
    2. Each occurrence:每次出现参数时更新
    3. Once:每出现一个虚拟用户(线程)更新一次

组合

1. 行顺序+每次迭代更新值     Sequential + Each iteration
2. 行顺序+每次参数出现更新值     Sequential + Each occurrence
3. 行顺序+更新一次(单用户)    Sequential + Once

说明:
    1. 组合我们在这里就不穷举了,以行的顺序配合值的3中更新方式做演示
    2. 因为组合内含occurrence,所以必须要两个Action,我们新增两个(Action、Action2)两个代码相同

代码

Action()
{
    lr_output_message("我要去%s",lr_eval_string("{NewParam}"));
    return 0;
}
Action2()
{
    lr_output_message("我要去%s",lr_eval_string("{NewParam}"));
    return 0;
}

Sequential + Each iteration

说明:行为顺序,值为迭代更新一次;
预期:
    1. 第一次迭代:Action:北京;Action2:北京
    2. 第二次迭代:Action:上海;Action2:上海
    3. 第三次迭代:Action:广州;Action2:广州
    4. 第四次迭代:Action:深圳;Action2:深圳

Sequential + Each occurrence

说明:行为顺序,值为出现一次更新一次
预期:
    1. 第一次迭代:Action:北京;Action2:上海
    2. 第二次迭代:Action:广州;Action2:深圳
    3. 第三次迭代:Action:北京;Action2:上海
    4. 第四次迭代:Action:广州;Action2:深圳

Sequential + Once

说明:行为顺序,值为单用户只更新一次
预期:
    1. 第一次迭代:Action:北京;Action2:北京
    2. 第二次迭代:Action:北京;Action2:北京
    3. 第三次迭代:Action:北京;Action2:北京
    4. 第四次迭代:Action:北京;Action2:北京

选择下一行中的Same line as xxx的使用方式:

(1)创建username1,添加数据

LoadRunner之VuGen参数化

 (2)创建password1,文件路径为username1的路径,添加密码数据,关联username1列

LoadRunner之VuGen参数化

username1中的数据得到更新

LoadRunner之VuGen参数化

 代码:

Action()
{
	//参数化
	//lr_output_message("%s",lr_eval_string("{city}加油"));
	
	// 两列关联使用
	lr_output_message("用户名为:%s",lr_eval_string("{username1}"));
    lr_output_message("密码为:%s",lr_eval_string("{password1}"));
	return 0;
}

运行为:

Action.c(7): 用户名为:dpl
Action.c(8): 密码为:12132
Action.c(7): 用户名为:ddd
Action.c(8): 密码为:12313
Action.c(7): 用户名为:jojo
Action.c(8): 密码为:41244
Vuser Terminated.

扩展 批量获取参数时,如果保证参数不重复?

思路:添加时间戳
说明:web_save_timestamp_param("time_stamp",LAST) 为时间戳函数,返回:1970到现在的毫秒数;
      (time_stamp:参数为获取值后保存的参数名称,被引用时使用)

代码

Action()
{
	//参数化
	//lr_output_message("%s",lr_eval_string("{city}加油"));
	
	// 两列关联使用
	lr_output_message("用户名为:%s",lr_eval_string("{username1}"));
    lr_output_message("密码为:%s",lr_eval_string("{password1}"));
    //添加时间戳
	web_save_timestamp_param("time_stamp",LAST);
	lr_output_message("时间为:%s",lr_eval_string("{time_stamp}"));
	return 0;
}

 运行结果为:

Action.c(7): 用户名为:dpl
Action.c(8): 密码为:12132
Action.c(11): 时间为:1580013750556
Action.c(7): 用户名为:ddd
Action.c(8): 密码为:12313
Action.c(11): 时间为:1580013750651
Action.c(7): 用户名为:jojo
Action.c(8): 密码为:41244
Action.c(11): 时间为:1580013750702
Vuser Terminated.

 

相关标签: 性能测试