每周读书与学习-JMeter主要元件详细介绍(二)函数助手

news/2025/10/24 16:48:14/文章来源:https://www.cnblogs.com/laoqing/p/19163388

每周读书与学习是由清华大学出版社出版的《JMeter核心技术、性能测试与性能分析》一书的作者推出,分享作者多年的IT从业经历,希望对很多计算机科学技术IT类专业毕业生以及IT从业者有所帮助。

1、函数助手

函数助手是Jmeter提供的一个非常有用的工具,尤其是在性能测试脚本的编写中,由于经常需要用到一些特有的函数来生成性能测试脚本中需要的数据,函数助手就可以提供这方面的帮助。

函数助手位于Jmeter菜单的工具->函数助手对话框下面,如下图所示,也可以通过快捷键Ctrl+Shift+F1来打开函数助手对话框。

函数助手中包含的常见函数如下,可以从函数助手界面中的下拉框中选择到如下介绍的函数。 

  • BeanShell:使用BeanShell脚本语言来生成BeanShell类型的函数,比如如下图所示,通过BeanShell脚本语言来计算123*456的值,并且将结果赋值给var_beanshell变量的操作,就可以通过函数助手来生成最终的函数表达式为${__BeanShell(123*456,var_beanshell)}。

  • changeCase:用于将一个给定的字符串转换为指定模式(包括UPPER 、LOWER 、CAPITALIZE )下的字符串,比如${__changeCase(string,UPPER,var_result)} 用于将小写的string转换为大写的STRING,并且赋值给var_result这个变量,如下图所示。

  • regexFunction:通常用于通过正则表达式来解析相应的结果字符串。
  • counter:即为计数器,在每次被调用时都会产生一个新的数字,从1开始,每次调用一次就递增加1,计数器支持配置为每个线程用户具有一个自己单独的计数器,也可以配置为多个线程用户共用一个计数器,计数器是通过整形变量来保存的,所以计数器的最大值为2147483647。
  • threadNum:用于返回当前正在执行的线程的编号,在每个线程组中threadNum具有唯一性。
  • threadGroupName:用于返回正在执行的线程组的名称。
  • intSum:用于计算两个或多个整数值的和。
  • longSum:计算两个或多个long型数字(长值)的和,超过整形长度(-2147483648到2147483647的区间内)就应该使用longSum来进行计算。
  • StringFromFile:用于从文本文件中读取字符串,每次调用它时,它都会从文件中读取下一行,并且所有线程用户共享同一个实例,所以每个线程用户都会读取到不同的行,如果当读取到文件末尾的最后一行时,它将会从头开始重新再次读取,需要注意的是如果性能测试脚本中有多个对该函数的引用,即使打开的文件名相同,每个引用也都会独立打开一个文件。
  • machineName:用于返回本地主机名。
  • machineIP:用于返回本地IP地址。
  • javaScript:用于执行一段javaScript脚本并且返回执行后的结果值。
  • Random:用于返回一个介于给定最小值和最大值范围之间的随机数。
  • RandomDate:用于返回一个介于给定开始日期和结束日期值之间的随机日期。
  • RandomString:用于使用指定字符中的字符返回长度为随机的字符串。
  • RandomFromMultipleVars:用于根据源变量提供的变量值返回随机值。
  • UUID:用于返回一个伪随机类型的通用唯一标识符。
  • CSVRead:从CSV文件中读取并返回一个字符串,需要注意的是每个线程用户都有自己的内部指针指向文件数组中的当前行,因此每个线程用户读取到的行数是不一样的。

如下图所示,在C:\data目录下,创建了一个 csv_sample.csv文件,并且该文件中有两列数据。

当使用CSVRead函数来读取csv_sample.csv中的数据时,可以通过如下图所示的方式来读取。

从图中可以看到在用于获取值的CSV文件 | *别名中应该设置csv_sample.csv文件的绝对路径,由于该文件是放在C:\data目录下,所以应该将其绝对路径设置为C:/data/csv_sample.csv。在CSV文件列号| next| *alias中设置需要读取的列号,默认是从0开始,也就是0代表了第一列,所以从图中可以看到当填入0时,The result of the function is 的输出结果为name,而根据上图中可以看到name 刚好是第一列,所以读取的确实就是第一列的数据。在实际使用时可以通过${__CSVRead(C:/data/csv_sample.csv,0)} 读取到第一列第一行的数据,但如果需要读取第一列的下一行的数据,需要通过${__CSVRead(C:/data/csv_sample.csv,0)} ${__CSVRead(C:/data/csv_sample.csv,next)}来进行读取。

