Jmeter二次开发自定义函数

合集下载

jmeter 二次开发案例

jmeter 二次开发案例

jmeter 二次开发案例JMeter是一个用于性能测试的开源工具,它提供了丰富的功能和灵活的扩展性,因此可以进行二次开发来满足特定需求。

以下是一些JMeter二次开发的案例:1. 自定义插件开发,JMeter允许开发人员编写自定义插件来扩展其功能。

例如,可以开发一个自定义的监听器,用于将测试结果发送到特定的数据存储或分析平台,或者开发一个自定义的断言来验证特定的业务逻辑。

这些自定义插件可以通过Java编写,并通过JMeter的插件机制进行集成。

2. 脚本自动化,在实际的性能测试过程中,可能需要频繁地执行一些重复性的操作,例如创建测试计划、配置线程组、添加断言等。

可以通过JMeter提供的API进行二次开发,编写脚本来自动化这些操作,提高测试效率。

3. 集成其他工具,JMeter本身提供了丰富的功能,但有时候可能需要与其他工具进行集成,例如与CI/CD工具(如Jenkins)集成,实现自动化性能测试;或者与监控工具(如Grafana)集成,实现实时性能数据的展示和分析。

这些都可以通过二次开发来实现。

4. 定制报告,JMeter生成的默认测试报告可能无法满足特定的需求,可以通过二次开发来定制报告的样式和内容,例如添加公司的Logo、调整报告的布局、增加特定的统计信息等。

5. 性能优化,JMeter本身也是一个Java应用程序,可能存在性能瓶颈,可以通过二次开发来对JMeter进行性能优化,例如对关键模块进行重构、使用更高效的数据结构等。

总之,JMeter的二次开发可以帮助用户定制化工具,满足特定的需求,提高测试效率和可靠性。

通过灵活运用JMeter的API和插件机制,可以实现各种定制化的功能和扩展。

Jmeter接口自动化测试系列之函数使用及扩展

Jmeter接口自动化测试系列之函数使用及扩展

【二】Jmeter接口自动化测试系列之函数使用及扩展作者:大虫上一篇文章我们了解了Jmeter的参数化的集中方法,虽然方法不是很多,但已经足够使用!本篇文章,介绍一下Jmeter自带函数的使用和函数扩展,来满足测试工作中的各种需求!1、Jmeter自带函数点击函数帮助助手图标,弹出函数助手框,可以选择各种各样的函数举例:_Random 获取随机数,可以点击帮助查看该函数的使用方法,最小值输入1,最大值输入100,最后面一个参数的意思是把生成的结果保存到一个变量中,可以供后面使用!输入完成之后,点击生成按钮把生成的字符串拷贝到需要调用的地方即可!运行结果:2、调用java函数调用一个简单的获取字符串长度函数吧!运行结果:3、调用jar包中的函数我写了一个简单的javapackage com.dachong.ceshi;publicclass Test {publicstatic String stringFormat(String s){ return s + "Jmeter高级技术交流群:572445436";}}用Eclipse 导出成jarJar下载地址:Jmeter测试计划中导入jar文件调用脚本:运行结果:函数已生效!4、自定义函数这个就是所谓的Jmeter插件开发啦,需要有一定的java基础!插件开发方法有两种!第一种:直接在jmeter官网下载jmeter开源包,在源码里面新加函数,然后导出jar!第二种:不需要下载源码,直接导入jmeter相应的jar包,即可立即开发!看官方文档,也是推荐使用第二种方法好了,这里不多说,直接开工:eclipse导入jmeter目录:apache-jmeter-2.13\lib\ext的ApacheJMeter_core.jar,继承AbstractFunction类,重写下面的几个方法即可!本文只简单介绍一下如何使用,,所以在execute方法里面,我们直接返回一个文本!把导出的jar文件放到jmeter的lib/ext目录,重启Jmeter,在函数助手框可以看到我们新加的自定义函数:CusStr测试脚本:运行结果:打完收工,有问题可直接联系大虫!。

jmeter5.0二次开发环境搭建(IDEA)

jmeter5.0二次开发环境搭建(IDEA)

