Apache JMeter系统知识梳理

Jmeter的函数助手

2017-10-19  本文已影响190人  我为峰2014

打开选项找到函数助手

image.png image.png

常用JMeter函数

image.png
函数参数 描述 是否必需
第1个参数 第1个参数是用于解析服务器响应数据的正则表达式,它会找到所有匹配项;如果希望将表达式中的某部分应用在模板字符串中,一定记得为其加上圆括号。例如,<a href="(.)">,这样就会将链接的值存放到第一个匹配组合中(这里只有一个匹配组合)。又如,<input type="hidden"name="(.)"value="(.*)">,在这个例子中,链接的name作为第一个匹配组合,链接的value会作为第二个匹配组合,这些组合可以用在测试人员的模板字符串中
第2个参数 这是一个模板字符串,函数会动态填写字符串的部分内容。要在字符串中引用正则表达式捕获的匹配组合,请使用语法:$[group_number]$。例如$1$或者 $2$。测试人员的模板可以是任何字符串
第3个参数 第3个参数告诉JMeter使用第几次匹配;测试人员的正则表达式可能会找到多个匹配项,对此,有4种选择 :【1、】整数,直接告诉JMeter使用第几个匹配项。 “1”对应第一个匹配,“2”对应第二个匹配,以此类推【 2、】RAND,告诉JMeter随机选择一个匹配项 【 3、】ALL,告诉JMeter使用所有匹配项,为每一个匹配项创建一个模板字符串,并将它们连接在一起 【4、】浮点值0到1之间,根据公式(找到的总匹配数目*指定浮点值)计算使用第几个匹配项,计算值向最近的整数取整 否,默认值该是 1
第4个参数 如果在上一个参数中选择了“ALL”,那么这第4个参数会被插入到重复的模板值之间
第5个参数 如果没有找到匹配项返回的默认值
第6个参数 可以指定一个引用名;在函数执行以后,可以使用用户定义值的语法来获取同样的值。例如,如果输入"refName"作为第6个参数,那么可以使用:【1】${refName}来引用第2个参数(Template for the replacement string)的计算结果,这依赖于函数的解析结果;【2】${refName_g0}来引用函数解析后发现的所有匹配结果;【3】${refName_g1}来引用函数解析后发现的第一个匹配组合;【4】${refName_g#}来引用函数解析后发现的第n个匹配组合;【5】${refName_matchNr}来引用函数总共发现的匹配组合数目;
第7个参数 输入变量名称。如果指定了这一参数,那么该变量的值就会作为函数的输入,而不再使用前面的采样结果作为搜索对象
image.png

其中:

CSV file to get values from |*alias:| 要读取的文件路径,为绝对路径|
CSV文件列号| next| alias:从第几列开始读取,注意第一列是0 ,第二列是1,依此类推。“next”为走到文件的下一行。alias为打开
一个文件,并给它分配一个别名

使用*ALIAS特性可以多次打开同一个文件,另外还能缩减文件名称
每一个线程都有独立的内部指针指向文件数组中的当前行;当某个线程第一次引用文件时,
函数会为线程在数组中分配下一个空闲行。如此一来,任何一个线程访问的文件行,
都与其他线程不同(除非线程数大于数组包含的行数)。
默认下,函数会在遇到每一个逗号处断行;如果希望在输入列中使用逗号,
那么需要换一个分隔符(设置属性csvread.delimiter实现),
且该符号没有在CSV文件任何列中出现。
image.png
函数参数 描述 是否必需
最小值 最小数值
最大值 最大数值
变量名 重用函数计算值的引用名

注意:当我们设置的线程数超过随机数范围时,随机数将会重复生成

image.png
函数参数 描述 是否必需
文件名 文件名(可以使用相对于JMeter启动目录的相对路径)
变量名 一个引用名(refName)的目的是复用这一函数创建的值。可以使用语法${refName}来引用函数创建的值。默认值为“StringFromFile_”
初始序列号 初始序列号(如果省略这一参数,终止序列号会作为一个循环计数器
终止序列号 终止序列号(如果省略这一参数,序列号会一直增加下去,不会受到限制)

注意:当线程组大于(文件行数)时,将只会执行(文件行数)次——终止序列号,而不会循环读取执行所有的设定线程组数,没有指定读取次数,则默认会循环读取数据

image.png
函数参数 描述 是否必需
JavaScript代码片段 待执行的JavaScript代码片段,例如:【1】new Date():返回当前日期和时间【2】Math.floor(Math.random()(${maxRandom}+1)):在0和变量maxRandom之间的随机数【3】${minRandom}+Math.floor(Math.random()(${maxRandom}-${minRandom}+1)):在变量 minRandom和maxRandom之间的随机数"${VAR}"=="abcd"
变量名 重用函数计算值的引用名
函数__javaScript可以用来执行JavaScript代码片段(非Java),并返回结果值。
JMeter的_javaScript函数会调用标准的JavaScript解释器JavaScript会作为脚本语言使用,
因此测试人员可以做相应的计算。

在脚本中可以访问如下一些变量。
Log:该函数的日志记录器。
Ctx:JmeterContext对象。
Vars:JmeterVariables对象。
threadName:字符串包含当前线程名称 (在2.3.2 版本中它被误写为"theadName")。
sampler:当前采样器对象(如果存在)。
sampleResult:前面的采样结果对象(如果存在)。
props:JMeter属性对象。
Rhinoscript允许通过它的包对象来访问静态方法。
例如,用户可以使用如下方法访问JMeterContextService静态方法:
Packages.org.apache.jmeter.threads.JMeterContextService.getTotalThreads()
JMeter不是一款浏览器,它不会执行从页面下载的JavaScript。
image.png
函数参数 描述 是否必需
BeanShell脚本 一个BeanShell脚本(不是文件名)
变量名 重用函数计算值的引用名
该函数允许用户运行一段自定义的BeanShell函数,脚本可以用来设置JMeter的属性和参数值,
也可以返回数据。BeanShell是一种非常灵活的脚本方式。
需要注意,测试脚本中每一个独立出现的函数调用,都会使用不同的解释器,
但是后续对函数调用的援引会使用相同的解释器;这就意味着变量会持续存在,并跨越函数调用
单个函数实例可以从多个线程调用。另外,该函数的execute()方法是同步的。
如果定义了属性"beanshell.function.init",那么它会作为一个源文件传递给解释器。
这样就可以定义一些通用方法和变量。
在bin目录中有一个初始化文件的例子:BeanShellFunction.bshrc。
如下变量在脚本执行前就已经设置:
log:函数BeanShell(*)的记录器;

ctx:目前的JMeter Context变量;

vars:目前的JMeter变量;

props:JMeter属性对象;

threadName:线程名(字符串);

sampler:当前采样器(如果存在);

sampleResult:当前采样器(如果存在);

"*"意味着该变量在JMeter使用初始化文件之前就已经设置了。
其他变量在不同调用之间可能会发生变化;
image.png
函数参数 描述 是否必需
第1个参数 True,如果希望每个虚拟用户的计数器保持独立,与其他用户的计数器相区别;false,全局计数器;
第2个参数 重用计数器函数创建值的引用名。可以这样引用计数器的值:${refName}。这样一来,就可以创建一个计数器后,在多个地方引用它的值
每次调用计数器函数都会产生一个新值,从1开始每次加1。
计数器既可以被配置成针对每个虚拟用户是独立的,也可以被配置成所有虚拟用户公用的。
如果每个虚拟用户的计数器是独立增长的,那么通常被用于记录测试计划运行了多少遍。
全局计数器通常被用于记录发送了多少次请求,
计数器使用一个整数值来记录,允许的最大值为2,147,483,647
全局计数器(FALSE)每个计数器实例都是独立维护的
image.png
函数参数 描述 是否必需
格式 设置时间所采用的格式
变量名 待设置变量名
函数__time可以通过多种格式返回当前时间
如果省略了格式字符串,那么函数会以毫秒的形式返回当前时间。
其他情况下,当前时间会被转成简单日期格式。包含如下形式:

YMD = yyyyMMdd;

HMS = HHmmss;

YMDHMS = yyyyMMdd-HHmmss;

USER1 = JMeter属性time.USER1;

USER2 = JMeter属性time.USER2;

用户可以通过修改JMeter属性来改变默认格式,例如:time.YMD=yyMMdd。

总结

我参考资料总结了常用的几个函数,仔细写明,方便自己以后参考
【参考资料】(http://www.cnblogs.com/imyalost/p/6802173.html

上一篇下一篇

猜你喜欢

热点阅读