性能测试之JMeter函数助手详解

1、函数助手介绍

在性能测试过程中,为了模拟真实的用户,往往我们需要让提交的表单内容每次都发生变化,这个过程叫做参数化。

JMeter中的配置元件与前置处理器都能帮助我们实现参数化,为了能够更好的帮助我们进行参数化,JMeter提供了一组函数来帮助我们生成需要的数据,这些函数在函数助手面板进行选择和编辑。

当然函数助手的功能不仅仅是进行参数化,还可以帮我们进行字符编码,格式转化,获取运行时参数等功能。

2、函数助手中的函数分类

JMeter中大概分为七个类型的函数:

(1)信息类

主要用于获取一些常用的基本信息或是日志输出控制。

  1. __threadnum函数:只是简单地返回当前线程的编号。
  2. __samplerName函数:获取当前请求的名称。
  3. __machineIP函数:获取本机的IP地址。
  4. __machineNmae函数:返回本机的主机名。
  5. __time函数:可以通过多种格式返回当前时间。
  6. __log函数:会记录一条日志,并返回函数的输入字符串。
  7. __logn函数:会记录一条日志,并返回空字符串。
  8. __TestPlanName函数:获取当前测试计划。

(2)输入类

主要用于从外部文件读取数据,进行参数化。即:用于读取文件。

  1. __StringFromFile函数:可以被用来从文本文件中读取字符串,这对需要大量可变数据的测试很有用。
  2. __FileToString函数:可以被用来读取整个文件。每次对该函数的调用,都会读取整个文件。
  3. __CSVRead函数:会从CSV文件读取一个字符串(请注意与StringFromFile 的区别)。
  4. __XPath函数:读取XML文件,并在文件中寻找与指定XPath相匹配的地方。每调用函数一次,就会返回下一个匹配项。到达文件末尾后,会从头开始。

(3)计算类

用于计数、求和等操作。

  1. __counter函数:每次调用计数器函数都会产生一个新值,从1开始每次加1。
  2. __intSum函数:可以被用来计算两个或者更多整数值的和。
  3. __longSum函数:可以被用来计算两个或者更多长整型值的合。
  4. __Random函数:会返回指定最大值和最小值之间的随机数。
  5. __RandomFromMultipleVars函数:从一组数据中提取一个数据。
  6. __RandomString函数:生成随机字符串。
  7. __UUID函数:生成随机的唯一的UUID。

Jmeter高级性能测试实战icon-default.png?t=LA92https://edu.csdn.net/course/detail/35834

(4)脚本类

主要用于调用外部脚本或是解析执行脚本,例如:groovy、beanshell等 。

  1. __groovy函数:执行groovy脚本。会执行传递给它的脚本,并返回结果。
  2. __BeanShell函数:会执行传递给它的脚本,并返回结果。
  3. __javaScript函数:可以用来执行JavaScript代码片段(非Java),并返回结果值。
  4. __jexl2函数:可以用于执行JEXL2表达式,并返回执行结果。
  5. __jexl3函数:可以用于执行JEXL3表达式,并返回执行结果。

(5)属性类

用于读取和设置JMeter的配置。

  1. __property函数:会返回一个JMeter属性的值。如果函数找不到属性值,而又没有提供默认值,则它会返回属性的名称。
  2. __P函数:是一个简化版的属性函数,目的是使用在命令行中定义的属性。不同于函数__property,本函数没有提供选项用于设置保存属性值的变量。
  3. __setProperty函数:用于设置JMeter属性的值。函数的默认返回值是空字符串,因此该函数可以被用在任何地方,只要对函数本身调用是正确的。

(6)变量类

对变量进行操作,主要用于验证变量表达式引用是否正确。

  1. __split函数:会通过分隔符来拆分传递给它的字符串,并返回原始的字符串。如果分隔符紧挨在一起,那么函数就会以变量值的形式返回"?"。
  2. __V函数:可以用于执行变量名表达式,并返回执行结果。
  3. __eval函数:可以用来执行一个字符串表达式,并返回执行结果。如此一来,用户就可以对字符串中的变量和函数引用做出修改。
  4. __evalVar函数:可以用来执行保存在变量中的表达式,并返回执行结果。

