分享

JMeter函数和变量11

 开源优测 2021-12-09

前言

在jmeter中提供了功能强大的内置函数来帮助我们处理字符串、文件读写、计算、运行外部脚本等等能力。

要想在项目中切实运用来jmeter完成复杂的压测场景,函数和变量是必须掌握的高阶能力。

下面我们就函数和变量进行一一讲解。

函数

我们在哪可以知道jmeter支持哪些函数呢?通过在菜单 “选项” -> "函数助手对话框" 即可打开函数助手。

通过函数助手,我们可以快速的填充对应的参数来生成我们所需要的函数。

下面我们看一下函数调用示例说明:

${__functionName(param1, param2, param3)} 说明: functionName:  指jmeter内置函数名称
param1, param2, param3: 指该函数调用时需要传入的参数

变量

在使用变量前,必须先定义变量,而定义变量有两个地方。

方式一是在测试计划的用户定义的变量处进行定义,如下图

方式二是“配置元件”中的“用户定义的变量”来进行定义,入下图

定义了变量,怎么引用呢? 下面我们展示下引用格式:

${VARIABLE}VARIABLE: 定义的变量名称 引用前面定义的username、password则是

${username}
${password}

同样的道理,引用用户定义的变量组件中定义的host、port、count则是

${host}
${port}${count}

下面我们看下如何把函数和变量结合一起应用的简单示例,如下图所示,先定义变量:

使用前面定义的变量,来参数化,HTTP请求相关参数:

看下请求结果:

函数列表

下面我们看下jmeter提供的所有内置函数的功能说明及使用示例。

总计七大类型。类型如下:

  • 信息类: 用于读取线程、请求名等

  • 输入类: 用于读取文件等

  • 计算类: 用于计数、求和等

  • 脚本类: 用于运行各类脚本,例如groovy、beanshell等等

  • 属性类: 读取或设置jmeter配置

  • 变量类: 用于对变量进行操作

  • 字符串类: 用于字符串处理

信息类

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

序号函数名描述
1threadNum获取线程数
2samplerName获取当前请求的名称(标签)
3machineIP获取本机的IP地址
4machineName获取本机的名称
5time返回指定格式的当前时间
6log日志输出,并返回它的输入字符串
7logn日志输出,并返回空字符串

输入类

主要用于从外部文件读取数据,进行参数化或是说关联

序号函数名描述
1StringFromFile从文件读取一行数据
2FileToString读取整个文件数据
3CSVRead读取csv格式文件数据
4XPath使用xpath读取xml文件中的数据

计算类

主要用于计算或是随机生成数据

序号函数名描述
1counter生成一个自增数
2intSum整数求和
3longSum长整数求和
4Random生成一个随机数
5RandomFromMultipleVars从一组数据中提取一个数据
6RandomString生成随机字符串
7UUID生成随机的唯一的UUID

脚本类

主要用于调用外部脚本或是解析执行脚本

序号函数名描述
1groovy执行groovy脚本
2BeanShell执行BeanShell脚本
3javaScript执行javascript脚本
4jexl2执行jexl2表达式
5jexl3执行jexl3表达式

属性类

用于读取和设置jmeter配置

序号函数名描述
1property读取属性值
2P读取属性值(property简写方法)
3setProperty设置属性值

变量类

主要用于验证变量表达式引用是否正确

序号函数名描述
1split通过分隔符来拆分传递给它的字符串,并返回原始的字符串。
2V执行变量名表达式并返回结果
3eval执行字符串表达式,并返回结果
4evalVar执行保存在变量中的表达式,并返回结果

字符串类

用于字符串操作

序号函数名描述
1regexFunction使用正则表达式来解析之前的响应内容
2escapeOroRegexpChars用于转义正则表达式中的字符
3char将一串数字转换成unicode字符值,并返回
4unescape用于反转义java-escape字符串,并返回
5unescapeHtml解码hmlt-encoded字符串
6escapeHtml使用html coding编码目标字符串
7escapeXml使用xml coding编码目标字符串
8urldecode解码Application/x-www-form-urlencoded字符串
9urlencode将字符串编码为Application/x-www-form-urlencoded格式
10TestPlanName获取当前测试计划名称

必须掌握的函数

在上述内容中,并没有把所有的函数都一一列出来,但基本把个大类中主要的函数都已列出,需要大家对其有个基本印象,知道有哪些内置函数,这些函数能解决什么问题,以便在实际项目中走太多弯路。

下面把笔者在实际项目中常用的函数重点列出来。我想这也是大家在项目中常用的,也是重点掌握的,必须熟练能熟练的应用。

注:在本篇中不进行示例讲解,后续实战专题在分享。

从文件读取数据,进行参数化

  • StringFromFile

  • CSVRead

  • XPath

脚本支持

  • BeanShell(推荐这个)

  • groovy

随机数据生成

  • RandomString

  • UUID

字符串处理

  • urldecode

  • urlencode

  • char

注:并不是其他函数不重要,而是上述函数是笔者日常项目实践中用得最为频繁,建议必须掌握的。

总结

本文就jmeter函数和变量进行了分享,这是进一步掌握jmeter必备的技能。也是在项目实践中进行参数化、关联必备的技能。对于所有函数要做到心中有数,对于关键重点的函数要做到随时会用,灵活应用

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多