Jmeter函数助手大全
jmeter 函数

jmeter 函数JMeter函数是Jmeter测试工具中常用的一种功能。
它通过提供一系列函数来向用户提供更多样化的测试功能。
使用JMeter函数和语句可以灵活地对所测试的网页及其元素进行处理,从而实现准确的性能测试要求。
一、 JMeter数的类型1.1置函数JMeter内置了大量函数,如 ${__time()}等,列表如下:(1) ${__time()}:前时间(毫秒);(2) ${__threadNum()}:当前线程数;(3) ${__machineName()}:节点名称;(4) ${__P()}:从文件中读取数据;(5) ${__RandomString()}:生成随机字符串;(6) ${__base64Encode()}:使用base64编码;(7) ${__UUID()}:生成UUID;(8) ${__CSVRead()}:从CSV文件中读取数据;(9) ${_intSum()}:求和函数;(10) ${__split()}:分割字符串;以上只是内置函数的一部分,更多的内置函数可以在Jmeter官网上查看。
1.2定义函数JMeter允许用户自定义函数,以增加测试功能。
用户可以在Jmeter中创建一个Java类,然后实现自定义函数。
用户也可以使用专门的JMeter插件,如模拟器、贝叶斯估计器和统计测试等,以实现更多自定义函数。
二、 JMeter数的应用2.1间函数使用JMeter的时间函数可以在测试中创建可重复的时间序列。
这样可以有效地对系统的可靠性进行测试,避免因时间序列的变化而导致的结果出错。
2.2学函数JMeter的数学函数可以在测试中实现求和等运算。
这样可以有效地对系统的正确性进行测试,确定计算的结果是否正确。
2.3件函数JMeter的文件函数可以在测试中将数据读入文件中。
这样可以有效地对文件系统的性能进行测试,以确定文件读取、写入速度,以及在测试中可以长时间坚持的文件大小等。
JMeter函数助手中Random函数详解

JMeter函数助⼿中Random函数详解
1.__Random函数的⽣成
The minimum value allowed for a range of values:⼀个范围内允许的最⼩值
The maximum value allowed for a range of values:⼀个范围内允许的最⼤值
Name of variable in which to store the result (optional):⾃定义字段名
⽣成后的函数格式:${__Random(1000,9999,Num)},在⼊参中使⽤"Num":"${__Random(1000,9999,Num)}",⽰例中的结果会随机⽣成1000~9999之间的数字,如8097
2.__Random函数的应⽤
在接⼝测试中,要求⼊参⼿机号不能重复,相信很多⼈都不会陌⽣,这⾥可以使⽤__Random函数解决问题。
(1)事先根据需求量⽤__Random函数⽣成合适的函数,这⾥我制定⼿机号前6位是固定的:158100。
那么
需要⽣成的函数为:${__Random(10000,99999,phone)},范围可以⾃由指定,符合要求即可。
在线程组中
新增⼀个Debug Sampler,如下图:
(2)继续新增⼀个Debug Sample,⽤来引⽤函数随机⽣成的结果,格式:158100+${phone},如下图所⽰:
(3)最后添加⼀个察看结果树来记录结果,运⾏程序,即可看到结果。
JMeter----内置函数列表

