JMeter函数和变量11
前言
在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配置
- 变量类: 用于对变量进行操作
- 字符串类: 用于字符串处理
信息类
主要用于获取一些常用的基本信息或是日志输出控制。

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

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

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

属性类
用于读取和设置jmeter配置

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

字符串类
用于字符串操作

必须掌握的函数
在上述内容中,并没有把所有的函数都一一列出来,但基本把个大类中主要的函数都已列出,需要大家对其有个基本印象,知道有哪些内置函数,这些函数能解决什么问题,以便在实际项目中走太多弯路。
下面把笔者在实际项目中常用的函数重点列出来。我想这也是大家在项目中常用的,也是重点掌握的,必须熟练能熟练的应用。
注:在本篇中不进行示例讲解,后续实战专题在分享。
从文件读取数据,进行参数化
- StringFromFile
- CSVRead
- XPath
脚本支持
- BeanShell(推荐这个)
- groovy
随机数据生成
- RandomString
- UUID
字符串处理
- urldecode
- urlencode
- char
注:并不是其他函数不重要,而是上述函数是笔者日常项目实践中用得最为频繁,建议必须掌握的。
总结
本文就jmeter函数和变量进行了分享,这是进一步掌握jmeter必备的技能。也是在项目实践中进行参数化、关联必备的技能。对于所有函数要做到心中有数,对于关键重点的函数要做到随时会用,灵活应用