apachejmeter_java源码_自定义编写jmeter的Java测试代码

我们在做性能测试时,有时需要自己编写测试脚本,很多测试工具都支持自定义编写测试脚本,比如LoadRunner就有很多自定义脚本的协议,比如"C Vuser","JavaVuser"等协议.同样,Jmeter也支持自定义编写的测试代码,不过与LoadRunner不同的是,Jmeter没有自带编译器,需要借助第三方编译器才能实现.下面举一个简单的Java自定义测试代码例子,使用Java编译器编写测试代码(Java编译器可以用Eclipse,JBulider等),实现功能为:在测试前输入任意一个字符串,然后判断该字符串的长度是否大于5,如果大于则测试结果成功,否则测试结果位失败,然后在放到Jmeter中模拟10个用户测试,同时运行这段代码,具体实现如下:

1.打开Java编译器,新建一个项目"TestLength",然后新建一个包"app".

2.从Jmeter的安装目录lib/ext中拷贝两个文件"ApacheJMeter_core.jar"和"ApacheJMeter_java.jar"到"Tester"的项目中,然后引入这两个JAR文件.(具体的引入方法参考各个Java编译器的使用方法)

3.在"app"包中新建一个类,名字叫"TestLength",不过这个类要继承"AbstractJavaSamplerClient"类,如果项目引入步骤二中的两个文件,就可以找到"AbstractJavaSamplerClient"类了.

4."TestLength"类在继承"AbstractJavaSamplerClient"类的同时也会继承四个方法,分别是"getDefaultParameters","setupTest","runTest"和"teardownTest"方法."getDefaultParameters"方法主要用于设置传入的参数;"setupTest"方法为初始化方法,用于初始化性能测试时的每个线程."runTest"方法为性能测试时的线程运行体;"teardownTest"方法为测试结束方法,用于结束性能测试中的每个线程.

5.具体实现代码如下:

package app;

import org.apache.jmeter.config.Arguments;

import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;

import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;

import org.apache.jmeter.samplers.SampleResult;

import com.passpod.core.t8.*;

/**

* @author乐以忘忧

*

* TODO To change the template for this generated type comment Go to

* Window - Preferences - Java - Code Style - Code Templates

*/

public class TestLength extends AbstractJavaSamplerClient{

private SampleResult results;

private String testStr;

//初始化方法,实际运行时每个线程仅执行一次,在测试方法运行前执行,类似于LoadRunner中的init方法

public void setupTest(JavaSamplerContext arg0) {

results = new SampleResult();

testStr = arg0.getParameter("testString", "");

if (testStr != null && testStr.length() > 0) {

results.setSamplerData(testStr);

}

}

//设置传入的参数,可以设置多个,已设置的参数会显示到Jmeter的参数列表中

public Arguments getDefaultParameters() {

Arguments params = new Arguments();

params.addArgument("testStr", "");   //定义一个参数,显示到Jmeter的参数列表中,第一个参数为参数默认的显示名称,第二个参数为默认值

return params;

}

//测试执行的循环体,根据线程数和循环次数的不同可执行多次,类似于LoadRunner中的Action方法

public SampleResult runTest(JavaSamplerContext arg0) {

int len = 0;

results.sampleStart();     //定义一个事务,表示这是事务的起始点,类似于LoadRunner的lr.start_transaction

len = testStr.length();

results.sampleEnd();     //定义一个事务,表示这是事务的结束点,类似于LoadRunner的lr.end_transaction

if(len < 5){

System.out.println(testStr);

results.setSuccessful(false);   //用于设置运行结果的成功或失败,如果是"false"则表示结果失败,否则则表示成功

}else

results.setSuccessful(true);

return results;

}

//结束方法,实际运行时每个线程仅执行一次,在测试方法运行结束后执行,类似于LoadRunner中的end方法

public void teardownTest(JavaSamplerContext arg0) {

}

}

6.把上面的例子打包,然后把生成的"TestLength.jar"文件拷贝到Jmeter的安装目录lib/ext下.

