zoukankan      html  css  js  c++  java
  • 性能测试loadrunner(五)

    一,脚本增强

      参数化:为什么要做参数化?(简单点说就是1,模拟不同的数据,2,模拟不同的用户)

      专业角度讲:被业务场景所迫:所有的用户都输入相同的数据,不能体现出真实的业务环境

      被系统体系所迫:存在缓存,不能体现出真正的性能

      被系统业务约束所迫:有些系统禁止一个用户多次登录的系统,也就是严重到无法测试的地步了

      用户在录制脚本操作系统的过程中输入提交的数据,实际运行虚拟多用户的时候为了符合实际业务需要提交不同的值,参数化输入是一种不错的解决方法

      掌握参数化的几种方法

      如果参数化错误了,不想参数化了,可以选择脚本回滚:在Tools---->Regenerate Script,点击即可,这个是脚本回滚到录制时的初始化脚本

      

      

      

      

       

      下面是两个随机数和时间参数化的列子: 

    Action()

    {

    //随机格式数据

    lr_output_message("第一次=======%s",lr_eval_string("{P_num}{P_num1}{P_num2}"));

    lr_output_message("第二次=======%s",lr_eval_string("{P_num}{P_num1}{P_num2}"));

    lr_output_message("第三次=======%s",lr_eval_string("{P_num}{P_num1}{P_num2}"));

    //日期格式数据

    lr_output_message("第一次时间%s",lr_eval_string("{P_time}"));

    lr_output_message("第二次时间%s",lr_eval_string("{P_time1}"));

    return 0;

    }

    参数化取值方式:

    顺序取值

    随机取值

    唯一取值

    Select next row 选项: Sequential 按照顺序,每一个虚拟用户都会按照相同的顺序读取。

    Random 在每次循环里随机的读取一个 Unique 唯一的数。注意:使用该类型必须注意数据表有足够多的数。

    Same Line As 某个参数(比如Username):和前面定义的参数取同行的值

    Update value on 选项: each iteration 每次迭代(循环)都要取新值 each occurrence 只要发现该参数就要重新取值,也就是如果一个action中有多个该参数,每遇到一个就要重新取一个值 Once 在所有的反复中都使用同一个值

    When out of values 选项: Abort vuser 数据不够时退出执行,用户停止。

    Continue in a cyclic manner 数据不够时,重新开始从第一个参数取值循环利用

    Continue with last value 数据不够时取最后一个参数值。

    Allocate Vuser values in the Controller 选项: Automatically allocate block size 系统根据迭代次数自动分配参数块 Allocate XX values for each Vuser 为每个用户分配XX条数据

     

    二,关联:为什么要做关联?

    关联:取得响应返回的值,当后面的请求需要这个值的时候,且这个值是变化的,就可以使用关联

    常见的关联场景:1cookie,session,token------认证信息,2,删除订单,再次删除订单号不存在

    关联函数的位置,关联函数如何写

    通过手工去查找需要关联的数据,手动编写脚本完成的关联

    录制两份相同操作的脚本----》通过WinDiff工具比较两份脚本----web_reg_save_param函数手动建立关联

    WinDiff工具为Loadrunner自带工具,也可以使用Uedit比较,目的就是找出两次录制过程中变化的值

    web_reg_save_param语法:

      int web_reg_save_param(const char * ParamName,<list of Attributes>,LAST);

    注意:关联完成后需要用关联定义的参数名称{ParamName}去替换脚本中所有需要此关联的参数值

    web_reg_save_param("outFlightVal",//参数名称

    “LB=outboundFlight value=”," RB=>",//参数左右边界,该属性必须有,并且区分大小写。

    “ORD=ALL”,//查询参数位置的序号,当ORD=1时,只匹配第一个出现的参数,当ORD=ALL时,所有匹配保存到一个数组,可以用outFlightVal_1,outFlightVal_2,....把所有匹配的数据取出

    “RelFrameID=ALL”,//相对于所有请求URLHTML页面的层级,可能的值是ALL或者数字,all会查找本url下所有的HTML页面,默认是查找最后一个页面

    “Notfound=error”,//没有找到关联参数时报错类型,默认为error,可以指定是error或者warning,warning一般在不想出现错误提示且脚本想继续执行时会用到

    “Savelen=18”.//参数字符串长度

    “SaveOffset=0”,//从查到参数的第几个字符开始保存参数,默认是0

    “Search=ALL”//搜索参数的范围,可以是Header,Body,NoResouce,

    ALL(缺省)

    LAST);//参数属性列表结束

    一般关联函数放到获取值的请求的上面,不能放到下面

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    noip2015运输计划
    bzoj3595 方伯伯的oj
    noip模拟赛 #3
    圆方树
    AtCoder AGC #4 Virtual Participation
    noip模拟赛 #2
    AtCoder AGC #3 Virtual Participation
    UNR #1 火车管理
    noip模拟赛
    AtCoder AGC #2 Virtual Participation
  • 原文地址:https://www.cnblogs.com/hally/p/12638285.html
Copyright © 2011-2022 走看看