在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提供的所有内置函数的功能说明及使用示例。
总计七大类型。类型如下:
主要用于获取一些常用的基本信息或是日志输出控制。
序号 | 函数名 | 描述 |
---|---|---|
1 | threadNum | 获取线程数 |
2 | samplerName | 获取当前请求的名称(标签) |
3 | machineIP | 获取本机的IP地址 |
4 | machineName | 获取本机的名称 |
5 | time | 返回指定格式的当前时间 |
6 | log | 日志输出,并返回它的输入字符串 |
7 | logn | 日志输出,并返回空字符串 |
主要用于从外部文件读取数据,进行参数化或是说关联
序号 | 函数名 | 描述 |
---|---|---|
1 | StringFromFile | 从文件读取一行数据 |
2 | FileToString | 读取整个文件数据 |
3 | CSVRead | 读取csv格式文件数据 |
4 | XPath | 使用xpath读取xml文件中的数据 |
主要用于计算或是随机生成数据
序号 | 函数名 | 描述 |
---|---|---|
1 | counter | 生成一个自增数 |
2 | intSum | 整数求和 |
3 | longSum | 长整数求和 |
4 | Random | 生成一个随机数 |
5 | RandomFromMultipleVars | 从一组数据中提取一个数据 |
6 | RandomString | 生成随机字符串 |
7 | UUID | 生成随机的唯一的UUID |
主要用于调用外部脚本或是解析执行脚本
序号 | 函数名 | 描述 |
---|---|---|
1 | groovy | 执行groovy脚本 |
2 | BeanShell | 执行BeanShell脚本 |
3 | javaScript | 执行javascript脚本 |
4 | jexl2 | 执行jexl2表达式 |
5 | jexl3 | 执行jexl3表达式 |
用于读取和设置jmeter配置
序号 | 函数名 | 描述 |
---|---|---|
1 | property | 读取属性值 |
2 | P | 读取属性值(property简写方法) |
3 | setProperty | 设置属性值 |
主要用于验证变量表达式引用是否正确
序号 | 函数名 | 描述 |
---|---|---|
1 | split | 通过分隔符来拆分传递给它的字符串,并返回原始的字符串。 |
2 | V | 执行变量名表达式并返回结果 |
3 | eval | 执行字符串表达式,并返回结果 |
4 | evalVar | 执行保存在变量中的表达式,并返回结果 |
用于字符串操作
序号 | 函数名 | 描述 |
---|---|---|
1 | regexFunction | 使用正则表达式来解析之前的响应内容 |
2 | escapeOroRegexpChars | 用于转义正则表达式中的字符 |
3 | char | 将一串数字转换成unicode字符值,并返回 |
4 | unescape | 用于反转义java-escape字符串,并返回 |
5 | unescapeHtml | 解码hmlt-encoded字符串 |
6 | escapeHtml | 使用html coding编码目标字符串 |
7 | escapeXml | 使用xml coding编码目标字符串 |
8 | urldecode | 解码Application/x-www-form-urlencoded字符串 |
9 | urlencode | 将字符串编码为Application/x-www-form-urlencoded格式 |
10 | TestPlanName | 获取当前测试计划名称 |
在上述内容中,并没有把所有的函数都一一列出来,但基本把个大类中主要的函数都已列出,需要大家对其有个基本印象,知道有哪些内置函数,这些函数能解决什么问题,以便在实际项目中走太多弯路。
下面把笔者在实际项目中常用的函数重点列出来。我想这也是大家在项目中常用的,也是重点掌握的,必须熟练能熟练的应用。
注:在本篇中不进行示例讲解,后续实战专题在分享。
从文件读取数据,进行参数化
脚本支持
随机数据生成
字符串处理
注:并不是其他函数不重要,而是上述函数是笔者日常项目实践中用得最为频繁,建议必须掌握的。
本文就jmeter函数和变量进行了分享,这是进一步掌握jmeter必备的技能。也是在项目实践中进行参数化、关联必备的技能。对于所有函数要做到心中有数,对于关键重点的函数要做到随时会用,灵活应用