基本介绍:
参数化是自动化测试脚本的一种常用技巧。简单来说,参数化的一般用法就是将脚本中的某些输入使用参数来代替。
我们做性能测试需要并发多个用户,为了真实模拟用户行为,我们需要模拟多个不同的用户登录,这时我们就需要使用到参数化了。
JMeter主要参数化方式:
-
CSV数据文件设置(CSV Data Set Config)
-
函数助手(_CSVRead)
-
用户定义的变量(User Defined Variables)
-
用户参数(User Variables)
1、CSV数据文件设置
通过引用外部文件来进行参数化。
组件位置:
右键 -- 添加 -- 配置元件 -- CSV数据元件设置
设置CSV数据文件(Configure the CSV Data Source)参数说明:
1、文件名(Filename):
引用文件地址,可以使用相对路径,也可以使用绝对路径。相对路径的根目录是JMeter的启动目录(%JMETER_HOME%\bin),如果文件就在bin目录下可直接“.\”。
2、文件编码(File encoding):
读取参数文件用到的编码格式,建议统一使用utf-8,避免乱码。
3、变量名称(Variable Names):
定义的变量名称,用英文逗号分隔。变量名称个数需与引用文件中的参数个数对应,不匹配部分将取不到值。
4、忽略首行(Ignore first line):
默认不忽略,改为true的情况,一般是引用文件首行用来做字段参数备注。
5、分隔符(Delimiter):
分隔符默认使用英文逗号,也可使用tab键来分隔,若用tab键文本框应填写“\t”。
6、是否允许带引号?(Allow quote data):
引用文件中的参数值:“张三,李四”,王五
默认为False,数据拆分后就是 “张三、李四”、王五 ;
若选择True,这个数据拆分后就是 张三,李四 和 王五 。
7、遇到文件结束符再次循环?(Recycle on EOF):
默认为True,循环遍历参数文件中的参数值。
设置为False,参数文件中的参数值遍历完成后就不循环了。
8、遇到文件结束符停止线程?(Stop thread on EOF):
默认为False,参数文件读完后不停线程,与Recycle on EOF 中 False选择复用。
选择为True,参数文件读完后直接停止线程。
9、线程共享模式(Sharing mode):
①、所有线程(All threads),即同一测试计划下的所有线程。
②、当前线程组(Current thread group),即仅对当前线程组下的线程有效。
③、当前线程(Current thread),即仅对当前线程生效。
应用示例:
接口请求参数化:
CSV参数化配置:
引用文件路径及内容:
响应结果,成功将入参打印出来,表示CSV参数化成功:
2、函数助手
JMeter提供了函数可直接调用,如生成随机字符串、求和等。
组件位置:
1、图示箭头位置快速唤出。
2、导航栏 -- 工具 -- 函数助手对话框
官网api文档地址:
https://jmeter.apache.org/usermanual/functions.html
应用示例:
随机字符串函数
${__RandomString(6,abcdefg,name)}
- 第一个参数表示随机字符串的长度;
- 第二个参数表示随机的字符集合,可空,空表示所有的字符(含特殊字符);
- 第三个参数表示是否存为变量,供给线程组内其他线程使用,值与前者相同。可空,空即表示不存。
接口1 中的请求参数使用JMeter函数,并将值存为变量 Name :
接口2 引用变量 Name ,得到和接口1函数生成一样的值:
3、用户定义的变量
对当前线程组下的所有线程生效,优先级最低(可理解为java中的静态常量)。
组件位置:
右键 -- 添加 -- 配置元件 -- 用户定义的变量
4、用户参数
仅对当前线程生效,优先级最高(可理解为java中的局部变量)。
组件位置:
右键 -- 添加 -- 前置处理器 -- 用户参数
注意事项:
以上四种参数化的优先级:
用户参数 > 函数引用 > CSV数据文件设置 > 用户定义的变量
评论区