jmeter5.0⼆次开发环境搭建(IDEA)前提:win10操作系统,idea2019.3,jdk1.8,jmeter5.0注意:jmeter5.3,5.4版本是基于Gradle构建的,因此,下载源码后⽆eclipse.classpath,eclipse.project.本⽂基于jmeter5.0说明1、下载jmeter5.0源码2.解压并修改⽂件名为如果修改不了,可以直接在管理员权限运⾏cmd,切换⾄该路径下使⽤命令修改ren eclipse.classpath .classpathren eclipse.project .project3.导⼊项⽬File-->New-->Project from Existing Sources...选择.project,点击OK选择Keep project and module files in ,点击Next后⾯都是默认,直接点击Next,最后点击Finsh导⼊后,如下:4、安装依赖因为JMETER5.0使⽤的是Ant来管理依赖,需要安装Ant插件来安装依赖包,Ant插件安装通过菜单栏打开也可直接在界⾯的右侧快捷栏打开如下图操作,打开build.xml⽂件打开后如下双击download_jars,下载jmeter所需要的所有jar包,下载到解压⽬录\apache-jmeter-5.0_src\apache-jmeter-5.0\lib⽬录下下载中(看⽹速,时间稍长,耐⼼等待下)下载完成下载后的jar包如下5、设置source⼊⼝1是⼊⼝2在如下图点击打开都可打开Project Struture选择Modules-->Sources-->src可以看到protocol是灰⾊点击下protocol,再点击下Mark as:Sources可标记,结果如下图⼀定记得点击右下⾓的Apply,让设置⽣效切换⾄Dependencies,将报错的jar包删除导⼊jar包三个⽂件夹都要导⼊添加ext⽂件会提⽰如下,默认,点击OK就⾏之后,点⼀下右下⽅的Apply按钮,让设置⽣效点击OK返回双击install⼀下完成后找到JMeter的main⽅法⽂件 NewDriver.java先运⾏⼀次有报错如下,设置源码包路径设置VM options注意-Djmeter.home之间⽆空格,否则会报错,D:\apache-jmeter-5.0_src\apache-jmeter-5.0为源码路径再次运⾏NewDriver.java,成功打开测试⼀下:添加⼀⾏代码试试:看到运⾏成功,开始进⾏源码改动了。

jmeter常用的函数

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 函数。

这些函数可以帮助测试人员模拟不同的用户行为、获取属性的值、编写复杂的逻辑和从响应中提取数据。

JMeter基础009----JMeter内置函数

JMeter基础009----JMeter内置函数

JMeter基础009----JMeter内置函数⼀、函数概述1、概述函数是程序中的封装单元(最⼩的),封装⼀些功能实现。

Jmeter内置了⼀些函数,了解这些函数,使⽤函数助⼿可以帮助我们调⽤函数。

2、函数分类(1)数字相关的:__counter():计数器注:前⾯两个下划线__random():随机数函数,函数参数包含左右临界值__time():获取时间的函数,时间格式:yyyy/MM/dd HH:mm:ss==年/⽉/⽇时:分:秒(2)⽂件读取相关的:__CSVRead( ):和CSV Data Set Config类似可以读取CSV⽂件数据(3)属性相关的:__setProperty( ):属性设置__property() :属性获取3、实现思想(1)打开Jmeter 内置的函数功能模块(2)选择要调⽤的函数,传参数,⽣成调⽤格式(3)哪⾥需要粘哪⾥⼆、数字相关函数使⽤1、__counter()函数(1)打开Jmeter 内置的函数功能模块,选择__counter()函数,填写函数参数,⽣成调⽤格式,如下图所⽰:(2)复制⽣成的调⽤格式,创建HTTP请求,粘贴复制的调⽤格式,如下图所⽰:(3)运⾏测试计划,查看结果树,如下图所⽰:2、__random()函数(1)打开Jmeter 内置的函数功能模块,选择__randon()函数,填写函数参数,⽣成调⽤格式,如下图所⽰:(2)复制⽣成的调⽤格式,创建HTTP请求,粘贴复制的调⽤格式,如下图所⽰:(3)运⾏测试计划,查看结果树,如下图所⽰:3、__time()函数(1)打开Jmeter 内置的函数功能模块,选择__time()函数,填写函数参数,⽣成调⽤格式,如下图所⽰:(2)复制⽣成的调⽤格式,创建HTTP请求,粘贴复制的调⽤格式,如下图所⽰:(3)运⾏测试计划,查看结果树,如下图所⽰:注:时间格式:yyyy/MM/dd HH:mm:ss==年/⽉/⽇时:分:秒三、 __CSVRead( )函数1、__CSVRead()函数:__CSVRead()和CSV Data Set Config类似可以读取CSV⽂件数据,但是CSV Data Set Config执⾏多次是使⽤的循环次数,⽽CSVRead执⾏多次使⽤的是线程数。

