jmeter元件,作用域与优先级

一、jmeter元件

1、配置元件:优先级最高

  1.1 重点使用元件:csv数据文件设置、用户定义变量、计数器

2、取样器:根据不同协议来编写请求脚本的元件

  2.1 是真正发起请求的元件

  2.2 执行顺序: 在没有逻辑控制器,是从上往下执行;多用户并发的时候,每个用户的执行顺序,都是从上往下

3、逻辑控制器: 控制取样器的执行逻辑

  3.1 先于取样器执行

  3.2 作用范围: 只针对它子集取样器

4、前置处理器:

  4.1 元件:用户参数

  4.2 取样器前面执行,放在不同的位置,作用范围 是不一样

5、后置处理器:对取样器的执行结果进行处理

  5.2 JSON提取器,正则提取器

  5.1 后置处理器是放在具体的某一个取样器下作为这个取样器的子集,所以,这个后置处理器,只作用在当前这个取样器上,不可以放在公共的线程组后测试计划下,否则会识别不到要处理哪一个执行结果

6、查看结果数:根据收到响应的先后顺序显示,先收到,先显示。所以,查看结果树中显示的结果顺序,在单个用户请求的时候,顺序与请求顺序一致, 但是,在多用户并发的时候,就不一定一致了,所以,在多用户并发的时候,不要问, 为什么查看结果树中顺序不对。

二、变量的定义

1、jmeter中变量名称的定义用字母或数字或下滑线(遵循java变量名定义规则)

2、变量的引用:${变量名}

3、变量的定义方法

  3.1 配置元件:用户定义变量

    3.1.1 添加变量路径一:鼠标右键-配置元件-用户定义的变量

    3.1.2 添加变量路径二:测试计划-直接添加

    3.1.3 用户定义变量,可以跨线程组被引用,是一个全局变量(但 是,这个全局变量与代码中讲的全局变量有差异)

  3.2 前置处理器:用户参数

    3.2.1 测试计划下,添加用户参数, 可以多个线程组中引用用户参数

    3.2.2 在某一个线程组下面,添加用户参数,当前这个线程组中引用参数, 可以引用到值,但是,其他线程组,引用是应用不到值;用户参数,不能直接跨线程组被引用。

    3.3.3 在一个线程组下,把用户参数,挂在某一个取样器下面,作为取样器的子集,运行时,这个取样器能取到用户参数的值,在这个取样器之后的取样器,也能取到用户参数的值,但是,在这个取样器之前的取样器,是不能取到用户参数的值。

  3.3 测试计划:测试计划中有一个独立运行每个线程组(复选框),默认没有勾选,代表测试 计划下,所有的线程组是并行执行,勾选了,那么多个线程组,就从上往 下执行,前面线程组执行结束才会开始执行后面的线程组。

注意:什么时候使用定义变量---在项目中存在后期会变化的参数时用到定义变量,以便于后期更改参数时,只需要更改定义的变量的值,不需要一个脚本一个脚本去改数据

三、函数

1、函数的名称是严格区分大小写, 函数前面是有 两个下划线;在函数助手对话框中,点击生成按钮,结果框中,有正常显示结果,说明你的函数一定 可以正常运行,但是,没有结果或结果报错,并不代表,你的函数在使用的时候会失 败。

