zoukankan      html  css  js  c++  java
  • LoadRunner:参数化

    一、参数化概述

    1、什么是参数:

    对于一个URL来说由域名+端口号+路径+参数 组成,网址中”?”后边的都是参数,参数由key和value组成,多个参数通过”&”来连接。

    2、参数化的概念:将脚本中某个写死的参数,把它转化为一个数组列表,我们可以从数组里边取到值,来进行值的传递。

    拓展:如何查询一个域名对应的IP及域名的解析

    查询域名对应的IP:

    在浏览器地址栏中输入” 183.232.231.172”就可以访问百度的页面

    https://www.baidu.com:8080/ → 端口8080是默认的,可忽略,最后边的”/”默认为一个页面,如” /index.php”

    域名的解析:

    https://www.baidu.com/index.php

    https://www.baidu.com:8080/index.php

    http://183.232.231.172:8080/ index.php

    3、需要进行参数化的情况:

    ①数据库校验字段的唯一性

    ②应用程序不允许用一个值进行反复操作(游戏的登录)

    ③避免数据库的查询缓存,而导致性能测试结果失真

    (数据库在执行一条sql操作时,会进行语法检查、语意分析、检查表是否存在、是否有权限进行操作,然后生成执行计划,open表进行查询操作、若数据在内存中,在内存中取数返回,如果内存中没值,在硬盘中取数返回,若数据库缓存开启会将结果放入查询缓存)

    页面输入的东西,最多需要进行参数化。服务器返回的非输入之外的值,有可能需要进行关联。

    4、如何避免使用参数化:

    ①去掉数据库唯一字段限制(数据量太大的情况)

    ②改应用程序

    ③关掉数据库的查询缓存

    二、脚本的参数化操作基本界面说明

     

    注意:如上图在userNo.dat中对参数进行编辑操作完成后,光标的位置应该在”006”的回车一行,多一行或者少一行都不行,如果保存的时候,光标在” 006”的后边,而不是回车的下一行,那么脚本在进行参数化取值的时候,不会取到值”006”。

    三、取值策略及值更新策略详细说明

    1、取值策略选择"same line as xxx"

    当userNo.dat文件中,有两列时,取值策略会多一个选项"same line as xxx",如下图配置:

    根据如上两图,username的参数userNo取的是userNo.dat文件的第一列的值,password的参数passwd取的是userNo.dat文件的第二列的值,在参数取值策略中password选择"same line as userNo"意思是说,无论username选择文件中第一列哪个值,password的取值就是该username取值所在行的第二列的值,回放脚本,检查结果:

    对比userNo.dat中的参数列表,发现userNo=0003和pwd=888是在同一行中且对应的,回放结果正确。

    2、参数化测试代码段

     1 Action()
     2 {
     3       int i; //声明一个变量
     4       for (i=0;i<2;i++) //循环
     5       {
     6              char *a = "{p1}"; //获得参数赋值给a
     7              char *b = "{p2}";//获得参数赋值给b
     8              char *c = "{p1}"; //获得参数赋值给c
     9     
    10             
    11              lr_output_message("%s,%s
    ,%s
    ",lr_eval_string (a),lr_eval_string (b),lr_eval_string (c));  //打印
    12             
    13       return 0;
    14 }

    3、取值策略:顺序 + 值变更策略:每次迭代

    4、取值策略:顺序 + 值变更策略:每次遇到

     

    5、取值策略:顺序 + 值变更策略:ONCE

    6、取值策略:随机 + 值更新策略:迭代

    7、取值策略:随机 + 值更新策略:每次遇到

     

    8、取值策略:随机 + 值更新策略:ONCE

     

    9、取值策略:唯一 + 值更新策略:迭代

    用户1:a1--a5,b1--b5  用户2:a6--a10,b6--b10

    唯一是对多用户而言,在并发的时候,会出现唯一,将总的参数化池划分子集,各子集间没有交集

    • 值的分配策略

    • 在跑并发时需要遵循的原则:

    ①数据库表中的值是否足够,

    ②要算出给每个用户分配多少个值,才够用

    在唯一的时候,用户和用户之间,他们的值会单独区分开来

    • 参数模拟(不适用于值的更新策略为每次出现的情况),如下图:

    可以模拟多用户参数的取值情况(用该模拟器模拟的时候,着重自己分析,该模拟器存在bug)

    10、取值策略:唯一 + 值更新策略:每次遇到

     值不够时候处理,注意这里选择取值策略为唯一才会出现,如下图:

    对于Abort Vuser处理方式,会报如下错误:

    Error: Parameter 'p1': No more unique values for this parameter in table 'p1.dat' [unique range is 1-10]. The Vuser is aborted according to "When Out Of Values" policy.

    对于continue with last value处理方式,会报如下错误:

    Error: Parameter 'p1': No more unique values for this parameter in table 'p1.dat' [unique range is 1-10].The parameter continues with last value of the range according to "When Out Of Values" policy.

    但是依然用最后一个值替换

    对于continue in a cyclic manner处理方式不会报错,从头开始取值

    11、取值策略:唯一 + 值更新策略:ONCE

    四、其他一些内容

    1、通过数据库大批量赋给参数值

    需要在负载端安装数据库驱动

    2、参数化类型

    ①Unique Number(唯一的数字)

    ②Random number

    ③Date/Time

    五、总结

    1、对银行流水号进行参数化
    100个并发用户,并发10分钟,tps=10,1个用户跑基准测试,tps=1
    Q:参数化设置?

    A:10分钟*60秒*10=6000(10分钟内需要通过6000个事务数)

         6000/100个用户=60(每个用户60条数据)

         因每个用户之间执行操作的时间会不同,故在数据库表中最好造(60+20)*100条数据,8000条数据10分钟内肯定是用不完的因tps=10

    参数化设置如下图:

    2、对银行流水号进行参数化

    100个并发用户,并发10分钟,tps=无限,1个用户跑基准测试,tps=1

    Q:参数化设置?

    A:10分钟*60秒*100tps=60000(10分钟内需要通过60000个事务数)

        60000/100=600(每个用户600条数据)

        故参数化设置如下图:

    --------------------------------------------------------------------

    如欢如殇 授以青春鲜活肢体奔忙 如思如忘 驱以老朽深沉灵魂冥想 始自情热激荡 从未敢终于世事炎凉 无能执手相望 无法去尝试结发同床 无力至心死身僵 一息坚强 ------ 我一直没有放弃,如果你也能看到 修身 修禅
  • 相关阅读:
    install jprofiler for ubuntu
    android manifest相关属性
    install nginx for ubuntu
    Android shape
    mobile web for no cookie session
    Android布局属性
    什么是强类型,强类型集合
    radl (三) (转)
    几个.net 基础问题,自己回答了一些,请大家指教
    c#接口和抽象类的区别
  • 原文地址:https://www.cnblogs.com/lz2lhy/p/6792270.html
Copyright © 2011-2022 走看看