Jmeter添加参数的四种方法

1.HTTP请求添加

方法:1.添加的HTTP Request组件中找到Parameters页面下的add,添加自定义参数 。

   2.设置参数名称Name和参数值Value,如果是中文的,需要勾选URL Encode。

 

jmeter java请求 动态参数 jmeter添加请求参数_CSV

 

评价:这种方法只能一次添加一个参数,和在path中输入变量是没有区别的(path中的输入是会自动Encode的)。所以不适合压测对参数值有数量要求的测试。

 

二、用户定义的变量

方法:

  1.右击线程组Thread Group,add->configure element->user Defined variables。设置如下图:

  

jmeter java请求 动态参数 jmeter添加请求参数_取值_02

 

  2.变量定义:可以是具体的值,也可以是函数(函数可自动生成:选项->函数助手对话框)

   

jmeter java请求 动态参数 jmeter添加请求参数_线程组_03

  

  3.变量引用:Sample中引用变量的格式为${变量名}

  可以再Server Name or IP 和 Path等地方添加引用变量,也可以在Send Parameters With the Request中设置

  

jmeter java请求 动态参数 jmeter添加请求参数_jmeter java请求 动态参数_04

 

评价:当前的线程组内所有Sampler都可以引用变量,方便脚本更新;当参数发生变化时,只要在【用户定义的变量】中更新对应变量的参数即可,不需要逐个修改每个http中的参数。

   与上一个方法类似,不适合对压测参数有数量要求的测试。

 

三、函数助手对话框

  方法: Tools->Function Helper Dialog

  

jmeter java请求 动态参数 jmeter添加请求参数_CSV_05

 

  1.__Random:在最大值和最小值之间取一个随机值。有三个参数:最大值,最小值,获取的随机值的变量名  

  例如,生成[1,100]内的随机函数

jmeter java请求 动态参数 jmeter添加请求参数_取值_06

 


注意:在设置线程属性时,循环次数必须大于1,随机函数才会生效

例如${__Random(1,100,)},当设置线程数=10,循环次数=1时,10次随机函数的结果都是1;当循环次数>1时,才会随机取值

2、__P:设置属性的默认值。有两个参数:变量名,默认值(默认值为1)。例如:${__P(hostname,XXX)}:返回属性hostname的值,如果没有定义该属性则返回值XXX

3、__CSVRead:从CSV文件中读取字符串。有两个参数:文件名,第几列(0表示第一列)

4、${__UUID}:随机取值,且结果唯一;区别于__Random(随机取值,结果有可能相同)

 

评价:适用于数值型、日期等,不适合特定的参数。 

 

四、创建CSV Data Set Config

方法:

1.右击Thread Group,add->configure element->CSV Data Set Config

 

jmeter java请求 动态参数 jmeter添加请求参数_jmeter java请求 动态参数_07

 

2.参数含义

jmeter java请求 动态参数 jmeter添加请求参数_取值_08

 

1)Filename:文件路径(如果和脚本同路径,只需要输入文件名;否则要输入全路径)

2)File encoding:编码和文件格式保持一致,如果有中文,最好用UTF-8

3)Variable names:参数名称,参数之间用,隔开

4)Delimiter:输入文件(csv/dat等)中的分割符号;用\t代替tab键

5)Allow quoted data:当获取的数据中包含"时,要设置为True

6)Recycle on EOF: 设置为True后,允许循环取值

7)Stop Thread EOF: 当Recycle on EOF为false并且Stop Thread EOF 为true,则读完csv文件中的记录后,停止运行,线程数及执行次数无效

8)Sharing Mode:共享模式: All threads:所有线程,所有线程循环取值,线程1取第一行,线程二取下一行;Current thread group:当前线程组,各个线程组分别循环取值;Current thread:该测试计划内的所有线程都取第一行

 

3.调用CSV Data Set Config中的变量

jmeter java请求 动态参数 jmeter添加请求参数_线程组_09

 

注意:csv需要注意分隔符(delimiter)以及从mysql导出的数据是带双引号""的。需要包含列名称,才能找到NAME的值。

 

评价:可以从.csv、.dat等文件中获取数据,并将这些数据参数化。当数据发生变化时,只需要改原始文件,不需要改脚本。

   直接读取数据库表数据,对接口进行压测,避免了缓存的影响。