一. 参数化:Design > Parameters > Parameters lists

1. Parameter Properties

  Parameter type

2. create table > edit with notepad

  Add Columns

  Add Rows

3. select 

LoadRunner脚本开发:参数列表和常用函数(三)_html

第一种方式参数化:

LoadRunner脚本开发:参数列表和常用函数(三)_mvc_02

 LoadRunner脚本开发:参数列表和常用函数(三)_mvc_03

 第二种方式参数化

LoadRunner脚本开发:参数列表和常用函数(三)_字符串_04

 

 

 LoadRunner脚本开发:参数列表和常用函数(三)_html_05

 要替换某个值,需要将这个Original value变为该值

Parameter type

 

Parameter type

描述

Custom

普通常规参数替换

Date/Time

日期/时间型参数,可以指定不同格式时间

File

文本型,读取.bat文件中的内容,内容可以在下面表格中编辑,可以多列,用逗号分隔

GroupName

用户所属于组(跑脚本时)

Iteration Number

迭代编号参数替换vuser的迭代编号

Load Generator Name

控制器名称

Random Number

随机数字,需要设置最大最小值,常用于一定范围内取值,或vuser执行任务的百分比分布

Table

与file文本相同

Unique Number

唯一值

User Defined Function

用户自定义函数

VuserID

用户id

xml

用于xml结构中包含的多值数据,在这个结构中,一个数组可以成为另一个数组的一部分。常用在xml服务或soap服务

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

参数化取值

Select next row

Sequential

顺序

按照参数化顺序,从上往下

Random

随机

从参数化数据中,随机取值

Unique

唯一

为每个虚拟用户分配一个唯一数据

Update value on

Each iteration

每次迭代

每次迭代取新的值

Each occurrence

每次出现

每次参数取值都取新的值

once

一次

一条数据只被取一次

 

 

 

 

 

 

 

 

 

其他

LoadRunner脚本开发:参数列表和常用函数(三)_mvc_06

 

二. custom type

LoadRunner脚本开发:参数列表和常用函数(三)_mvc_07

 

 

 LoadRunner脚本开发:参数列表和常用函数(三)_mvc_08

 

 

三. File:sequential_eachiteration

LoadRunner脚本开发:参数列表和常用函数(三)_html_09

 

 

 LoadRunner脚本开发:参数列表和常用函数(三)_mvc_10

 

 

四. File:sequential_echooccurrence

LoadRunner脚本开发:参数列表和常用函数(三)_字符串_11

 

 

LoadRunner脚本开发:参数列表和常用函数(三)_字符串_12

 

 

LoadRunner脚本开发:参数列表和常用函数(三)_html_13

LoadRunner脚本开发:参数列表和常用函数(三)_html_14

 

五. File:unique_eachoccurrence

情况一:Abort Vuser:停止测试

LoadRunner脚本开发:参数列表和常用函数(三)_字符串_15

 

 

LoadRunner脚本开发:参数列表和常用函数(三)_mvc_16

 

 

 

情况二:Continue in a cyclic manner:循环取值,再重新开始新一轮的unique取值

LoadRunner脚本开发:参数列表和常用函数(三)_html_17

 

 

LoadRunner脚本开发:参数列表和常用函数(三)_字符串_18

 

 

情况三:Continue with last value:沿用最后一个值

LoadRunner脚本开发:参数列表和常用函数(三)_字符串_19

 

 

LoadRunner脚本开发:参数列表和常用函数(三)_html_20

 

 

六. Group Name

LoadRunner脚本开发:参数列表和常用函数(三)_html_21

LoadRunner脚本开发:参数列表和常用函数(三)_mvc_22

 

 

 

七. Iteration Number

LoadRunner脚本开发:参数列表和常用函数(三)_字符串_23

LoadRunner脚本开发:参数列表和常用函数(三)_字符串_24

 

 

 

八. Random Number

LoadRunner脚本开发:参数列表和常用函数(三)_html_25

 

 

九. loadrunner事务 VS jmeter 事务

jmeter事务

  没有明显的事务标识

  一般,一个取样器就算一个事务

loadrunner事务

  可以显示添加事务开始和结束标识

  开始、结束事务之间请求数无限制

十. 常用函数

字符串处理函数

1. atoi()   字符串转为整型

2. atof()   字符串转为浮点型

3. itoa()   整型转为字符型

4. asctime()   字符串形式显示时间