Jmeter二次开发——自定义函数

Jmeter二次开发——自定义函数

Jmeter⼆次开发——⾃定义函数在之前的博⽂中,,已介绍了Jmeter⼆次开发的基础情况,上次分享的是java请求开发,今天来分享下Jmeter中的函数开发。

聊到Jmeter的函数,知道Jmeter使⽤的博友肯定很熟悉。

Jmeter⾃带⼀个函数库,有很多的函数,⽐如:__P,__Random,函数助⼿给我们提供了很多的⽅便之处。

函数助⼿使⽤如下所⽰:但有些时候,⾃带的函数满⾜不了真实的测试场景,⽐如:⽣成随机⼿机号。

常规做法,应该是设定⼿机号区号的固定值,再通过__Random函数⽣成8位随机数,从⽽拼接成⼀个⼿机号,这样的做法的确可以满⾜,但要想⼿机号的区段也是随机的呢,是不是就不太好处理了。

那就⽤函数⼆次开发试试。

函数⼆次开发创建以functions结尾的包这个是特别需要注意点,以.functions结尾,正常创建包即可。

类继承AbstractFunction⼆次开发时,新建的类,需要继承AbstractFunction,这个也是需要注意的。

⾄于为什么需要继承AbstractFunction,看源码就能明⽩,源码如下所⽰:public abstract class AbstractFunction implements Function {public AbstractFunction() {}public abstract String execute(SampleResult var1, Sampler var2) throws InvalidVariableException;public String execute() throws InvalidVariableException {JMeterContext context = JMeterContextService.getContext();SampleResult previousResult = context.getPreviousResult();Sampler currentSampler = context.getCurrentSampler();return this.execute(previousResult, currentSampler);}public abstract void setParameters(Collection<CompoundVariable> var1) throws InvalidVariableException;public abstract String getReferenceKey();protected JMeterVariables getVariables() {return JMeterContextService.getContext().getVariables();}protected void checkParameterCount(Collection<CompoundVariable> parameters, int min, int max) throws InvalidVariableException {int num = parameters.size();if (num > max || num < min) {throw new InvalidVariableException(this.getReferenceKey() + " called with wrong number of parameters. Actual: " + num + (min == max ? ".Expected: " + min + "." : ". Expected: >= " + min + " and <= " + max));}}protected void checkParameterCount(Collection<CompoundVariable> parameters, int count) throws InvalidVariableException {int num = parameters.size();if (num != count) {throw new InvalidVariableException(this.getReferenceKey() + " called with wrong number of parameters. Actual: " + num + ". Expected: " + count + ".");}}protected void checkMinParameterCount(Collection<CompoundVariable> parameters, int minimum) throws InvalidVariableException {int num = parameters.size();if (num < minimum) {throw new InvalidVariableException(this.getReferenceKey() + " called with wrong number of parameters. Actual: " + num + ". Expected at le ast: " + minimum + ".");}}protected final void addVariableValue(String value, CompoundVariable[] values, int index) {if (values.length > index) {String variableName = values[index].execute().trim();if (StringUtils.isNotEmpty(variableName)) {JMeterVariables vars = this.getVariables();if (vars != null) {vars.put(variableName, value);}}}}}参数解释getArgumentDesc()获取界⾯所要显⽰的参数说明execute()函数的主体业务getReferenceKey()获取函数的名称setParameters()设置参数,接收⽤户传递的参数checkParameterCount()检测参数数量是否准确函数开发获取函数的名称名称⾃定义,如下所⽰:private static final String key = "__XXX";这⾥需要注意的是:函数开头是以2个下划线开头。

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实现自定义的函数