由于每个线程用户都有自己的内部指针指向文件数组中的当前行,因此每个线程用户读取到的行数是不一样的,如下图所示,当Jmeter的线程组中存在多个并发线程用户时,使用${__CSVRead(C:/data/csv_sample.csv,0)}读取数据时,每个线程会按照顺序依次从第一行开始读取,第一个线程读取的是第一行,当到第二线程时,读取的就是第二行了。

  • Property:用于返回Jmeter的属性值,需要注意的是如果找不到属性值,并且没有提供默认值,则返回属性名称。
  • log:日志中输出一条消息,并返回其输入字符串。
  • logn:与log函数类似,日志中输出一条消息,并返回其输入字符串。
  • groovy:和BeanShell很类似,使用groovy脚本语言来生成groovy类型的函数,比如如下图所示,通过groovy脚本语言来计算30*40的值,并且将结果赋值给var_groovy变量的操作,就可以通过函数助手来生成最终的函数表达式为${__groovy(30*40,var_groovy)} 。

  • Xpath:用于读取指定的XML文件并匹配Xpath,每次调用函数时,都会返回下一个匹配项,如果没有匹配的节点,则该函数将返回空字符串,并将警告提示消息输出到JMeter日志文件中。
  • setProperty:用于设置JMeter属性的值。
  • time:返回指定格式的当前时间。
  • jexl2:返回jexl(Java Expression Language 的简写,是一种表达型的脚本语言)表达式的求值结果,更多详细介绍可以参考网址:https://commons.apache.org/proper/commons-jexl/。
  • split:根据指定分隔符拆分传递给它的字符串,并返回原始字符串,如下图所示,原始字符串123,456通过指定的逗号进行分割后,会赋值给var变量,然后自动生成三个变量,var_1=123,var_2=45,var=123,456。

  • evalVar:返回对存储在变量中的表达式求值的结果。
  • eval:返回计算字符串表达式的结果。
  • unescape:返回Java转义字符串的求值结果。
  • unescapeHtml:用于将包含HTML实体转义符的字符串解压缩为包含与转义符对应的实际Unicode字符的字符串。
  • escapeHtml:用于返回HTML实体转义字符串中字符。
  • urldecode:用于解码application/x-www-form-urlencoded类型的字符串。
  • urlencode:用于将字符串编码为application/x-www-form-urlencoded类型的字符串。
  • FileToString:用于读取整个文件中的字符串并且返回。
  • samplerName:用于返回当前采样器的名称。
  • TestPlanName:返回当前测试计划的名称。
  • escapeXml:返回XML 1.0实体转义字符串中的字符。
  • timeShift:以给定格式返回日期,并添加指定的秒、分钟、小时、天或月数。
  • digest:返回特定哈希算法中的加密值,该值包含可选的salt、大写字母和变量名。
  • dateTimeConvert:将源格式的日期转换为目标格式,并可选择将结果存储在指定的变量名中。
  • isPropDefined:用于判断指定的属性是否存在,如果存在返回true,否则返回false。
  • isVarDefined:用于判断指定的变量名是否存在,如果存在返回true,否则返回false。
  • StringToFile:用于将指定字符串写入文件,每次调用它时,它都会向文件追加或覆盖一个指定的字符串。

2、本次学习总结

  • 函数助手的使用,函数助手是Jmeter中的一个非常重要且有用的工具,在性能测试脚本编写过程中经常会被使用,在函数助手中提供了大量的已有函数来辅助性能测试脚本编写者生成各种需要的测试数据。

出处:本次学习的内容参考自清华大学出版社出版的《JMeter核心技术、性能测试与性能分析》一书

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/945480.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Launcher 桌面源码笔记一(3D车模桌面)

Launcher 桌面源码笔记一(3D车模桌面)3D车模通过TaskView显示在Launcher,首先需要知道,为什么要用TaskView,而不是Activity,然后在说加载流程 1、surface比activity等效率更高,特别是针对车模跟地图等重量级场景…

Microsoft Visual C++ 运行库安装教程(最新版完整指南|DLL缺失修复方案)

前言 在 Windows 系统中,不论是开发软件、运行大型 3D 游戏,还是使用视频剪辑、图形处理工具,许多人都会遇到这样让人头疼的错误提示: *** 系统缺少 msvcp140.dll** *** 无法启动程序,因为丢失 vcruntime140_1.dl…

2025年BPM系统排名深度测评:5大主流厂商哪家适合你?

在数字化转型加速的商业环境中,企业对业务流程的精细化管理需求日益迫切。BPM系统(业务流程管理系统)作为优化流程、提升效率的核心工具,通过建模、自动化、监控与优化全流程,帮助企业打破信息孤岛、降低运营成本…

2025 年硫酸钡板生产厂家最新推荐排行榜:结合协会测评权威数据,揭晓实力企业高纯度/ct 室/牙科/辐射硫酸钡板公司推荐

引言 在射线防护领域,硫酸钡板的质量与性能至关重要。为给采购方提供可靠参考,本次 2025 年硫酸钡板生产厂家最新推荐排行榜,由中国辐射防护器材协会联合行业专家团队开展测评并发布。测评过程严格遵循《射线防护材…