JMeter----内置函数列表Jmeter有两种类型的函数:⽤户定义的静态值(或变量)内置函数⽤户定义的静态值允许⽤户定义变量时被替换为静态的值测试树编译并提交运⾏。
需要注意的是,变量⽬前⽆法嵌套,即${Var${N}}不起作⽤__ V(变量)函数(版本2.2后)可⽤于执⾏此操作: ${__V(Var${N})}. 这种类型的替换可能没有函数,但更⽅便,更直观函数和变量可以在哪⾥使⽤?函数和变量可以被写⼊到任何领域的任何测试部件。
下⾯的函数测试计划应确定⼯作:intSumlongSummachineNameBeanShelljavaScriptjexlrandomtimeproperty functionslog functions测试计划使⽤的功能有⼀些限制。
JMeter的线程变量没有被完全成⽴处理功能时,不会设置变量名作为参数传递,将⽆法正常⼯作和变量引⽤,所以split() 和 regex() 变量赋值函数不会⼯作。
threadNum() 函数将不能⼯作引⽤变量及函数引⽤的变量中的测试元件是通过包围在变量名 '${' and '}'.函数中引⽤同样的⽅式,但按照惯例,函数的名称以“__”开头,以避免冲突与⽤户值的名称有些函数带参数的配置,⽽这些括号中,逗号分隔。
如果函数没有参数,括号可以省略。
对于例如:${__BeanShell(vars.put("name","value"))}另外,可以定义你的脚本作为⼀个变量,例如测试计划:SCRIPT vars.put("name","value")然后,该脚本可以被引⽤如下:${__BeanShell(${SCRIPT})}预定义变量JMeter 内部定义的⼀些变量。
它们分别是:COOKIE_cookiename - 包含cookie的值st_sample_ok - 与否的最后⼀个样本是确定的 - true/false。
『动善时』JMeter基础—27、通过JMeter函数助手实现参数化

『动善时』JMeter基础—27、通过JMeter函数助⼿实现参数化⽬录我们在使⽤JMeter进⾏测试的时候,测试数据是⼀项重要的准备⼯作,当每次迭代的数据不⼀样的时候,就需要进⾏参数化,也就是从参数化数据⽂件中来读取测试数据。
JMeter中的参数化⽅式有多种,我们之前讲过了使⽤CSV 数据⽂件设置组件,从.cvs和.txt⽂件中读取数据。
今天我们来说⼀下,使⽤函数助⼿实现JMeter的参数化,其实⽅法很类似,只是调⽤数据的⽅式略有不同。
需求:我们以⼀个登陆接⼝为例。
发送登录请求的时候,我们需要传递两个参数:phone和password。
针对这个登录接⼝设计5条⽤例,如下:正常登录。
⼿机号未注册,即:⼿机号填写错误。
⼿机号不合法,即:⼿机号填写错误位数不对或为空。
⼿机号或密码错误,即:密码错误。
密码不合法,即:密码为空。
1、测试计划中的元件添加元件操作步骤:创建测试计划。
创建线程组:选中“测试计划”右键 —> 添加 —> 线程(⽤户) —> 线程组。
在线程组⾥⾯,添加取样器“HTTP请求”组件:选中“线程组”右键 —> 添加 —> 取样器 —> HTTP请求。
在线程组⾥⾯,添加监听器“察看结果树”组件:查看结果,选中“线程组”右键 —> 添加 —> 监听器 —> 察看结果树。
最终测试计划中包含的元件如下:点击运⾏按钮,会提⽰你先保存该脚本,脚本保存完成后会直接⾃动运⾏该脚本。
2、数据⽂件内容创建⼀个.csv⽂件,名为login_data.csv,然后根据需求编辑数据⽂件内容。
使⽤函数助⼿实现参数化的时候,我们不在数据⽂件的第⼀⾏添加列表明,这样⽅便我们取值。
然后使⽤Notepad++打开该⽂件,点击“编码” —> 转为UTF-8编码,防⽌中⽂乱码。
最终所得到的.csv格式⽂件的内容如下:3、函数助⼿配置(1)函数助⼿的打开⽅式在JMeter中打开函数助⼿界⾯的⽅式有两种:第⼀种:选项 ——> 函数助⼿对话框。
jmeter随机字符串函数