扩展JMeter实现自定义的函数JMeter作为Apache的项目允许使用者对其进行扩展,比如用户可以扩展自定义的function(function是可以让用户在编辑测试脚本的时候插入到任何Sampler或者测试元素中,可以执行一些任务,比如取得Agent所在机器的名字,IP地址,或者得到一个随机的字符串等,完整的JMeter提供的内置function列表,请参考官方文档)。

本文将以扩展一个返回随机偶数function的例子来了解整个过程。

总体来说,扩展JMeter的function可以分成下面几个步骤:1.在Eclipse中新建Maven项目,引入扩展JMeter function所需的依赖2.编写实现自定义function的代码,并对其编译打包3.将编译好的包拷贝至JMeter的扩展目录,编辑测试脚本,使用自定义function4.运行查看自定义的function是否正确创建扩展JMeter项目在Eclipse中新建一个Maven项目,File > New > Project,选择Maven Project,如下图所示。

创建Maven项目--第一步在向导的第二页里,选择"Create a simple project (skip archetype selection),并点击下一步创建Maven项目--第二步在向导的第三页,输入Group Id和Artifact Id。

点击Finish,完成向导。

创建Maven项目通过Maven引入相应的JMeter库打开pom.xml,加入JMeter的ApacheJMeter_core和ApacheJMeter_functions库依赖,如下图所示。

<dependencies><dependency><groupId>org.apache.jmeter</groupId><artifactId>ApacheJMeter_core</artifactId><version>2.13</version></dependency><dependency><groupId>org.apache.jmeter</groupId><artifactId>ApacheJMeter_functions</artifactId><version>2.13</version></dependency></dependencies>保存pom.xml后,Maven开始下载相关的库文件,但是你可能会发现完成之后项目无法编译,无法编译的原因如下。

jmeter 自定义函数 参数二次转化

jmeter 自定义函数参数二次转化摘要:一、JMeter 简介二、JMeter 自定义函数的使用方法三、参数二次转化的概念和作用四、如何实现参数二次转化五、总结正文:一、JMeter 简介JMeter 是Apache JMeter 的一款开源工具,它是一个用于测试和测量软件应用程序的性能的负载测试工具。

JMeter 能够模拟各种网络协议,如HTTP、HTTPS、FTP 等,从而对服务器进行压力测试,以评估其性能和可扩展性。

二、JMeter 自定义函数的使用方法在JMeter 中,可以使用自定义函数来实现一些特定的功能,这些函数可以由用户根据需要编写。

使用自定义函数的方法如下:1.在JMeter 中添加一个新的线程组。

2.右键单击线程组,然后选择“添加”>“取样器”>“自定义取样器”。

3.在“自定义取样器”窗口中,选择“函数式取样器”。

4.在“函数式取样器”窗口中,选择“自定义函数”。

5.在“自定义函数”窗口中,编写自定义函数的代码,并设置相关参数。

6.保存自定义函数,并返回到“函数式取样器”窗口。

7.在“函数式取样器”窗口中,选择刚刚创建的自定义函数,并将其添加到线程组中。

三、参数二次转化的概念和作用参数二次转化是指在JMeter 中对自定义函数的参数进行再次处理,以实现更复杂的功能或适应不同的场景。

参数二次转化可以帮助用户更好地控制自定义函数的行为,从而提高测试的准确性和可靠性。

四、如何实现参数二次转化要实现参数二次转化,用户需要在自定义函数中编写代码,以处理原始参数。

具体步骤如下:1.在自定义函数中,获取原始参数的值。

2.对原始参数的值进行处理,例如进行计算、转换等操作。

3.将处理后的参数值作为自定义函数的实际参数,进行后续操作。

五、总结通过使用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的文件函数可以在测试中将数据读入文件中。

这样可以有效地对文件系统的性能进行测试,以确定文件读取、写入速度,以及在测试中可以长时间坚持的文件大小等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档