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

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

·为什么要做参数化?
·功能:通常来说,系统的某些业务数据具有唯一性的要求。
·性能:一般来说,如果系统的后端(服务器端)对于业务提供了缓存机制,则要考虑参数化。
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块大小>=调用次数。

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

性能测试基础---LR参数化相关的更多相关文章

  1. 性能测试基础---jmeter参数化、关联、事物、检查的等

    ·Jmeter脚本增强·性能测试的脚本增强技术:参数化.关联.事务.检查点.思考时间和集合点. ·参数化:在Jmeter中,实现参数化的方式很多.本质上来说,参数化的实现方式有两种:·文件方式:一般建 ...

  2. 性能测试基础---LR场景设置

    ·场景设置. 性能测试场景依托于性能测试脚本,但是又独立于脚本. 所谓场景(scenario),就是用来模拟多用户运行性能测试脚本的情形,是来源于我们对于业务场景的分析的. 性能测试对于业务场景的分析 ...

  3. 性能测试基础---LR关联

    ·什么时候需要做关联?一般来说,在脚本运行出错的时候,我们就可能需要进行关联处理. ·脚本出错分为两种情况: ·直接回放出错(失败).通常来说,如果录制成功,回放失败,排除数据的唯一性约束之后,那就必 ...

  4. 性能测试基础---LR运行设置

    ·LR的运行时设置(Runtime settings): ·Run Logic:该选项是用来控制脚本的真正的运行逻辑. ·该选项会把脚本中的函数分别放入三个运行模块中:Init.Run.End ·默认 ...

  5. 性能测试基础---LR关联2

    ·LR中的关联函数详解.在LR中,用于关联的函数一般有以下四个:web_reg_save_param 是通过字符串查找的方式来查找获取数据.web_reg_save_param_ex 是通过字符串查找 ...

  6. lr参数化——500户并发迭代1次 循环取5条数据

    lr参数化——500户并发迭代1次 循环取5条数据 比如vuser1.vuser2.vuser3..........,vuser500 shuju1,shuju2,shuju3,shuju4,shuj ...

  7. 第一天上午——HTML网页基础知识以及相关内容

    今天上午学习了HTML基础知识以及相关内容,还有DW的基本使用方法. HTML(HyperText Markup Language):超文本标记语言,超文本:网页中除了包含文本文字之外,还包含了图片, ...

  8. 背水一战 Windows 10 (76) - 控件(控件基类): Control - 基础知识, 焦点相关, 运行时获取 ControlTemplate 和 DataTemplate 中的元素

    [源码下载] 背水一战 Windows 10 (76) - 控件(控件基类): Control - 基础知识, 焦点相关, 运行时获取 ControlTemplate 和 DataTemplate 中 ...

  9. lr参数化取值与连接数据库

    TXT文本,EXCEL表格以及数据库中的表都可以作为参数的数据集载体,LR都是支持的. 特别提醒: 1.在形成数据池之后,数据库中的数据变化不会影响数据池中的数据. 2.数据文件一定要以一个空行结束, ...

随机推荐

  1. 最新版IntelliJ IDEA2019破解方法、补丁、注册码(激活码),永久激活

    最新版IntelliJ IDEA2019破解方法.补丁.注册码(激活码),永久激活 目录 1.打赏记录 2.适用版本(适用于Windows及MacOS系统) 3.下载补丁 4.JetbrainsIde ...

  2. 【Docker】涨姿势,深入了解Dockerfile 中的 COPY 与 ADD 命令

    参考资料:https://www.cnblogs.com/sparkdev/p/9573248.html Dockerfile 中提供了两个非常相似的命令 COPY 和 ADD,本文尝试解释这两个命令 ...

  3. 使用PhantomJS后台web界面截图

    自动化截web页面的图 一.工具介绍: PhantomJS是一个基于webkit的JavaScript API.它使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执行JavaSc ...

  4. 【java】获取客户端访问的公网ip和归属地

    import com.alibaba.druid.support.json.JSONUtils; import org.thymeleaf.util.StringUtils; import javax ...

  5. mke2fs和mkfs命令使用

    1.mke2fs命令 在Linux系统下,mke2fs命令可用于创建磁盘分区上的”ext2/ext3”文件系统. (1)语法 mke2fs(选项)(参数) (2)常用选项 -b<区块大小> ...

  6. element-ui时间选择器--设置禁止选择的时间

    场景需求:开始日期不能小于今天,在今天之前的日期禁止选择,结束日期不能小于开始日期,开始日期之前的日期禁止选择. 效果图: element-ui的时间选择器中,有一个picker-options的属性 ...

  7. Java学习:面向对象三大特征:封装性、继承性、多态性之多态性。

    面向对象三大特征:封装性.继承性.多态性之多态性. extends继承或者implemens实现,是多态性的前提. 例如:小菜是一个学生,但同时也是一个人.小菜是一个对象,这个对象既有学生形态,也有人 ...

  8. K8S学习笔记之Pod的Volume emptyDir和hostPath

    0x00 Volume的类型 Volume是Kubernetes Pod中多个容器访问的共享目录. Volume被定义在Pod上,被这个Pod里的多个容器挂在到相同或不同的路径下. Volume的生命 ...

  9. WPF USB设备采集开源工具介绍

    最近项目需要需要试试采集电脑USB 设备信息 找到了 开源 示例 代码非常好  公共库也很友好  可能知名度太低   才4star https://github.com/vurdalakov/usbd ...

  10. docker学习之路-build asp.net core 2.2产生 warning MSB3245: Could not resolve this reference.错误的解决办法

    在docker build的时候有时我们可以直接使用dotnet publish来发布,但是如果用docker构建镜像的时候却会出现下面的错误: 解决办法:https://stackoverflow. ...