JMeter函数和变量11

时间:2022-05-07
本文章向大家介绍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配置
  • 变量类: 用于对变量进行操作
  • 字符串类: 用于字符串处理

信息类

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

序号

函数名

描述

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

获取当前测试计划名称

必须掌握的函数

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

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

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

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

  • StringFromFile
  • CSVRead
  • XPath

脚本支持

  • BeanShell(推荐这个)
  • groovy

随机数据生成

  • RandomString
  • UUID

字符串处理

  • urldecode
  • urlencode
  • char

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

总结

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