Jmeter经常使用函数

1、_csvRead 函数

_cvsRead函数是从外部读取参数,csvRead函数能够从一个文件中读取多个参数。 java

步骤:web

一、先新建一个文件,例如c.txt,里面的数据存放为正则表达式

   web@qq.com,111111apache

   col@qq.com,111111浏览器

   mon@qq.com,111111服务器

为使用的用户名和密码,也能够加其余参数,用逗号隔开,每一列表示一种参数,每一行则表示一组参数网络

二、在jmeter中的【选项】中选择【函数助手对话框】,将会弹出以下对话框:多线程

其中:dom

CSV file to get values from | *alias:要读取的文件路径,为绝对路径 函数

CSV文件列号| next| *alias:从第几列开始读取,注意第一列是0 

如上图所示,咱们读取的是c.txt里面的第一列用户名(若是要读取第二列的密码,只需将0改为1便可,日后类推),点击【生成】按钮便可生成函数,咱们使用时即拷贝生成的函数字符串:${__CSVRead(E:\c.txt,0)}

三、使用以下图所示:

 

其中的值即为咱们的生成的函数(${__CSVRead(E:\c.txt,0)}),jmeter执行时,若是是多线程,则从c.txt中第一行开始读取,若是设置的线程数大于c.txt中的行数,将会循环读取数据,一般该行数可用于参数化。

 

使用过程当中的问题及解决方法:

在使用_cvsRead函数时,第一行的内容前面会出现一串字符,以下:

这个时候,只要将txt文件的格式保存为ANSI/ASCII便可。

2、_Random 函数

_Random函数是从某数据段随机读取数据替换参数,当须要添加多条数据记录且某些字段须要惟一性时使用,使用该函数随机生成的数据是数字。

步骤:

一、在jmeter中的【选项】中选择【函数助手对话框】,将会弹出以下对话框:选择_Random

如上图:

一个范围内的最小值:即咱们所要取的随机数的最小值,上述设置为1,生成的随机数将不会小于1

一个范围内容许的最大值:即咱们所要取的随机数的最大值,上述设置为100,生成的随机数将不能超过100

Name of variable in which to store the result(optional)为函数名称名称:这里咱们设置为random,即用于存储在测试计划中其余的方式使用的值 

点击【生成】按钮便可获得咱们所须要的函数:${__Random(1,100,random)},而后将函数复制到须要用到随机数的地方,咱们就可使用啦。

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

二、使用以下图所示:

将生成的函数填充进值框中便可

3、_ StringFromFile 函数

_StringFromFile函数是从一个文件中读取一个字符串,用来实现参数化,若是读取或者打开这个文件发生错误时,将会返回“**ERR** ”字符串

步骤:

一、在jmeter中的【选项】中选择【函数助手对话框】,将会弹出以下对话框:选择_StringFromFile

输入文件的全路径:输入读取文件的绝对路径

Name of variable in which to store the result:函数名称(只是用来存储变量的名称,不能够${名称}使用)

Start file sequence number:初始序列号

Final file sequence number:结束序列号

上图所示表示:若是目录下面有test2.dat、test3.dat、test4.dat,则按顺序读取这三个文件中的每行值,其中初始序列号表示文件后面的开始序号,若是有test1.dat文件将不会被读取,结束序列号类推(至于为何会有这个看起来彷佛是多余的功能,而不是直接所有写到一个文件里,猜测有多是在数据过多的时候,避免一个文件太大或者是他们的习惯?)。

另外使用的时候,我循环了10次,可是这三个文件我只设置了9行值,结果点击运行,显示只执行了9次,而不会循环从第一个文件中读取。

固然,若是你就只是想读取一个文件,直接在【输入文件的全路径】后面输入文件的路径便可,其他三个值不用填写,点击生成便可同样调用

若是但愿让文件执行屡次,能够按以下配置:

表示test.dat文件将会被读取4次

当线程组大于(文件行数*4)时,将只会执行(文件行数*4)次,而不会循环读取执行全部的设定线程组数,没有指定读取次数,则默认会循环读取数据

二、引用函数:

 

4、_Counter 函数

每次调用计数器函数都会产生一个新值,从1开始每次加1。计数器既能够被配置成针对每一个虚拟用户是独立的,也能够被配置成全部虚拟用户公用的。若是每一个虚拟用户的计数器是独立增加的,那么一般被用于记录测试计划运行了多少遍。全局计数器一般被用于记录发送了多少次请求。

计数器使用一个整数值来记录,容许的最大值为2,147,483,647。

功能:这个函数是一个计数器,用于统计函数的使用次数,它从1开始,每调用这个函数一次它就会自动加1,它有两个参数,第一个参数是布尔型的,只能设置成“TRUE”或者“FALSE”,若是是TRUE,那么每一个用户有本身的计数器,能够用于统计每一个线程歌执行了多少次。若是是FALSE,那就使用全局计数器,能够统计出此次测试共运行了多少次。第二个参数是“函数名称”

格式:${__counter(FALSE,test)}

使用:咱们将“_counter”函数生成的参数复制到某个参数下面,若是为TRUE格式,则每一个线程各自统计,最大数为循环数,若是为FALSE,则全部线程一块儿统计,最大数为线程数乘以循环数

参数:

第一个参数:True,若是测试人员但愿每一个虚拟用户的计数器保持独立,与其余用户的计数器相区别。False,全局计数器

第二个参数:重用计数器函数建立值的引用名。测试人员能够这样引用计数器的值:${test}。这样一来,测试人员就能够建立一个计数器后,在多个地方引用它的值。

以上,摘自网络(不知道怎么用,只好摘抄,记录下来等灵感~~~~(>_<)~~~~ )。

目前,我测试_Counter函数,就是在参数列表加一个参数,值填写为${__counter(FALSE,test)}

如图:



如上,设置为false,那么发送了多少个请求,counter1的最大值就等于最大请求数。

想知道counter1的值,能够经过结果树查看。

5、_RegexFunction 正则函数

    正则表达式函数可使用正则表达式(用户提供的)来解析前面的服务器响应(或者是某个变量值)。函数会返回一个有模板的字符串,其中携带有可变的值。

   _RegexFunction还能够被用来保存值,以便供后续使用。具体的引用名是函数的第6个参数。在函数执行后,测试人员可使用用户定义值的语法来获取一样的值。

例如,若是测试人员输入“refName”昨晚第6个参数,那么测试人员可使用:

 ${refName}来引用第二个参数的结果,即函数运行的结果。

 ${refName_g0}来引用函数解析后发现的全部匹配结果。

 ${refName_g1}来引用函数解析后发现的第一个匹配组合。

 ${refName_g#}来引用函数解析后发现的第N个匹配组合。

 ${refName_matchNr}来引用函数总共发现的函数匹配组合的数目。

参数:

第一个参数:用于解析服务器响应数据的正则表达式。它会找到全部的匹配项。若是测试人员但愿将表达式中的某部分应用在模板字符串中,记得加上圆括号。例如,<a href="(.*)">。这样就会将连接的值存放到第一个匹配组合中(这里只有一个匹配组合)。又如,<input type="hidden" name="(.*)"value="(.*)">。在这个例子中,连接的name做为第一个匹配组合,连接的value会做为第二个匹配组合。这些组合能够用在测试人员的模板字符串中

第二个参数:这是一个模板字符串,函数会动态填写字符串的部份内容。要在字符串中引用正则表达式捕获的匹配组合,请使用语法:$[group_number]$。例如$1$或者 $2$。测试人员的模板能够是任何字符串

第三个参数:第3个参数告诉JMeter使用第几回匹配。测试人员的正则表达式可能会找到多个匹配项。对此,测试人员有4种选择:

 

                一、整数,直接告诉JMeter使用第几个匹配项。 “1”对应第一个匹配,“2”对应第二个匹配,以此类推 

 

                二、RAND,告诉JMeter随机选择一个匹配项 

 

                三、ALL,告诉JMeter使用全部匹配项,为每个匹配项建立一个模板字符串,并将它们链接在一块儿 

 

                四、浮点值0到1之间,根据公式(找到的总匹配数目*指定浮点值)计算使用第几个匹配项,计算值向最近的整数取整

第四个参数:若是在上一个参数中选择了“ALL”,那么这第4个参数会被插入到重复的模板值之间

第五个参数:若是没有找到匹配项返回的默认值

第六个参数:重用函数解析值的引用名,参见上面内容

第七个参数:输入变量名称。若是指定了这一参数,那么该变量的值就会做为函数的输入,而再也不使用前面的采样结果做为搜索对象

以上摘自温素剑的《零成本实现Web性能测试:基于Apache JMeter》。

步骤:

一、在jmeter中的【选项】中选择【函数助手对话框】,将会弹出以下对话框:选择_RegexFunction

参数的介绍见上文。

如上,在【 class="text have_icon" name="(.*)" id="email"】里面,获得到第一个匹配的name的值,若是没有找到匹配的,获得的值就为hello

如上,咱们应该匹配获得的值为:EMAIL

使用:

查看是否成功:

记得上面咱们设定的第5个参数吗?若是没有在响应数据里面找到匹配的,返回的值就为咱们制定的hello,以下:

若是该正则函数在前面已经使用过,咱们在后面就能够用咱们指定的第6个参数的值来引用该函数获得函数解析的结果啦:

 

6、_javaScript函数

函数__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。

参数:

第一个参数:JavaScript代码片断,待执行的JavaScript代码片断。例如:

 

                一、new Date():返回当前日期和时间

 

                二、 Math.floor(Math.random()*(${maxRandom},+1)):在0 和变量maxRandom之间的随机数

 

                三、${minRandom}+Math.floor(Math.random()*(${maxRandom}-${minRandom}+1)):在变量 minRandom和maxRandom之间的随机数"${VAR}"=="abcd"

第二个参数:变量名,重用函数计算值的引用名

请记得为文本字符串添加必要的引号。另外,若是表达式中有逗号,请确保对其转义。例如,${__javaScript('${sp}'.slice(7\,99999))},对7以后的逗号进行了转义。

摘自《零成本实现Web性能测试:基于Apache JMeter》 。

步骤:

一、在jmeter中的【选项】中选择【函数助手对话框】,将会弹出以下对话框:选择__javaScript

这是获得当前日期,引用:

获得结果日期:

第二个参数是变量名,当该函数被执行一次以后,咱们就能够根据变量名引用该函数,获得函数解析的值:

相关文章
相关标签/搜索