(7)字符串类

用于对字符串的处理操作。

  1. __regexFunction函数:正则表达式函数可以使用正则表达式(用户提供的)来解析前面的服务器响应(或者是某个变量值),函数会返回一个有模板的字符串,其中携带有可变的值。还可以被用来保存值,以便供后续使用。
  2. __escapeOroRegexpChars函数:将一些Java正则表达式引擎不识别的正则式进行转换,转换过程中使用了ORO正则表达式库,这个库也支持Perl5兼容的正则表达式语法。(Perl是一种高级、通用、直译式、动态的脚本语言,内部集成了正则表达式的功能)
  3. __char函数:会将一串数字转换成Unicode字符。
  4. __unescape函数:用于反转义Java-escaped字符串。
  5. __unescapeHtml函数:用于反转义一个包含HTML实体的字符串,将其变为包含实际Unicode字符的字符串。
  6. __escapeHtml函数:用于转义字符串中的字符(使用HTML实体)。即:使用html coding编码目标字符串。
  7. __escapeXml函数:使用XML coding编码目标字符串。
  8. __urldecode函数:urlcode解码。
  9. __urlencode函数:编码为urlcode。

3、常用函数介绍

(1)__Random函数

__Random函数会返回指定最大值和最小值之间的随机数。

参数如下表所示:

函数参数描述是否必需
最小值最小数值
最大值最大数值
变量名重用函数计算值的引用名

界面如下图:

提示:__RandomString函数使用同理。

(2)__counter函数

每次调用计数器函数都会产生一个新值,从1开始每次加1。

计数器函数既可以被配置成针对每个虚拟用户是独立的,也可以被配置成所有虚拟用户公用的。

如果每个虚拟用户的计数器是独立增长的,那么通常被用于记录测试计划运行了多少遍。

全局计数器通常被用于记录发送了多少次请求,计数器使用一个整数值来记录,允许的最大值为2,147,483,647

计数器函数界面如下:

 

 

说明:

  • 第一个参数:必须填写
    True:希望每个虚拟用户的计数器保持独立,与其他用户的计数器相区别。
    False:全局计数器。
  • 第二个参数:非必须填写
    定义计数器函数创建值的引用名。可以这样引用计数器的值:${refName}
    这样一来,就可以创建一个计数器后,在多个地方引用它的值。

(3)__time函数

__time函数可以通过多种格式返回当前时间。

参数如下表所示:

__machineName函数

__machineName函数返回本机的主机名。

参数如下表所示:

函数参数描述是否必需
变量名函数计算值的引用名

说明:

如果省略了格式字符串,那么函数会以毫秒的形式返回当前时间。

其他情况下,当前时间会被转成简单日期格式,包含如下形式:

  • YMD = yyyyMMdd
  • HMS = HHmmss
  • YMDHMS = yyyyMMdd-HHmmss
  • USER1 = JMeter属性time.USER1
  • USER2 = JMeter属性time.USER2

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

(4)__property函数

__property函数会返回一个JMeter属性的值。如果函数找不到属性值,而又没有提供默认值,则它会返回属性的名称。

参数如下表所示:

函数参数描述是否必需
属性名获取属性值、所需的属性名
变量名重用函数计算值的引用名
默认值属性未定义时的默认值

函数参数

描述是否必需
格式设置时间所采用的格式
变量名待设置变量名

4、总结

本篇文章中不演示每个函数的具体用法,因为函数具体的引用方式都相同,例如${函数名(具体参数)}

如果需要了解JMeter中函数助手的具体使用示例,请参考上一篇文章【使用函数助手实现参数化】。

Jmeter高级性能测试实战icon-default.png?t=LA92https://edu.csdn.net/course/detail/35834

  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

传说三哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值