2、jmeter函数有两种

  2.1 自带函数: Tools > 函数助手对话框 -----jmeter有这些方法,你可以直接 调用来使用它实现你要的功能

    2.1.1  Tools--> 函数助手对话框-->选择函数-->点击帮助会跳转到详情介绍页面

    2.1.2 使用:Tools--函数助手对话框--选择函数值-填写下方值--点击生成-复制表达式到你定义的变量中:156${__Random(00000000,99999999,)

  1.2 扩展函数----第三方扩展包

3、随机函数

  3.1 用户定义变量:在启动时,获取一次值,在运行过程中,不会动态获取值;比如一个线程组中有两个接口用到同一个用户变量的值,在执行的过程中,函数仅会生成一个随机数,两个接口使用的是一个值

  3.2 用户参数:在启动时,获取一次值,在运行过程中,还会动态获取值

    3.2.1 两个接口都想使用用户参数值,而且想使用相同的值的方法,例如登录的接口想使用注册接口的手机号码

       3.2.1.1 把用户参数,放在第1个接口取样器的子集

       3.2.1.2 当用户参数在线程组下时,勾选用户参数中 【每次迭代更新一次】复选框也可以两个接口一起使用

4、时间相关函数

  4.1 获取当前时间戳:${__time(,)}

    4.1.1 定义时间格式:年月日:${__time(yyyyMMdd,)} ---20220416;年月日时分秒:${__time(yyyyMMdd HH:mm:ss,)} --20220416 10:28:03;微秒:${__time(yyyyMMdd HH:mm:ss.S,)}--20220416 10:28:37.617

  4.2 时间偏移函数:${__timeShift(,,,,)}

    4.2.1 减法操作:比当前时间早4天:${__timeShift(yyyyMMdd,,-p4d,,)} ---20220412 ;比当前时间晚4天:${__timeShift(yyyyMMdd,,p4d,,)} --20220420

    4.2.2 有一个接口中时间范围的参数,起始时间、结束时间,我期望从今天 开始,往历史方向减1-5天的一个范围:${__timeShift(yyyyMMdd,,-p${__Random(1,5,)}d,,)}或者${__timeShift(yyyyMMdd,${__time(YMD,)},-p${__Random(1,5,)}d,,)}

  4.3 随机日期:${__RandomDate(yyyy-MM-dd,2022-03-01,2022-03-28,,)}

  4.4 时间格式转换函数:${__dateTimeConvert(,,,)} :有时开发使用的时间是时间戳,需要用到函数进行转换

5、计数函数

  5.1 加1函数:${__counter(,)},这个函数每次只能加1

  5.2 如果每次想加其他数字,则需要使用计数器-配置元件

    5.2.1 starting value:开始递增的值    递增:可以自己设置,每次根据设置的值进行递增    Maximum value:最大递增值,当你设置了最大值的时候,使用时,超过最大时的时候,就会从起始值开始循环  引用名称:在应用时调用的参数

    5.2.2 与每用户独立的跟踪计数器(复选框):不勾选:所有的线程数及他们的循环请求次数,都使用这一个 计算器进行累加  勾选:多少个线程数,就有多少个计数器

6、${__CSVRead(,)} 暂时请不要用,因为处理不了稍微复杂的场景,会容易出错

7、加密函数

  7.1  函数:${__digest(,,,,)}---${__digest(MD5,12345678,,,)} 只能做简单加密

  7.2 如果你们的项目中的接口参数值,需要进行加密,而这个加密算法,不是 digest函数支持,那你就需要写代码

    7.2.1 在性能脚本中,任何Beanshell元 件都不要用。 Beanshell元件的性能是非常差的,在性能脚本中,请不要使用。

    7.2.2 在性能脚本中,写java代码可以使用JSR223的元件,代码写法按照 beanshell语法写法。对应的函数: ${__jexl3(,)} ${__groovy(,)}

  7.3 每个公司加密算法都不一样,这个算法的源代码是需要开发人员打包成为jar文件,由测试人员将jar包放到jmeter的\lib中,重启jmeter,写脚本调用jar文件中方法来写代码,不要把jar文件使用jmeter测试计划下的引入库来使用。

8、整数运算:${__intSum(,,)}

9、属性相关函数

  9.1 设置属性:${__setProperty(,,)}

  9.2 获取属性:${__property(,,)} 简化版:${__P(,)}

10、属性

1、属性是jmeter工具带有的一个参数,jmeter.properties是它的属性配置文件 以.properties结尾的文件,都是 jmeter的属性配置文件。配置文件的属性展示格式为属性名 = 属性值

2、分类:静态属性、动态属性, jmeter属性、系统属性

  2.1  静态属性:写在properties文件中的参数,都是我们jmeter的静态属性

  2.2 动态属性:在jmeter运行过程中,自定义的一些属性

    2.2.1 当我们关闭了了jmeter,这些动态属性就自动消失,动态属性是存储在内存中

  2.3 设置属性:${__setProperty(,,)}

  2.4 jmeter属性,系统属性查看路径:鼠标右键---非测试元件---属性显示---可以切换查看系统与jmeter属性

3、设置为属性之后,我们可以跨线程组引用用户参数的值

4、设置属性的时候,多个线程组,默认是同时运行的,第一次,可能出现, 获取不到值,但是从第二次开始,一定都能获取到值了。

11、属性与变量的结合使用

1、属性是jmeter工具所有,可以在jmeter的任何地方被调用。把用户 参数的值用属性来接收,然后,我就可以在jmeter的任何地方获取属性值,从而获取到用户参数的变化的值。

12、拼接函数

1、jmeter中的连接:188${__Random(10000000,99999999,)}

2、当我们引用变量的时候,${变量名} 这个变量名是不能进行运算的

3、${__V(var_mobile_${__counter(,)},)} 把前缀相同,后缀不相同的一个变量或函数代替,整体作为V函数传入参数。

4、使用的场景:

  4.1 后置提取的时候,有时候会一次提取多个值。

  4.2 从数据库获取数据,返回多个值

jmeter元件,作用域与优先级的更多相关文章

  1. JMeter元件作用域实践指南

    从一个问题说起 对于以下测试脚本: 为了能调用进入房间接口,需要从考场接口获取考场token.为了调用考场接口,需要从登陆接口获取登陆token.元件说明如下: 学生登录,提取登录${token}传入 ...

  2. Jmeter元件作用域

    转载自飞测团队

  3. Jmeter入门--元件作用域和执行顺序

    一.元件作用域 8类可被执行的元件(测试计划于线程组不属于可执行元件),这些元件中,取样器(Sampler)是典型的不与其他元件发生交互作用的元件,逻辑控制器只对其子节点的取样器有效,而其他元件(配置 ...

  4. JMeter元件的作用域与执行顺序

    元件的作用域 先来讨论一下元件有作用域.<JMeter基础元件介绍>一节中,我们介绍了8类可被执行的元件(测试计划与线程组不属于元件),这些元件中,取样器 是典型的不与其它元件发生交互作用 ...

  5. 学了元件作用域,我终于对JMeter开窍了

    引子 先看一下这个例子,测试计划"进入考场"下面有一个线程组,线程组下面有 3 个 HTTP 请求,分别是学生登录.考场 token和进入房间: 它们的处理逻辑是: 学生登录后,在 ...

  6. 转 6 jmeter元件的作用域与执行顺序

    6 jmeter元件的作用域与执行顺序   元件的作用域 配置元件(config elements)会影响其作用范围内的所有元件.前置处理程序(Per-processors)在其作用范围内的每一个sa ...

  7. 性能测试工具Jmeter06-Jmeter元件作用域和执行顺序

    元件作用域 8类可被执行的元件(测试计划与线程组不属于可执行元件),这些元件中,取样器(sampler)是典型的不与其它元件发生交互作用的元件,逻辑控制器只对其子节点的取样器有效,而其它元件(配置元件 ...

  8. jmeter元件作用及执行顺序

    jmeter是一个开源的性能测试工具,它可以通过鼠标拖拽来随意改变元件之间的顺序以及元件的父子关系,那么随着它们的顺序和所在的域不同,它们在执行的时候,也会有很多不同. jmeter的test pla ...

  9. Jmeter元件——JSON Extractor后置处理器介绍2

    在前段时间将JSON Extractor元件做了个简单的介绍:Jmeter元件——JSON Extractor后置处理器介绍1,今天以一个具体的json,以不同的方式提取数据做个详细的介绍. 一.模拟 ...

随机推荐

  1. Windows10与Centos7双系统安装踩的坑

    1. 首先安装windows(太简单不说了) 2.然后安装Centos7(太简单不说了) 3.注意:安装完Centos7重启电脑进入系统引导项突然发现没有Windows引导项 0x06 恢复Windo ...

  2. MariaDB数据库设置用户密码

    SET PASSWORD [FOR user] = { PASSWORD('some password') | OLD_PASSWORD('some password') | 'encrypted p ...

  3. IIS MVC 发布错误 403.14-Forbidden Web 服务器被配置为不列出此目录的内容

     转:http://blog.csdn.net/csethcrm/article/details/37820135 IIS MVC 发布错误 403.14-Forbidden Web 服务器被配置为不 ...

  4. 插值方法 - Lagrange插值多项式

    Lagrange插值多项式代码: 1 # -*- coding: utf-8 -*- 2 """ 3 Created on Wed Mar 25 15:43:42 202 ...

  5. stm32学习总结)—SPI-FLASH 实验 _

    SPI总线 SPI 简介 SPI 的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola 首先在其 MC68HCXX 系列处理器上 ...

  6. 顺利通过EMC实验(14)

  7. React+Webpack+ES6 兼容低版本浏览器(IE9)解决方案

    虽然过了兼容IE6的噩梦时代,IE依旧阴魂不散,因为你可能还要兼容IE9.在ES6已经普及的今天,用ES6写react已经成了标配.但是babel编译的js语法,由于某些不规范的写法,可能在IE9下不 ...

  8. 什么是jsp?jsp的内置对象有哪些?

    这里是修真院前端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析前端知识/技能,本篇分享的是: [什么是jsp? ...

  9. 基于React的仿QQ音乐(移动端)

    前言 由于这段时间工作上也是挺忙的,就没有时间去写这个项目,中间一直都是写写停停,进度也是非常慢的.正好前几天都还比较空,就赶紧抓着空闲时间去写这个项目,最后紧赶慢赶地完成了.本项目采用了React的 ...

  10. 解决“WARNINGThe remote SSH server rejected X11 forwarding request.“警告

    使用xshell连接服务器时,出现了"WARNING! The remote SSH server rejected X11 forwarding request.",意思是&qu ...