2025 年最新推荐!软件验收测试公司最新排行榜,揭秘具备 CMA/CNAS 资质的靠谱品牌可靠/权威/知名的软件验收测试公司推荐

引言 据中国软件测评行业协会 2024 年度报告显示,国内软件验收测试机构合规率仅 68%,超三成机构因测评方法不规范导致测试结果偏差率达 15% 以上。在数字化转型加速的当下,科学的测评方法成为保障软件质量的核心。当…

Ollama大模型推理场景下3090和4090性能实测

使用Ollama的快速模型部署,来实测英伟达的RTX 3090和RTX 4090这两张显卡,在大语言模型推理场景中的性能差异。 选择 Qwen3的模型进行测试,考虑到显存都是24GB,分别选择一个FP16精度和一个Q4_K_M量化后的大模型进行…

OSI七层网络参考模型(Leo)

OSI七层网络参考模型层级 说明7. 应用层 对应用程序提供接口6. 表示层 进行数据格式的转换,以确保一个系统生成的应用层数据能够被另外一个系统的应用层所识别和理解。5. 会话层 在通信双方之间建立、管理和终止会话。…

2025 年最新推荐河道护栏源头厂家口碑榜,聚焦全流程服务与高性价比之选铝合金/绳索/不锈钢河道护栏公司推荐

引言 当前河道护栏采购市场存在诸多痛点,给项目方带来极大困扰。部分厂家仅负责生产,安装、物流等后续环节需客户自行对接,不仅增加沟通成本,还易因衔接问题导致工程延期;市场上产品质量参差不齐,劣质材料制成的…

ABP vNext 基础四层

ABP vNext Nuget 包的介绍 ABP Framework(尤其是 ABP vNext)的官方 NuGet 包以 Volo.Abp.XXX 命名,覆盖了框架核心功能、模块、集成组件等多个层面。这些包按功能可分为核心基础设施、应用层组件、数据访问、身份认…

2025 年管道修补器源头厂家最新推荐排行榜:揭秘行业内具备全流程管控能力的靠谱厂商及优质产品选型指南加长/铸铁/弯头/卡箍式管道修补器公司推荐

引言 在工业、市政、化工、水务、能源等领域,管道系统是介质输送的核心 “血管”,其安全稳定运行对行业生产效率与安全至关重要。但当前管道泄漏、破损问题频发,据中国管道工业协会 2024 年度测评数据显示,因管道修…

实用指南:YOLO系列——实时屏幕检测

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

信号(Signal)、信号量(Semaphore)

Django的信号机制 Django 的信号机制是一套解耦工具,核心作用是:当项目中发生特定事件(如模型保存、用户登录)时,自动触发预设的操作,无需在事件发生处直接调用这些操作,从而减少代码耦合。 什么是信号通俗来说…

在 macOS 中遇到 brew 命令不存在的问题

在 macOS 中遇到 brew 命令不存在的问题Posted on 2025-10-24 16:38 挥辉 阅读(0) 评论(0) 收藏 举报在 macOS 中遇到 brew 命令不存在的问题,通常是因为 Homebrew 未安装或未正确配置环境变量。以下是解决方法:…

在线聊天室

在线聊天室,输入用户名,房间名和密码,就可以进入同一个聊天室。(聊天室唯一性由房间名和密码的hash保证) https://peersuite.space/

2025 年亚克力大型鱼缸厂家联系方式推荐:江苏金穗的全产业链服务与定制化技术优势解析

行业背景 当下,商业展览、高端酒店、私人别墅等领域对亚克力大型鱼缸的需求日益增长,这类鱼缸因通透美观、空间适配性强等特点,成为提升环境档次的重要元素。但行业发展面临不少挑战:部分厂家缺乏厚板加工能力,无…

2025 年海洋水族馆厂家联系方式推荐:江苏金穗亚克力定制服务与工程案例,泳池 / 鱼缸项目解决方案

行业背景 当前海洋水族馆行业蓬勃发展,随着文旅产业升级与消费需求多元化,市场对高品质亚克力配套产品的需求持续攀升。据行业数据显示,国内海洋馆、水族馆建设项目年均增长 15% 以上,同时家庭高端鱼缸、商业无边泳…

例3.3】三个数 ------信息奥赛高级题库

按从小到大的顺序排 方法就是if嵌套和swap函数

详细介绍:Go 和云原生 的现状和发展前景

详细介绍:Go 和云原生 的现状和发展前景2025-10-24 16:36 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block…

Socket 编程 TCP(准备阶段) - 指南

Socket 编程 TCP(准备阶段) - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&…

2025 年亚克力板材厂家联系方式推荐:江苏金穗技术工艺与工程案例解析,泳池 / 鱼缸 / 海洋馆解决方案

行业背景 2025 年全球亚克力板市场规模将达 45 亿美元,中国市场规模预计突破 300 亿元,华东地区产量占比超 40%。随着高端化与定制化需求提升,市场对亚克力板材的透光性、厚板加工及异形定制能力提出更高要求。但行…