jmeter随机字符串函数
JMeter提供了几个用于生成随机字符串的函数。
以下是其中一些常用的函数:
1. Random String函数:可以生成一个指定长度的随机字符串。
语法如下:
`${__RandomString(长度, 自定义字符集)}`
示例:
- `${__RandomString(10)}`:生成一个长度为10的随机字符串。
- `${__RandomString(5, abcdefg123)}`:生成一个长度为5的随机字符串,只包含字母abcdefg和数字123
2. Random AlphaNumeric String函数:可以生成一个由字母和数字组成的随机字符串。
语法如下:
`${__RandomAlphaNumeric(长度)}`
示例:
- `${__RandomAlphaNumeric(8)}`:生成一个由8个字母和数字组成的随机字符串。
3. Random String from File函数:可以从一个文件中随机选择一行作为字符串。
`${__StringFromFile(文件路径)}`
示例:
- `${__StringFromFile(C:/path/to/file.txt)}`:从文件
file.txt中随机选择一行作为字符串。
这些函数可以在JMeter的各个地方使用,例如请求的参数值、断言的预期值等。
可以在JMeter的函数助手中直接使用这些函数,也可以在脚本中使用`${__eval(}`来执行这些函数。
jmeter学习笔记之函数助手——字符分割(__split)

jmeter学习笔记之函数助手 ——字符分割( __split)
1.tool—>函数助手对话框,打开函数助手 2.选择一个功能中选到“__split”; String to split填要分割的字符;函数名如其自身解释就是存储这个方法的名称,用于后面做调用分割后的值;String to split on. Default is , (comma).填分隔符 3.分割函数生成后,要先复制到被应用前的元组中(如简单控制器等不影响执行的控制器),后面才能被使用 范例: 要分割的字符:
__split函
Jmeter参数化方式、提取上个接口的参数、函数助手常用的函数(用户定义的变量、CSV数据。。。

Jmeter参数化⽅式、提取上个接⼝的参数、函数助⼿常⽤的函数(⽤户定义的变量、CSV数据。
⼀、在测试过程中⼀般的⼏种参数化⽅式1、⽤户定义的变量 当我们每次去调⽤接⼝都要⼿动修改⼿机号码,并且注册和登录接⼝都要同步修改,这样操作相当繁琐,针对这个问题我们使⽤⽤户定义的变量的⼯具进⾏优化 添加:在线程组上:右键—>添加—>配置元件—>⽤户定义的变量⽤户⾃定义变量是固定的,与下⾯的“⽤户参数”有点不同(⽐如:${__Random(1000,9999,)},多个虚拟⽤户请求时,⽣成的四位数都是固定同⼀个) 我们把注册和登录的⼿机号和密码都提取出来放到这⾥ 定义了之后,我们需要调⽤该参数,调⽤⽅式是在对应的取样器⾥,使⽤${key}的格式替换取样器请求体⾥的值,这样我们就可以每次只修改⼀次就可以在所有的接⼝上通⽤了 虽然在此基础上已经得到了相应的优化,我们能不能做到每次运⾏的时候都不⽤去修改⽤户定义的变量⾥⾯的值呢?答案是可以的,这时候我们要使⽤到函数助⼿,构造相应的随机函数 对于函数的各种⽤法,这⾥不做说明,可以通过函数助⼿的帮助去查看各个函数的使⽤⽅法 我们通过函数助⼿来构造⼀个⽣成随机⼿机号的⽅法来替换⽤户定义的变量的值2、CSV数据⽂件设置 该⽅法也是参数化的⼀种场景,我们可以提前使⽤csv⽂件或者其它⽂本⽂件(txt、log、xml、json...)构造⼤量数据,然后再读取⽂件⾥⾯的内容引⽤到对应的接⼝当中去,这⾥要注意的是在国内csv我们使⽤excel编辑器保存后遇到中⽂会出现乱码的情况,因此需要进⾏转码后才能正常使⽤! 在线程组上:右键—>添加—>配置元件—>CSV 数据⽂件设置 我们先构造测试数据 然后配置CSV数据⽂件设置: 此时我们可以直接替换接⼝参数的值为该变量名称,但是不可以替换⽤户定义的变量的值,会引⽤不到 执⾏结果如下: 我们如果设置并发量为5,则会依次读取每⼀⾏数据3、⽤户参数 在⽤户定义的变量中使⽤随机⽣成⼿机号的⽅式执⾏,它的执⾏原理是在整个线程组执⾏会话之前创建⼀次后,执⾏过程中的所有线程都会去使⽤这个值,并不是每个线程组使⽤时都会随机⽣成不⼀样的值,所以在并发测试中,遇到这种情况就不⾏了,因此我们可以⽤户参数的⼯具来使得每个线程组调⽤的时候都能随机⽣成⼀个随机数⽤户参数是随机⽣成的,于上⾯的 “⽤户⾃定义变量” 有点不同(⽐如:${__Random(1000,9999,)},多个虚拟⽤户请求时,⽣成的四位数都是随机⽣成的)使⽤ ${名称} 进⾏调⽤参数 在线程组上:右键—>添加—>前置处理器—>⽤户参数 我们可以将上⾯⽤户定义的变量中由函数助⼿⽣成的函数拿到⽤即可 我们将接⼝参数化替换 设置并发为10,查看结果:⼆、正则提取 上⾯我们处理的是随机数,这⾥我们则要通过⼀些⽅法将下个接⼝要使⽤的参数⽤上个接⼝的请求体、响应头或者响应体中提取出来,以此来处理接⼝依赖的问题,因为暂时没有好的实例,这⾥只讲使⽤⽅法1.JSON提取器json 格式参数格式:{"key":"vale":"名称":"值"} value值为string 要⽤双引号"" value值为int 不要双引号"" value值为 double 不要双引号"" 多个key-value 对,使⽤⽤逗号分开最后⼀个key-value 对后⾯没有逗号在指定的接⼝取样器上:右键—添加—后置处理器—JSON提取器我们在查看结果树⾥⾯将JSON Path Tester调出来,可以进⾏编写表达式进⾏测试验证表达式是否正确,注意该提取器只适⽤于接⼝的json响应体JSON提取器的表达式语法格式为:$.key的格式如果响应体遇到嵌套列表的形式,如:{"domain":[{"id": "sdfhhsdfafvgg"},{"name": "Tom"}]}如果要提取name的值,表达式为:$.domain[1].name{"tenant": "admin","domain": [{"id": "sdfhhsdfafvgg", "name": "Tom"},{"id": "234gdgdh45h", "name": "Jerry"}]}如果要提取所有name的值,表达式为:$ 返回结果为⼀个列表我们将正确的表达式填⼊到JSON提取器的配置当中,后⾯的接⼝就可以通过${变量名称}的⽅式调⽤该参数2.正则表达式提取器 在指定的接⼝取样器上:右键—添加—后置处理器—正则表达式提取器 正则表达式的格式:左边界(.*?)右边界 以code为例:0:随机-1:匹配所有 我们执⾏⼀次查看提取结果:正则表达式提取器》页⾯Apply to 应⽤范围Main sample and sub-samples当前请求的结果和当前请求的⼦请求的结果,两⽅⾯去匹配Main sample only当前的请求Sub-samples onlyJMeter Variablejmeter ⼆次提取引⽤名称其他地⽅引⽤时的变量名称,我这⾥写的phone,可⾃定义设置,引⽤⽅法:${引⽤名称}正则表达式数据提取器,()括号⾥为你要获取的的值。
jmeter常用的函数

jmeter常用的函数JMeter常用的函数JMeter是一款功能强大的性能测试工具,它提供了许多函数来帮助测试人员更好地进行测试。
在本文中,我们将介绍JMeter常用的函数。
1. __threadNum__threadNum函数返回当前线程的编号。
这个函数在多线程测试中非常有用,因为它可以帮助测试人员确定哪个线程正在执行哪个请求。
2. __time__time函数返回当前时间的毫秒数。
这个函数在测试中非常有用,因为它可以帮助测试人员确定请求的响应时间。
3. __Random__Random函数返回一个随机数。
这个函数在测试中非常有用,因为它可以帮助测试人员模拟不同的用户行为。
4. __setProperty__setProperty函数可以设置一个属性。
这个函数在测试中非常有用,因为它可以帮助测试人员在测试过程中动态地设置属性。
5. __P__P函数可以获取一个属性的值。
这个函数在测试中非常有用,因为它可以帮助测试人员在测试过程中获取属性的值。
6. __urlencode__urlencode函数可以将字符串编码为URL编码格式。
这个函数在测试中非常有用,因为它可以帮助测试人员模拟不同的用户行为。
7. __groovy__groovy函数可以执行Groovy脚本。
这个函数在测试中非常有用,因为它可以帮助测试人员编写复杂的逻辑。
8. __regex__regex函数可以使用正则表达式从字符串中提取数据。
这个函数在测试中非常有用,因为它可以帮助测试人员从响应中提取数据。
总结JMeter提供了许多函数来帮助测试人员更好地进行测试。
在本文中,我们介绍了JMeter常用的函数,包括__threadNum、__time、__Random、__setProperty、__P、__urlencode、__groovy和__regex 函数。
这些函数可以帮助测试人员模拟不同的用户行为、获取属性的值、编写复杂的逻辑和从响应中提取数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
官方文档__BeanShell入参:BeanShell语法的程序语句或者Bean Shell脚本文件示例:${__BeanShell(123*456,)}:返回56088;${__BeanShell(source("function.bsh",))}:执行在function.bsh中的脚本;image.png__changeCase作用:修改字符串大小写入参:字符串示例:${__changeCase(test,UPPER,upper_test)}image.png__char作用:把一组数字转化成Unicode字符入参:数字示例:${__char(65,66)},变成ABimage.png__counter作用:作为一个计数器使用,支持多线程(多用户)入参:计数变量i,是否为线程计数器True/False示例${__counter(FALSE,i)}; 全局计数器${__counter(TRUE,i)}; 每个用户有自己的计数器image.png__CSVRead作用:从文件读取指定列的值(读取固定值/读取动态值/使用文件别名)入参:文件路径;读取方式;示例${__CSVRead(E:\user_info.csv,0)};读取第一列的值${__CSVRead(E:\user_info.csv,next())}; 每次读取下一次的值,配合第一条使用,否则不知道从哪里开始${__CSVRead(E:\user_info.csv,*user_info)};使用别名,然后通过以下方法获取数据${__CSVRead(*user_info, 1)}image.png__dataTimeConvert作用:格式化日期入参:日期/时间示例:${__dateTimeConvert(01212018,MMddyyyy,dd/MM/yyyy,)}${__dateTimeConvert(1526574881000,,dd/MM/yyyy HH:mm,)}; 官方例子,但是本地没试出来image.pngimage.pngimage.pngimage.png 示例:${__digest(MD5,test,1,,)}image.png__escapeHtml作用:字符转成Html格式的字符,这样编码后传给浏览器,浏览器就能识别了入参:字符示例:${__escapeHtml(")}image.png__escapeOroRegexChars作用:把正则表达式转换成Java正则引擎能识别的表达式入参:正则表达式示例:${__escapeOroRegexpChars([^"].+?,test)}image.png__escapeXml作用:字符转成xml格式的字符入参:字符示例:${__escapeXml("bread"&'butter')}image.png__eval作用:返回一个表达式的值,可以用此函数表达式来嵌套引用表达式入参:字符示例:name=Smithcolumn=agetable=birthdaysSQL=select ${column} from ${table} where name='${name}'${__eval(${SQL})}; 引用SQL变量image.png__evalVar作用:返回一个表达式的结果,存到一个变量中,供使用入参:字符示例:QUERY =select ${column} from ${table}; column=name, table=customers${__evalVar(QUERY)} =select name from customers__fileToString作用:读取文件保存至变量中入参:文件路径;编码格式;变量名示例:${__FileToString(E:\user_info.csv,utf-8,user_info)}image.png__groovy作用:执行Apache Groovy脚本,并返回结果入参:表达式;变量名示例:${__groovy(123*456,test)}image.png__intSum作用:整数求和,多个数字之间用逗号分隔入参:第一个整数;第二个及之后的整数;变量名示例:${__intSum(1,2,3,4,5,6,7,8,test)}image.png__isPropDefined作用:判断属性是否存在入参:属性名称示例:${__isPropDefined(START.HMS)}image.png __isVarDefined作用:判断变量是否存在入参:变量名称示例:${__isVarDefined(st_sample_ok)}image.png__javaScript作用:返回js脚本执行结果入参:js表达式;变量名示例:${__javaScript(new Date(),date)}image.png__jexl2作用:返回jexl表达式执行结果,使用JEXL2入参:jexl表达式;变量名示例:${__jexl2(vars.get("START.YMD"),test)}image.png__jexl3作用:返回jexl表达式执行结果,JEXL3入参:jexl表达式;变量名示例:${__jexl3(vars.get("START.YMD"),test)}image.png__log作用:日志方法,返回输入的字符串信息入参:字符串;日志级别;抛出的异常信息;附加信息${__log(testing,ERR,error throw test,error test)}image.png__logn与__log类似,不过它只记录一条日志,不返回值。
image.png __longSum作用:计算长整型的和入参:整数示例:${__longSum(1,2,3,4,sum)}image.png __machineIP作用:引用返回本机IP入参:变量名${__machineIP(ip)}image.png__machineName作用:引用返回本机Name入参:变量名示例:${__machineName(name)}image.png__P作用:获取命令行中定义的属性,非GUI方式运行测试计划时这个函数可用来做参数化,由运行命令动态指定参数值,方便与Jenkins等集成完成性能测试工作入参:属性名称;默认值${__P(group1.threads,)}image.png__property作用:获取Jmeter的属性,%JMETER_HOME%\bin\jmeter.properties 入参:属性名称;变量名;默认值示例:${__property(log_level.jmeter,log_Level,)}image.png__Random作用:生成指定范围内的随机数入参:左右范围;变量名示例:${__Random(1,20,random_num)}image.png__RandomDate作用:生成指定范围内的日期入参:日期格式;左右范围;语言;变量名示例:${__RandomDate(,,2050-07-08,,)}image.png__RandomFromMultipleVars 作用:给定的多个值中随机取值入参:多个值,使用|分隔;变量名示例:${__RandomFromMultipleVars(a|b|c|d|e,select)}image.png__RandomString作用:生成指定长度的字符串入参:字符串长度;可选字符串;变量名示例:${__RandomString(5,a3fxis,random_char)}image.png __regexFunction作用:提取正则表达式${__regexFunction(road(.*)test,$1$,1,,,,)}image.png __samplerName作用:获取当前按sampler的名称image.png__setProperty作用:动态设置jmeter属性入参:属性名称;属性值;是否返回函数结果示例:${__setProperty(log_level.jmeter,Debug,true)}image.png__split作用:拆分字符串入参:待拆分字符串;变量名(使用变量名_x来访问第x个拆分结果);分隔符示例:${__split(test|is|intresting,para,|)}image.png__StringFromFile作用:从文件中读取内容,一行一行的读取,读完再从头开始入参:文件全路径,变量名,多文件读取起止示例:${__StringFromFile(D:\user_info.txt,info,,)}image.png${__TestPlanName}image.png __threadNum作用:返回当前线程号示例:${__urlencode(Word "school"is"école"in french)}image.png__UUID作用:获取UUID入参:无示例:${__UUID}image.png__V作用:获取含变量名的表达式入参:含变量名的表达式示例:${A1} - 可以正确访问${A${N}} - 无法访问,嵌套变量${__V(A${N})} - 可以访问。
A${N}变成A1,__V函数返回A1的值image.png__XPath作用:根据xpath获取xml节点内容,没有匹配到,则返回空字符串入参:待解析的xml文件;xpath表达式匹配xml节点示例:${__XPath(/path/to/build.xml,//target/@name)}image.png可直接访问变量log:直接调用logger函数ctx:获取JMeterContent对象vars:获取JMeter定义的变量props:获取JMeter配置属性threadName:获取Jmeter线程名sampler:获取Sampler实例sampleResult:获取SamplerResult实例OUT:类似System.out.println, OUT.println()。