1.1.1. 变量的定义与引用
变量命名规范:建议使用字母、数字、下划线,不要使用数字开头
定义变量的位置:用户定义变量(配置元件),用户参数(前置处理器),及测试计划里面的用户变量(作用于整个测试计划)
引用:${变量名}
面试题:用户定义变量与用户参数的区别?
用户定义变量:是全局变量,可以跨线程组被引用,在脚本启动运行时,获取一次值,在运行过程中,不会动态获取值
注:全局变量在python\java中值可以被改变,但在jmeter中不能被改变
用户参数:是局部变量,不能直接跨线程组被引用,在脚本启动运行时,获取一次值,在运行过程中,会动态获取值
1.1.2. 函数介绍与概念
位置:tools -》 函数助手对话框 -》 选择函数
字符串连接:字符串 直接跟上 函数 (如183${__Random(00000000,99999999,)})
(在python中使用+进行连接)
注意:函数对话框中结果框:判断函数是否可用,不依赖结果框
面试题:在性能测试中,怎样用每次注册的账号进行登录?
1. 在线程组下面(不ok),直接添加用户定义变量,用户参数(值使用随机函数,动态生成),并没有满足我们的要求
用户定义变量:注册第一次成功,后续注册都不会成功;登录均成功(用户定义变量只会获取一次值)
用户参数:注册均成功,登录所有的均不成功(动态获取的值均没有注册)
把用户参数放在注册接口下面(ok),注册均成功,登录与注册账号一致均登录成功(前置处理器的作用域:作用于当前取样器及之后的取样器)
把用户定义变量放在注册接口下面(不ok),注册第一次成功,之后均失败,登录均成功(用户定义变量只能获取一次值)
把用户参数放在线程组下面,且勾选【每次迭代更新一次】(ok),注册均成功,登录与注册账号一致均登录成功(在一个线程组下面是1个迭代整体,所有的取样器都执行完才是一次完整的迭代,所以,在一个迭代内部,注册和登录是同一个账号)
迭代一次和循环一次的区别?
迭代:迭代一次是指线程组下所有的取样器执行完一次是一次迭代
循环:循环控制器的循环是循环,线程组中的循环是迭代
函数概念:java代码中的方法
Jmeter函数分为两类:1.jmeter自带函数,2.扩展函数
Jmeter自带函数:在函数助手中,可以直接使用
Jmeter扩展函数:需要引入第三方jar包,才能在函数助手中找到,但有些函数找不到帮助文档(扩展函数文献:http://testingpai.com/article/1640409614545)
函数的使用方法:__函数名(参数1,参数2)(双下划线开头,函数名,小括号,括号里的多个参数使用英文逗号隔开)
注:函数名称严格区分大小写
1.1.3. 简单加密函数
简单加密函数:${__digest(MD5,123456,,,)}
实现复杂的加密,需要写代码,不要使用beanshell,要使用jsr223元件
支持goovy,java,python2,js
一般用beanshell写的代码,可复制到jsr223中使用
需要引入加密算法的jar包,找开发要jar包放到...\apache-jmeter-5.x\lib\ext
1.1.4. 计数器函数
计数器函数:${__counter(,)},只能实现每次加1,步长不能改变
1.1.5. 线程数函数
线程数函数:${__threadNum}
1.1.6. 计数器元件
计数器元件:自定义步长加减法,配置元件 > 计数器元件(当设置了最大值,在运行过程中,超过最大值时,从起始值开始循环;若未设置最大值,则继续往上加)
计数器元件:勾选【与每用户独立的跟踪计数器】:每个线程数都有自己独立的计算器
1.1.7. CSV文件函数(不建议使用)
csv文件读取函数:${__CSVRead(,)},读取CSV文件,不建议使用,只能取到单列值
1.1.8. 时间函数
时间函数:参考文献http://testingpai.com/article/1599878631425
1.时间格式转化:${__dateTimeConvert(,,,)}:
2. 当前时间戳:${__time(,)
时间偏移函数:${__timeShift(,,,,)}
1.1.9. 加法函数
只能做两位整数加法函数:${__intSum(,,)}
1.1.10. 浮点相加函数
浮点数相加函数:${__doubleSum(,,)}
1.1.11. Sql执行函数
Sql执行函数:${__eval()}
1.1.12. 简单代码执行函数
简单代码执行:${__groovy(,)}(执行java代码)${__jexl3(,)}(执行python2,js)
1.1.13. 函数属性
属性函数:${__P(,)}、${__property(,,)}(获取属性)${__setProperty(,,)}(设置属性)
1.1.14. 随机字母函数
随机字母:${__RandomString(5,dew43532,)}
1.1.15. 拼接V函数(重点)
拼接函数V函数:${__V(,)}
使用场景:定义变量phone_1,phone_2,phone_3,在循环时依次获取这三个变量的值