Jmeter添加参数的四种方法
1.HTTP请求添加
方法:1.添加的HTTP Request组件中找到Parameters页面下的add,添加自定义参数 。
2.设置参数名称Name和参数值Value,如果是中文的,需要勾选URL Encode。
评价:这种方法只能一次添加一个参数,和在path中输入变量是没有区别的(path中的输入是会自动Encode的)。所以不适合压测对参数值有数量要求的测试。
二、用户定义的变量
方法:
1.右击线程组Thread Group,add->configure element->user Defined variables。设置如下图:
2.变量定义:可以是具体的值,也可以是函数(函数可自动生成:选项->函数助手对话框)
3.变量引用:Sample中引用变量的格式为${变量名}
可以再Server Name or IP 和 Path等地方添加引用变量,也可以在Send Parameters With the Request中设置
评价:当前的线程组内所有Sampler都可以引用变量,方便脚本更新;当参数发生变化时,只要在【用户定义的变量】中更新对应变量的参数即可,不需要逐个修改每个http中的参数。
与上一个方法类似,不适合对压测参数有数量要求的测试。
三、函数助手对话框
方法: Tools->Function Helper Dialog
1.__Random:在最大值和最小值之间取一个随机值。有三个参数:最大值,最小值,获取的随机值的变量名
例如,生成[1,100]内的随机函数
注意:在设置线程属性时,循环次数必须大于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
2.参数含义
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中的变量
注意:csv需要注意分隔符(delimiter)以及从mysql导出的数据是带双引号""的。需要包含列名称,才能找到NAME的值。
评价:可以从.csv、.dat等文件中获取数据,并将这些数据参数化。当数据发生变化时,只需要改原始文件,不需要改脚本。
直接读取数据库表数据,对接口进行压测,避免了缓存的影响。