zoukankan      html  css  js  c++  java
  • LoadRunner脚本开发:参数列表和常用函数(三)

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

    1. Parameter Properties

      Parameter type

    2. create table > edit with notepad

      Add Columns

      Add Rows

    3. select 

    第一种方式参数化:

     

     第二种方式参数化

     

     要替换某个值,需要将这个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 一次 一条数据只被取一次

    其他

    二. custom type

     

    三. File:sequential_eachiteration

     

    四. File:sequential_echooccurrence

    五. File:unique_eachoccurrence

    情况一:Abort Vuser:停止测试

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

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

    六. Group Name

    七. Iteration Number

    八. Random Number

    九. 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:UserseckDocumentsVuGenScriptsWebHttpHtml8\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
    
    Action.c(22):     Server: Apache-Coyote/1.1
    
    Action.c(22):     Content-Type: application/json;charset=UTF-8
    
    Action.c(22):     Transfer-Encoding: chunked
    
    Action.c(22):     Date: Sat, 09 Nov 2019 07:26:52 GMT
    
    Action.c(22):     
    
    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
    
    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):     
    
    Action.c(22):     0
    
    Action.c(22):     
    
    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
    
    Action.c(50):     Server: Apache-Coyote/1.1
    
    Action.c(50):     Content-Type: application/json;charset=UTF-8
    
    Action.c(50):     Transfer-Encoding: chunked
    
    Action.c(50):     Date: Sat, 09 Nov 2019 07:26:52 GMT
    
    Action.c(50):     
    
    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
    
    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):     
    
    Action.c(50):     0
    
    Action.c(50):     
    
    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

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

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

     

     

     

     

     

  • 相关阅读:
    vue 定义全局函数和变量
    大学感受
    NOIP2018 游记
    NOI2018 游记
    THUSC 2018 游记
    APIO2018 游记
    SXOI2018游记
    poorpool 的 考场 NOI Linux 配置
    关于 poorpool
    NOIP2017 游记
  • 原文地址:https://www.cnblogs.com/my_captain/p/11817184.html
Copyright © 2011-2022 走看看