7.运行Jmeter,添加一个线程组,然后在该线程组下面添加一个Java请求(在Sampler中),在Java请求的类名称中选择咱们刚创建的类"app.TestLength",在下面参数列表的"testStr"后面输入要测试的字符串,然后添加一个监听器(聚合报告),设置一下模拟的用户数就可以测试了.如果测试不成功,Jmeter会在它自己个输出框中抛出这个字符串.

通过上面的例子我们可以发现,使用Jmeter自定义Java测试代码,配合Jmeter自带的函数,就可以实现出LoadRunner中"Java Vuser"协议的绝大多数功能,而且是没有用户数限制和完全免费的(嘿嘿).上面的例子非常简单,而且没有任何实际意义,只是一个简单的Jmeter测试代码示例,用于抛砖引玉,希望大家一起交流,共同 进步.

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

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

相关文章

julia fit 函数_带有Julia中示例的flipsign()函数

julia fit 函数Julia| flipsign()函数 (Julia | flipsign() function) flipsign() function is a library function in Julia programming language, it accepts two values as parameters and returns a value with the magnitude of first value and sign of the first value…

优化Android应用内存的若干方法

https://my.oschina.net/chaselinfo/blog/198172摘要: 在app开发的各个阶段中要考虑RAM的限制问题, 包括在设计阶段(正式开发之前). 使用下面的不同的方法可以达到很好的效果. 当您在设计和开发Android应用时用下面的方法可以使内存运用最高效.使用保守的Service 如果你的应用需…

一? ilkkn.n_IL&FS的完整形式是什么?

一? il&kkn.nIL&#xff06;FS&#xff1a;基础设施租赁和金融服务 (IL& FS: Infrastructure Leasing & Financial Services) IL&FS is an abbreviation of Infrastructure Leasing & Financial Services. It is the largest infrastructure development …

java notify唤醒原理_Java wait和notify虚假唤醒原理

自己在此记录一下&#xff0c;方便日后复习。虚假唤醒的概念jdk官方文档解释&#xff1a;所以说在wait和notify一块使用时&#xff0c;如果使用if作为条件时&#xff0c;会有虚假唤醒的情况发生&#xff0c;所以必须使用while作为循环条件。下面来举例实验&#xff1a;首先&…

C#里面的三种定时计时器:Timer

在.NET中有三种计时器&#xff1a;1、System.Windows.Forms命名空间下的Timer控件&#xff0c;它直接继承自Componet。Timer控件只有绑定了Tick事件和设置EnabledTrue后才会自动计时&#xff0c;停止计时可以用Stop()方法控制&#xff0c;通过Stop()停止之后&#xff0c;如果想…

wireshark rto_RTO的完整形式是什么?

wireshark rtoRTO&#xff1a;地区运输办公室/公路运输办公室 (RTO: Regional Transport Office/ Road Transport Office) RTO is an abbreviation of the Regional Transport Office. It is an Indian Government departmental organization that is responsible for upholdin…

java8 json转xml_2019-08-17java对象与json,xml互转

依赖的jar包&#xff0c;jackson-all-1.7.6.jar,xstream-1.4.4.jar下载地址:链接&#xff1a;https://pan.baidu.com/s/1LflD135qlQiIPGXw5XwDmw提取码&#xff1a;6v29复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦package json_xml;import com.thoughtworks.xs…

10.8-全栈Java笔记:序列化/反序列化的步骤和实例

本节我们详细讲解10.3节中提到的序列化和反序列化操作。序列化和反序列化是什么当两个进程远程通信时&#xff0c;彼此可以发送各种类型的数据。 无论是何种类型的数据&#xff0c;都会以二进制序列的形式在网络上传送。比如&#xff0c;我们可以通过http协议发送字符串信息&am…

有效的网络推广超级实用方法

我叫龙雨&#xff0c;先后在百度搜狗工作过3年&#xff0c;后来一直负责一家公司的的网络营销!不知道大家有没有听过111>3这样一个概念&#xff0c;简单来说一下这概念!第一呢就是自己的资源&#xff0c;把自己的资源维护好开发好;第二就是网络营销&#xff0c;网络营销利用…

什么为java运行时的环境_什么是JRE?Java运行时环境简介(一)

