我们在使用Jmeter录制脚本后,经常会对已录制的脚本进行修改,需要把一些参数使用一些变量替代,Jmeter是支持这些功能的,不过是通过函数实现的。下面举一个简单的例子,使用随机数替代一个参数:
打开录制好的脚本,点击Jmeter的“选项”,选择“函数助手对话框”(或者使用快捷键“Ctrl+F”),在“选择一个功能”的下拉框中选择“_Random”,然后在“函数参赛”中会出现三个参数有用户来设置,第一个参数是“一个范围内的最小值”,即所要取的随机数的最小值,我们设置成1;第二个参数是“一个范围内的最大值”,即所要取的随机数的最大值,我们设置成100;第三个参数是“函数名称”,即用于存储在测试计划中其他的方式使用的值,我们设置成Random。设置好上面的三个参数后,点击“生成”按钮,这样就会在对话框的最下面生成一个字符串 “${__Random(1,100,Random)}”,然后我们找到要替换的参数,把它的值换成前面生成的字符串就可以了,然后每次运行的时候,这个参数会变成一个1到100之间的随机数。
我们在上个例子中可以看到Jmeter提供了很多函数,能满足咱们在测试中的大多数需要,下面来讨论几个常用的函数。
_StringFromFile
这个函数是从一个文件中取到一个字符串,这个函数和LoadRunner中的File变量差不多,不过LoadRunner可以直接从数据库中查询记录,自动生成文件,而Jmeter需要我们借助第三方工具生成文本文件(我们可以通过数据库查询工具查出结果,然后拷贝到一个文本文件中,这样就是40万人民币的软件和免费软件之间的差别,嘿嘿)。生成文本文件后就可以设置这个函数的参数了,参数分别是“输入文件的全路径”,“函数名 称”,“Start file sequence number”,Final file sequencenumber”。第一个参数就是咱们前面生成的文件的完整路径,即文件路径+文件名.扩展名(文件路径可以写成相对路径或绝对路径)。第二个参数是用于存储在测试计划中其他的方式使用的值(其实我也一直不明白这个参数的用处,不设置有些函数也能正常使用,不过最好还是随便设置一下吧,因为还有一些函数不能缺省)。第三和第四个参数的用途有两个,如果一起使用可以从多个文件中读取字符串。如果只使用第四个参数则表示对同一个文件读取多次。
例如:${_StringFromFile(test#'.'txt,,1,2)}(注意哦,这里的test#'.'txt点号是用单引号括起来的) 可以读取test1.txt和test2.txt,多线程使用时,从test1的第一条记录开始读取,test1的记录读取完成后,自动从test2.txt的第一行继续读取。
${_StringFromFile(test1.txt,,,2)} 读取test.txt两次,多线程使用时,从test1的第一条记录开始读取,test1的记录读取完成后,再次返回test1.txt的第一行继续读取。以上两种情况时,如果文件中数据读取完成,则循环会自动终止。
_counter
这个函数是一个计数器,用于统计函数的使用次数,它从1开始,每调用这个函数一次它就会自动加1,它有两个参数,第一个参数是布尔型的,只能设置成“TRUE”或者“FALSE”,如果是TRUE,那么每个用户有自己的计数器,可以用于统计每个线程歌执行了多少次。如果是FALSE,那就使用全局计数器,可以统计出这次测试共运行了多少次。第二个参数是“函数名称”。
_javaScript
我个人认为这个函数是最好用的函数,通过它能使用JavaScript所支持的所有函数,比如当前的系统日期,系统时间等,它的参数也有两个,第一个是“JavaScript. expression to evaluate”,这个参数是JavaScript的语句表达式,我们可以输入任何的JavaScript支持语句,调用JavaScript自带的函数(可惜不能使用自己写的JavaScript函数,有点遗憾)。第二个参数是“函数名称”。
_threadNum
这个函数没有任何参数,它用于得到当前运行的线程编号。
_machineName
这个函数用于返回当前的主机名,有一个参数,是“函数名称”。
_log
用于记录日志, 它可以将一条信息记录到指定的日志文件中,并返回所记录的信息。它有三个参数。第一个是“String to be logged”,即要记录到日志文件中的内容。第二个是“Log level”,即日志的等级,这个参数只能设置成OUT, ERR, DEBUG, INFO,WARN or ERROR,如果这个参数不设置,函数默认为“INFO”。第三个参数是“Throwable text”,即要抛出的文本信息,如果不设置,函数会抛出Java自定义的异常。
_logn
这个函数和_log
的功能一样,参数和使用都完全相同,唯一个差别在于_log
会返回记录到日志中的信息,而_logn不返回任何信息。
_intSum
用于计算多个整数的和,可以是计算正整数和负整数的和,它有N个参数,最少有3个参数,最多不限。最后一个参数是函数名称,前面的其它参数是要求和的整数。这个函数在函数对话框中只显示3个参数,如果要计算多个整数,可以通过添加参数实现,不过最后一个参数一定是函数名称。