5. ctime()   时间转换为本地时间

6. strcmp()   比较两个变量

7. strcpy()   复制字符串

8. strcat()   连接两个字符串

其他函数

1. abs   获取数字绝对值

2. cos   余弦

3. sin   正弦

4. fopen   打开文件

5. fclose   关闭文件

6. fread   读取文件

7. fwrite   写文件

8. fscanf   格式化输入

9. fprintf   格式化输出

10. ftime   打印时间

11. gmtime   转为UTC时间

12. strftime   时间转为字符串输出

13. stricmp   不区分大小写比较

14. strlen   字符串长度

15. strlwr   字符串转为小写

16. strupr   字符串转为大写

lr_函数(是C语言函数的封装,不论是什么协议都可以用)

1. commandline函数   

lr_get_atrrib_string();

 

2. database函数   

lr_db_connect();   

lr_db_disconnect();   

lr_db_executeSQLStement();   

lr_db_getValue();

 

3. infomation函数   

lr_whoami();

 

4. Message函数   

lr_error_message();   

lr_message();   

lr_log_message();   

lr_output_message();  (与lr_log_message()的区别是,不仅会在面板展示,还会写到文件中去)

 

5. run-time函数   

lr_abort();   

lr_continue_on_error();   

lr_exit();   

lr_rendezvous();   

lr_think_time();

 

6. 字符参数函数   

lr_eval_string();   

lr_paramarr_len();   

lr_save_datetime();   

lr_save_param_regexp();   

lr_save_string();

 

7. 事务函数   

lr_start_transaction();   

lr_stop_transaction();

 

8. xml函数

 

web函数(是做http请求的一类函数)

1. 动作函数 

web_custom_request();   可以用作get和post

web_submit_data();

web_submit_form();

web_url();

 

2. 认证函数

3. 异步函数

4. 检查函数

web_find();

web_reg_find();

 

5. 连接函数

6. 并发组函数

7. cookie相关函数

web_add_cookie();

web_cleanup_cookie();

web_remove_cookie();

 

8. 相关函数

web_reg_save_param_ex();

web_reg_save_param_regexp();

web_set_max_html_param_len();

 

9. 数据格式函数

10. 过滤函数

11. header函数

web_add_auto_header();

web_add_header();

web_cleanup_auto_headers();

web_remove_auto_header();

web_save_header();

 

12. 代理服务器函数

13. 重播函数

web_set_option();

web_set_timeout();

 

十一. 实例

Action()
{

//设置固定参数:前面是值,后面是参数名
lr_save_string("192.168.0.102", "host");
lr_save_string("8081", "port");
//lr_save_string("13812345678", "mobilephone");
lr_save_string("123456", "pwd");


//保存注册接口的响应结果
web_reg_save_param("register_response",
"LB={",
"RB=}",
"Search=All",
"Ord=All",
LAST);



//注册: member/register
web_url("register",
"url=http://{host}:{port}/futureloan/mvc/api/member/register?mobilephone=138{randomPhone}&pwd={pwd}", //参数化
LAST);


//手动转换后输出,防止响应结果中的中文乱码
lr_convert_string_encoding(lr_paramarr_random("register_response"), "utf-8", NULL, "register_result");


//==================================================================


//保存登录接口的响应结果
web_reg_save_param("login_response",
"LB={",
"RB=}",
"Search=All",
"Ord=All",
LAST);


//找到登录返回值
web_reg_find("Text=10001",
"SaveCount=login_status", //统计10001出现的次数
LAST);


//登录:member/login,不知道如何关联请求数据,这里只能用固定的mobilephone代替了
web_url("login",
"url=http://{host}:{port}/futureloan/mvc/api/member/login?mobilephone=13845968970&pwd={pwd}",
LAST);


//手动转换后输出,防止响应结果中的中文乱码
lr_convert_string_encoding(lr_paramarr_random("login_response"), "utf-8", NULL, "login_result");


//检查结果
if(atoi(lr_eval_string("{login_status}")) == 1) {
lr_output_message("************登录成功*****************");
//return 0; //如果这个地方启用,则直接结束,后面的脚本都将不再执行
} else {
lr_output_message("============%d============", atoi(lr_eval_string("{login_status}")));
lr_output_message("=================登录失败====================");
return -1; //直接结束
}

}

运行结果

