zoukankan      html  css  js  c++  java
  • 性能测试基础---LR参数化相关

    性能测试脚本的增强:
    ·参数化
    ·关联
    ·事务
    ·检查点
    ·思考时间
    ·集合点


    ·参数化:模拟不同用户的不同请求。

    ·为什么要做参数化?
    ·功能:通常来说,系统的某些业务数据具有唯一性的要求。
    ·性能:一般来说,如果系统的后端(服务器端)对于业务提供了缓存机制,则要考虑参数化。
    PS:一般来说,查询类的业务都会通过缓存机制来提升服务器端的性能的。
    从模拟的真实度来说,缓存和非缓存数据的比例越接近真实线上数据越好。

    ·参数化的实现操作。
    在LR中,参数化的实现方式很多,但是从本质上来说,只需要保证两点:
    ·参数存在并且有值。
    ·脚本中对参数进行了调用。
    在LR中,参数调用的格式一般为:“{参数名}”。

    ·参数化的实现方式:
    在LR中,参数的类型有很多种,所以实现方式也有很多。但是从本质上来说,参数的实现方式就是两种:
    ·函数方式:通过LR内置的函数去实现参数值的生成。
    ·文件方式:通过读取数据文件(source)的方式来实现。
    ·参数和参数文件是多对一的关系。
    ·一个参数文件中可以存放多列值。
    ·一个参数只能读取一个参数文件中的某一列值。


    ·参数化的注意事项:
    ·如果用记事本编辑参数文件,则要保证最后的有效数据之后有且只有一个回车。

    ·一般来说,只有用户输入或者选择的数据我们才会做参数化处理。

    ·参数化一般只是针对用户输入或者所选择的值。

    ·参数值本身要符合业务功能的要求。
    主要是:长度、类型、格式和合法性

    ·参数化要注意参数的取值方式。

    ·First data选项:该选项会决定参数值从第几个开始读取使用,默认是从第一行开始。GUI界面只是一个显示的效果,并不会影响参数值的使用。


    ·参数的取值方式。
    在LR中,参数的取值方式是由两个选项组合决定的。
    ·Update value on:该选项所设置的是参数获取变更参数值的时机。
    该选项有三种可选的时机:
    ·each Iteration:每次迭代,是指每一次迭代开始的时候,参数就会去变更参数值。在下一次迭代开始之前,不论该参数是否被调用、调用一次还是多次,该参数的值都不会改变。
    该方式下,参数值的变更和迭代有关,和调用无关。

    参数值的变更次数等于迭代次数。

    ·each Occurrence:每次出现,所谓出现就是指参数被调用。是指每一次参数被调用之前,参数都会去变更参数值。
    该方式下,参数值的变更和调用有关,和迭代无关。

    参数值的变更次数等于调用次数。

    ·Once:仅一次,是指参数第一次被调用时,参数就会去获取一个参数值。在虚拟用户的生命周期中,该参数的值不再发生变更。

    ·Select next row:该选项所设置的是参数获取变更参数值的方式。
    该选项有四种可选的方式:
    ·Sequential:顺序取值。

    ·Random:随机取值。

    ·Unique:唯一取值。
    在LR中,对于唯一的实现,采取的是分配的方式。先分配再顺序取值。
    将所有的参数值按照块大小(用户设置)依次一块一块的批量分配给虚拟用户,然后每个虚拟用户在自己所分配到的数据块中按顺序读取参数值。

    ·Same line as XXX:只有当一个脚本中出现两个及两个以上的文件类型的参数时,才会有该选项。
    作用:如果参数A选择了Same line as 参数B,则表示每一次调用参数A时,参数A都会使用和参数B当前的值相同行号的参数值。
    这就意味着通过该选项,可以将两个参数实现参数值的一一对应关系(前提是用户自身要维护好参数文件中的数据)。
    PS:该选项不参与和Update选项的组合。

    综上可知,在LR中,参数的取值方式总计有:
    3×3+1=10种。

    示例: User1 User2
    S+I AA|BB AA|BB
    S+O AB|CD AB|CD
    S+Once AA|AA AA|AA
    R+I XX|YY XX|YY
    R+O R1R2|R3R4 R1R2|R3R4
    R+Once XX|XX XX|XX


    取值方式总结:
    ·如果某个参数在一次迭代中调用次数超过两次,则需要考虑每次迭代和每次出现的区别。

    ·随机取值和顺序取值本质上没有任何区别。

    ·顺序取值和唯一取值都无法满足业务的唯一性要求,只能使用unique方式。


    Unique方式的选项:
    ·When out of values:所谓的out of values是指参数值的变更次数超过所分配到的参数值的数量,该选项就是用来决定下一步继续怎么操作,有三种可选方式:
    ·Abort Vuser:中止虚拟用户。

    ·Continue with last value:继续执行,但是使用最后一次的值。

    ·Continue with cycle manner:继续执行,循环使用自己所分配到的值。
    PS:选择Abort可以保证全局的唯一性。
    选择Continue则意味着用户放弃了唯一的诉求,而只是保留了分配的效果。即实现了虚拟用户之间的唯一(不同)。

    ·Allocate:用来设置块大小,方式有两种,自动和手动。
    ·自动方式:仅适用于每次迭代,作用是块大小自动等于run logic中的迭代次数。

    ·手动:手动指定块大小。


    PS:一般来说,要保证用户不error,则:
    参数值的数量>=(虚拟用户数-1)×块大小+1

    要保证每一次都唯一,则:
    块大小>=迭代次数or块大小>=调用次数。

    参数值的数量>=虚拟用户数×块大小

  • 相关阅读:
    014_IP专项研究监控
    023_System Integrity Protection in macos
    013_UDP专项研究监控
    谈谈MySQL的do语句
    MySQL8的新特性CTE
    MySQL通过Explain查看select语句的执行计划结果触发写操作
    关于QueryCache的一次打脸
    Python 实现进程间通信(网络编程)
    MySQL自成一派的查询提示
    谈谈MySQL的WriteSet并行复制
  • 原文地址:https://www.cnblogs.com/wendy-0901/p/11724694.html
Copyright © 2011-2022 走看看