Java开发工具包(JDK),Java虚拟机(JVM)和Java运行时环境(JRE)共同构成了用于开发和运行Java应用程序的Java平台组件的强大功能.实际上,运行时环境是一种旨在运行其他软件的软件.作为Java的运行时环境,JRE包含Java类库,Java类加载器和Java虚拟机.在这个系统中:的类加载器是负责正…

c语言atoll函数怎么用_C ++中带有示例的atoll()函数

c语言atoll函数怎么用C Atoll()函数 (C atoll() function) atoll() function is a library function of cstdlib header. It is used to convert the given string value to the integer value. It accepts a string containing an integer (integral) number and returns its…

看清美国“黑客帝国”的真面目

“维基揭秘”网站近日发布了近9000份据称属于美国中央情报局的机密文件&#xff0c;显示中情局拥有强大的黑客攻击能力&#xff0c;秘密侵入了手机、电脑、智能电视等众多智能设备。继美国国家安全局承包商前雇员斯诺登曝光国安局“棱镜”等监控计划之后&#xff0c;此次曝光再…

python 示例_带有示例的Python File close()方法

python 示例文件close()方法 (File close() Method) close() method is an inbuilt method in Python, it is used to flush and close the IO object (file). If we close a closed file it has no effect. close()方法是Python中的内置方法&#xff0c;用于刷新和关闭IO对象(…

linux上mysql分区磁盘位置_Linux下Oracle软件、数据文件等所在的磁盘分区空间不足的解决思路...

虚拟机中的ORACLE运行的久了&#xff0c;归档、数据文件不断增长&#xff0c;原来安装ORACLE的分区空间不足。此时可以重新向虚拟机增加一块硬盘&#xff0c;将OR虚拟机中的Oracle运行的久了&#xff0c;归档、数据文件不断增长&#xff0c;原来安装ORACLE的分区空间不足。此时…

FloatingActionMenu 向上弹出菜单

本人在github上找到了一个FloatingActionsMenu,精简了其效果&#xff08;原效果有上下左右四个方向&#xff09;仅仅保留向上的效果&#xff0c;并做了一定的优化。github上的源代码&#xff1a;地址 &#xff0c;精简后的源代码地址:源代码地址。 转载于:https://www.cnblogs.…

java uuid静态方法_Java UUID的variant()方法和示例

java uuid静态方法UUID类variant()方法 (UUID Class variant() method) variant() method is available in java.util package. variant()方法在java.util包中可用。 variant() method is used to get the variant number linked with this UUID. variant()方法用于获取与此UUI…

java程序服务不能启动不了_JavaService.exe注册的windows服务无法启动问题

最近开发了个java程序&#xff0c;打成 jar 包想要在windows后台运行&#xff0c;于是使用JavaService.exe进行windows服务注册&#xff0c;服务注册很成功&#xff0c;但是在启动时显示“服务无法启动”&#xff0c;为此耗费了大量的时间与精力&#xff0c;终于发现问题所在&a…

给孩子一束安全的光 明基WiT MindDuo亲子共读灯首发评测

论一束光的重要性你该听听一个高度近视孩子的自述&#xff0c;论童年陪伴的重要性你该听听一个留守儿童的自述&#xff0c;改善孩子童年的全球第一盏亲子共读台灯&#xff0c;贴合孩子与家长的心灵&#xff0c;量身打造每一种情境的光线去感受孩子成长学习过程 一个高度近视眼孩…

Java Scanner next()方法与示例

扫描仪类的next()方法 (Scanner Class next() method) Syntax: 句法&#xff1a; public String next();public String next(Pattern patt);public String next(String patt);next() method is available in java.util package. next()方法在java.util包中可用。 next() metho…

mysql怎样查表的模式_mysql常用基础操作语法(四)--对数据的简单无条件查询及库和表查询【命令行模式】...

1、mysql简单的查询&#xff1a;select 字段1&#xff0c;字段2... from tablename;如果字段那里写一个*&#xff0c;代表查询所有的字段&#xff0c;等同于指定出所有的字段名&#xff0c;因此如果要查询所有字段的数据&#xff0c;一般都是用*。2、去重查询&#xff1a;selec…