一、使用jmeter函数助手
启动jmeter后,可以在JMeter的选项菜单中找到函数助手对话框(快捷键:Ctrl+Shift+F1),如下图所示:
打开函数助手,可以从下拉列表中选择一个函数,并为其参数设定值,不同函数要求的参数也不同;表格的左边一列是函数参数的简要描述,右边一列是供用户填充参数的值。
二、常用JMeter函数
1、__regexFunction
正则表达式函数可以使用正则表达式(用户提供的)来解析前面的服务器响应(或者是某个变量值),函数会返回一个有模板的字符串,其中携带有可变的值。
__regexFunction还可以被用来保存值,以便供后续使用。
在函数的第6个参数中,可以指定一个引用名;在函数执行以后,可以使用用户定义值的语法来获取同样的值。例如,如果输入"refName"作为第6个参数,那么可以使用:
${refName}来引用第2个参数(Template for the replacement string)的计算结果,这依赖于函数的解析结果;
${refName_g0}来引用函数解析后发现的所有匹配结果;
${refName_g1}来引用函数解析后发现的第一个匹配组合;
${refName_g#}来引用函数解析后发现的第n个匹配组合;
${refName_matchNr}来引用函数总共发现的匹配组合数目;
参数如下表所示:
函数参数
描述
是否必需
第1个参数
第1个参数是用于解析服务器响应数据的正则表达式,它会找到所有匹配项;如果希望将表达式中的
某部分应用在模板字符串中,一定记得为其加上圆括号。例如,,这样就会将链
接的值存放到第一个匹配组合中(这里只有一个匹配组合)。又如,<input type=“hidden”
name="(.)“value=”(.)">,在这个例子中,链接的name作为第一个匹配组合,链接的value会
作为第二个匹配组合,这些组合可以用在测试人员的模板字符串中。
是
第2个参数
这是一个模板字符串,函数会动态填写字符串的部分内容。要在字符串中引用正则表达式捕获的匹配组
合,请使用语法:[groupnumber]。例如1或者 2,模板可以是任何字符串。
是
第3个参数
第3个参数告诉JMeter使用第几次匹配;测试人员的正则表达式可能会找到多个匹配项,对此,
有4种选择:
n 整数,直接告诉JMeter使用第几个匹配项;
n “1”对应第一个匹配,“2”对应第二个匹配,以此类推;
n RAND,告诉JMeter随机选择一个匹配项;
n ALL,告诉JMeter使用所有匹配项,为每个匹配项创建一个模板字符串,并将它们连接在一起
n 浮点值0到1之间,根据公式(找到的总匹配数目*指定浮点值)计算使用第几个匹配项,计算值
向最近的整数取整
否,默认值为1
第4个参数
如果在上一个参数中选择了“ALL”,那么这第4个参数会被插入到重复的模板值之间
否
第5个参数
如果没有找到匹配项返回的默认值
否
第6个参数
重用函数解析值的引用名,参见上面内容
否
第7个参数
输入变量名称。如果指定了这一参数,那么该变量的值就会作为函数的输入,而不再使用前面的采样结
果作为搜索对象
否
2、__counter
每次调用计数器函数都会产生一个新值,从1开始每次加1。计数器既可以被配置成针对每个虚拟用户是独立的,也可以被配置成所有虚拟用户公用的。如果每个虚拟用户的计数器
是独立增长的,那么通常被用于记录测试计划运行了多少遍。全局计数器通常被用于记录发送了多少次请求,计数器使用一个整数值来记录,允许的最大值为2,147,483,647。
目前计数器函数实例是独立实现的(JMeter 2.1.1及其以前版本,使用一个固定的线程变量来跟踪每个用户的计数器,因此多个计数器函数会操作同一个值)。
全局计数器(FALSE)每个计数器实例都是独立维护的。
参数如下表所示:
函数参数
描述
是否必需
第1个参数
True,如果希望每个虚拟用户的计数器保持独立,与其他用户的计数器相区别;
false,全局计数器;
是
第2个参数
重用计数器函数创建值的引用名。可以这样引用计数器的值:${refName}。这样一来,就可以创建一个
计数器后,在多个地方引用它的值(JMeter 2.1.1及其以前版本,这个参数是必需的)
否
3、__threadNum
函数__threadNum只是简单地返回当前线程的编号。线程编号不依赖于线程组,这就意味着从函数的角度看来,某个线程组的线程#1和另一个线程组的线程#1是没有区别的。
另外,该函数没有参数。这一函数不能用在任何配置元件中(如用户定义的变量),原因在于配置元件是由一个独立线程运行的。另外在测试计划中使用也是没有意义的。
4)__intSum
函数__intSum可以被用来计算两个或者更多整数值的合。
参数如下表所示:
函数参数
描述
是否必需
第1个参数
第1个整数值
是
第2个参数
第2个整数值
是
第n个参数
第n个整数值
否
最后一个参数
重用函数计算值的引用名。如果用户指定了这一参数,那么引用名中必须包含一个非数字字母,否则它会被当成另
一个整数值,而被函数用于计算
否
JMeter 2.3.1及其以前版本,要求必须有引用名参数。后续JMeter版本中,引用名是可选的参数,但是引用名不能是整数值。
5、__longSum
函数__ longSum可以被用来计算两个或者更多长整型值的合。
参数如下表所示:
函数参数
描述
是否必需
第1个参数
第1个长整型值
是
第2个参数
第2个长整型值
是
第n个参数
第n个长整型值
否
最后一个参数
重用函数计算值的引用名。如果用户指定了这一参数,那么引用名中必须包含一个非数字字母,否则它会被当成
另一个长整型值,而被函数用于计算
否
6、__StringFromFile
__StringFromFile可以被用来从文本文件中读取字符串,这对需要大量可变数据的测试很有用。例如,当测试一个银行系统时,测试人员可能需要100条甚至1000条账户信息。
使用配置元件CSV Data Set Config ,也能达到相同的目的,而且方法更简单,但是该配置元件目前不支持多输入文件。
每次调用函数,都会从文件中读取下一行。