用户定义变量 和 用户参数
- 在性能测试中,要使用多用户(多线程)并发, 接口请求参数中,有些参数,是需要进行参数化
- 这个多用户, 要理解为
多线程
, 不要理解为多个账号
- 参数化: 就是把 原先固定死的参数值,变成可以掌控的变量
- 在jmeter中, 参数值的 参数化 方式 常见有两种(实际有三种):
- 用户定义变量 & 用户参数
- 命名规则相同: 字母或数字下划线, 命名规则 根据java规则
- 变量引用: ${变量名称}
- 都可以定义变量
- 用户定义变量:
- 它是 配置元件 它的优先级最高,最先被执行
- 用户参数:
- 它是
前置处理器
在取样器执行之前被执行- 每次迭代更新一次: 线程组下,所有的取样器执行完一次,算一个迭代
- 迭代? 所有的事情完成一次是一个迭代,多次迭代,就是所有的事情完成多轮。
- 迭代 VS 循环:
- 循环: 某一件事情,重复做
用户定义变量,它是类似于全局变量,在整个jmeter中,都可以被使用,但是,它只是在启动的时候,会获取一次值,在运行过程中,不会动态获取值。
用户参数,它是局部变量,在jmeter启动运行时,用它就会获取值,在运行过程中,也会动态获取值
函数
- 函数步骤获取
- 函数也可以叫方法
- 自带函数: jmeter工具自身带有的函数,可以在jmeter任何地方使用
- 扩展函数: 是要引入第三方插件包,带入进来
- jmeter中的函数:
- 用 双 下划线 开头
- 大小写敏感
- 方法可以有参数,也可以没有参数,有参数就有一个小括号
jmeter中,用函数的时候,尽可能都用 函数助手 去生成,不要手工去改或手写
- ${__base64Encode(,)} 进行base64加密
- ${__base64Decode(,)} 进行base64解密
例子如下图:
在性能测试中,与 beanshell相关的元件、函数,都不建议用。-----beanshell的性能不是很好
在函数中 我们可以使用
${__groovy(,)}
或{__jexl3(,)}
来替代${__BeanShell(,)}
来执行 java代码
${__counter(,)}
计数器函数 只能做 +1操作- ${__CSVRead(,)} 读取csv文件的函数,===========建议不要用
- ${__digest(,)} 加密函数只能做简单加密
- ${__iterationNum} 获取迭代次数
- ${__threadNum} 线程的编号
- ${__P(,)} 获取属性函数 是下面这个函数的简写
- ${__property(,)} 获取属性函数
- ${__setProperty(,)} 设置 动态 属性函数
- ${__Random(,)} 随机数
- ${__RandomDate(,)} 随机日期
- ${__time(,)} 获取当前时间戳 只能获取当前时间
- ${__timeShift(,)} 时间偏移函数 这个函数 可以进行 时间的加减
- ${__V(,)} 拼接函数
![]()
- 拼接函数
jmeter中,变量引用 只是 引用 变量名对应的值, 不会对变量名进行计算
关联
前面接口的 响应数据中某个数据, 作为后续接口的 传入参数 这就是两个接口的关联
在jmeter中,如果响应体 为 json格式,你要提取响应中数据,优先选择json提取器,不行的时候才用 正则提取器;正则提取器,不管响应体是什么类型,都可以用。
变量 + 关联 一起用于性能测试 ===== 动态变量名