Virtual User Script started at : 2019/11/9 15:26:52
Starting action vuser_init.
Web Turbo Replay of LoadRunner 12.0.0 for Windows 2008 R2; build 2739 (Nov 30 2014 23:13:05) [MsgId: MMSG-27143]
Run mode: HTML [MsgId: MMSG-26993]
Run-Time Settings file: "C:\Users\beck\Documents\VuGen\Scripts\WebHttpHtml8\\default.cfg" [MsgId: MMSG-27141]
Ending action vuser_init.
Running Vuser...
Starting iteration 1.
Maximum number of concurrent connections per server: 6 [MsgId: MMSG-26989]
Starting action Action.
Action.c(5): Notify: Saving Parameter "host = 192.168.0.102".
Action.c(6): Notify: Saving Parameter "port = 8081".
Action.c(8): Notify: Saving Parameter "pwd = 123456".
Action.c(12): web_reg_save_param started [MsgId: MMSG-26355]
Action.c(12): Registering web_reg_save_param was successful [MsgId: MMSG-26390]
Action.c(22): web_url("register") started [MsgId: MMSG-26355]
Action.c(22): Notify: Parameter Substitution: parameter "host" = "192.168.0.102"
Action.c(22): Notify: Parameter Substitution: parameter "port" = "8081"
Action.c(22): Notify: Parameter Substitution: parameter "randomPhone" = "77753678"
Action.c(22): Notify: Parameter Substitution: parameter "pwd" = "123456"
Action.c(22): t=1414ms: 157-byte response headers for "http://192.168.0.102:8081/futureloan/mvc/api/member/register?mobilephone=13877753678&pwd=123456" (RelFrameId=1, Internal ID=1)
Action.c(22): HTTP/1.1 200 OK\r\n
Action.c(22): Server: Apache-Coyote/1.1\r\n
Action.c(22): Content-Type: application/json;charset=UTF-8\r\n
Action.c(22): Transfer-Encoding: chunked\r\n
Action.c(22): Date: Sat, 09 Nov 2019 07:26:52 GMT\r\n
Action.c(22): \r\n
Action.c(22): t=1422ms: 4-byte chunked response overhead for "http://192.168.0.102:8081/futureloan/mvc/api/member/register?mobilephone=13877753678&pwd=123456" (RelFrameId=1, Internal ID=1)
Action.c(22): 3c\r\n
Action.c(22): t=1422ms: 7-byte chunked response overhead for "http://192.168.0.102:8081/futureloan/mvc/api/member/register?mobilephone=13877753678&pwd=123456" (RelFrameId=1, Internal ID=1)
Action.c(22): \r\n
Action.c(22): 0\r\n
Action.c(22): \r\n
Action.c(22): t=1426ms: 60-byte chunked response body for "http://192.168.0.102:8081/futureloan/mvc/api/member/register?mobilephone=13877753678&pwd=123456" (RelFrameId=1, Internal ID=1)
Action.c(22): {"status":1,"code":"10001","data":null,"msg":"娉ㄥ唽鎴愬姛"}
Action.c(22): Notify: Saving Parameter "register_response_1 = "status":1,"code":"10001","data":null,"msg":"娉ㄥ唽鎴愬姛"".
Action.c(22): HTML parsing not performed for Content-Type "application/json" ("ParseHtmlContentType" Run-Time Setting is "TEXT"). URL="http://192.168.0.102:8081/futureloan/mvc/api/member/register?mobilephone=13877753678&pwd=123456" [MsgId: MMSG-26548]
Action.c(22): Notify: Saving Parameter "register_response_count = 1".
Action.c(22): web_url("register") was successful, 60 body bytes, 157 header bytes, 11 chunking overhead bytes [MsgId: MMSG-26385]
Action.c(28): Notify: Parameter Substitution: parameter "register_response_count" = "1"
Action.c(28): Notify: Parameter Substitution: parameter "register_response_1" = ""status":1,"code":"10001","data":null,"msg":"娉ㄥ唽鎴愬姛""
Action.c(28): Notify: Saving Parameter "register_result = "status":1,"code":"10001","data":null,"msg":"注册成功"\x00".
Action.c(35): web_reg_save_param started [MsgId: MMSG-26355]
Action.c(35): Registering web_reg_save_param was successful [MsgId: MMSG-26390]
Action.c(44): web_reg_find started [MsgId: MMSG-26355]
Action.c(44): Registering web_reg_find was successful [MsgId: MMSG-26390]
Action.c(50): web_url("login") started [MsgId: MMSG-26355]
Action.c(50): Notify: Parameter Substitution: parameter "host" = "192.168.0.102"
Action.c(50): Notify: Parameter Substitution: parameter "port" = "8081"
Action.c(50): Notify: Parameter Substitution: parameter "pwd" = "123456"
Action.c(50): t=1575ms: 157-byte response headers for "http://192.168.0.102:8081/futureloan/mvc/api/member/login?mobilephone=13845968970&pwd=123456" (RelFrameId=1, Internal ID=2)
Action.c(50): HTTP/1.1 200 OK\r\n
Action.c(50): Server: Apache-Coyote/1.1\r\n
Action.c(50): Content-Type: application/json;charset=UTF-8\r\n
Action.c(50): Transfer-Encoding: chunked\r\n
Action.c(50): Date: Sat, 09 Nov 2019 07:26:52 GMT\r\n
Action.c(50): \r\n
Action.c(50): t=1581ms: 4-byte chunked response overhead for "http://192.168.0.102:8081/futureloan/mvc/api/member/login?mobilephone=13845968970&pwd=123456" (RelFrameId=1, Internal ID=2)
Action.c(50): 3c\r\n
Action.c(50): t=1582ms: 7-byte chunked response overhead for "http://192.168.0.102:8081/futureloan/mvc/api/member/login?mobilephone=13845968970&pwd=123456" (RelFrameId=1, Internal ID=2)
Action.c(50): \r\n
Action.c(50): 0\r\n
Action.c(50): \r\n
Action.c(50): t=1582ms: 60-byte chunked response body for "http://192.168.0.102:8081/futureloan/mvc/api/member/login?mobilephone=13845968970&pwd=123456" (RelFrameId=1, Internal ID=2)
Action.c(50): {"status":1,"code":"10001","data":null,"msg":"鐧诲綍鎴愬姛"}
Action.c(50): Notify: Saving Parameter "login_response_1 = "status":1,"code":"10001","data":null,"msg":"鐧诲綍鎴愬姛"".
Action.c(50): HTML parsing not performed for Content-Type "application/json" ("ParseHtmlContentType" Run-Time Setting is "TEXT"). URL="http://192.168.0.102:8081/futureloan/mvc/api/member/login?mobilephone=13845968970&pwd=123456" [MsgId: MMSG-26548]
Action.c(50): Notify: Saving Parameter "login_response_count = 1".
Action.c(50): Registered web_reg_find successful for "Text=10001" (count=1) [MsgId: MMSG-26364]
Action.c(50): Notify: Saving Parameter "login_status = 1".
Action.c(50): web_url("login") was successful, 60 body bytes, 157 header bytes, 11 chunking overhead bytes [MsgId: MMSG-26385]
Action.c(56): Notify: Parameter Substitution: parameter "login_response_count" = "1"
Action.c(56): Notify: Parameter Substitution: parameter "login_response_1" = ""status":1,"code":"10001","data":null,"msg":"鐧诲綍鎴愬姛""
Action.c(56): Notify: Saving Parameter "login_result = "status":1,"code":"10001","data":null,"msg":"登录成功"\x00".
Action.c(60): Notify: Parameter Substitution: parameter "login_status" = "1"
Action.c(61): ************登录成功*****************
Ending action Action.
Ending iteration 1.
Ending Vuser...
Starting action vuser_end.
Ending action vuser_end.
Vuser Terminated.

 

十二. 注意点

1. 函数的书写格式 "url=http://{host}:{port}/futureloan/mvc/api/member/register?mobilephone={mobilephone}&pwd={pwd}", 而不是下面这样,还有要注意,如果这里是虚拟机,而服务部署在本机,host应该是本机的ip,而不是127.0.0.1

LoadRunner脚本开发:参数列表和常用函数(三)_mvc_26

 

 

2. log设置,按F4,找到Log,勾选Extended log

LoadRunner脚本开发:参数列表和常用函数(三)_mvc_27

 

 

3. 另外一个查函数的方法

LoadRunner脚本开发:参数列表和常用函数(三)_html_28

 

 

 LoadRunner脚本开发:参数列表和常用函数(三)_字符串_29

 

 LoadRunner脚本开发:参数列表和常用函数(三)_mvc_30

 

 LoadRunner脚本开发:参数列表和常用函数(三)_mvc_31

 

 LoadRunner脚本开发:参数列表和常用函数(三)_字符串_32