Jmeter进行性能测试的过程中,经常需要进行某些不同操作的,比如我经常用到的就是动态参数,此时可以通过新建一个java sampler。在sampler中进行处理。最终返回处理后的结果。
1、新建一个maven project。命令如下:
mvn archetype:create -DgroupId=com.alibaba.b2b.qa
-DartifactId=jmeterSamplerExam
2、在eclipse中import此maven project
3、右击项目名,选择Properties->Java Build Path->Libraries->Add External JARs,添加jmeter安装目录下lib\ext中的ApacheJMeter_core.jar和ApacheJMeter_java.jar。如下:
4、新建一个class集成自AbstractJavaSamplerClient(在添加完上面的两个jmeter包后)。命名为JmeterSamplerExam。
默认只有一个runTest函数。
可添加的函数有setupTest、getDefaultParameters、runTest、teardownTest。具体含义如下:
int count;
// 初始化方法,实际运行时每个线程仅执行一次,在测试方法运行前执行,类似于LoadRunner中的init方法
public void setupTest(JavaSamplerContext arg0) {
count = 0;
}
// 设置传入的参数,可以设置多个,已设置的参数会显示到Jmeter的参数列表中
public Arguments getDefaultParameters() {
Arguments arguments = new Arguments();
arguments.addArgument("id", "10");
arguments.addArgument("String", "initString");
return arguments;
}
// 测试执行的循环体,根据线程数和循环次数的不同可执行多次,类似于LoadRunner中的Action方法
public SampleResult runTest(JavaSamplerContext context) {
SampleResult results = new SampleResult();
results.sampleStart(); // 计时开始
for (int i = 0; i < 10000000; i++)
count++;
results.sampleEnd(); // 计时结束
results.setDataEncoding("UTF-8");
results.setResponseCode(count + ""); // 结果返回
// results.setResponseCode(context.getParameter("id")); // 获取参数
results.setResponseMessage("responseMessage"); // 结果返回2
results.setSuccessful(true); // 可用于返回是否处理成功
return results;
}
// 结束方法,实际运行时每个线程仅执行一次,在测试方法运行结束后执行,类似于LoadRunner中的end方法
public void teardownTest(JavaSamplerContext arg0) {
}
参考自:
http://www.51testing.com/html/64/n-218764.html
http://www.51testing.com/html/64/n-218764-2.html
5、为了调试JmeterSamplerExam,新建单元测试代码。右击类名,new->Other如下图:
在打开的select a wizard窗口中选择Java->Junit->Junit Test Case。
在打开的New Junit Test Case窗口的Junit Test Case中,将source folder设置到test目录方便分类即可,其他设置可不变。如下图:
在Test Methods窗口中选择待测试函数。最终生成测试代码。在生成的空函数中加入以下代码,进行调试。
参考自:http://blog.csdn.net/shesunshine/archive/2010/08/20/5826798.aspx
6、在JmeterSamplerExamTest文件中按下F11,进行调试。
若报java.lang.reflect.InvocationTargetException异常。则在pom文件中加入jmeter依赖。代码如下:
<dependency>
<groupId>com.alibaba.external</groupId>
<artifactId>apache.jmeter</artifactId>
<version>2.3</version>
</dependency>
7、调试成功后,注释掉测试代码,右击项目名Easy Shell –> Open。打开cmd窗口。
用mvn
clean install命令编译打包即可。
8、将target目录下生成的jar拷贝至jmeter的lib\ext目录下,重新启动jmeter。
添加一个线程组后添加一个java请求,如下图:
箭头指向就是我们刚才自己写的类
红圈为程序中添加的参数名。
9、一般java sampler的结果可以通过程序中的setResponseCode和setResponseMessage返回。然后在jmeter脚本中通过正则表达式提取出来使用。
setResponseCode的内容可以通过勾选正则响应字段的”响应代码”提取
setResponseMessage的内容可以通过勾选正则响应字段的”响应信息”提取。
正则的更多内容见:
http://www.b2b-qa.com/phpwind/read.php?tid=33
若报
-source 1.3 中不支持泛型
(请使用 -source 5 或更高版本以启用泛型)
在pom.xml中添加
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<verbose>true</verbose>
<fork>true</fork>
<executable><!-- path-to-javac --></executable>
<compilerVersion>1.3</compilerVersion>
</configuration>
</plugin>
</plugins>
</build>
- 大小: 45.2 KB
- 大小: 85.7 KB
- 大小: 22.7 KB
- 大小: 49.7 KB
- 大小: 154.6 KB
- 大小: 55.4 KB
分享到:
相关推荐
总结来说,JMeter的Java Sampler提供了对自定义协议和底层接口性能测试的能力,通过编写Java代码,测试者可以更精确地模拟负载,评估应用在特定场景下的性能。在实际项目中,Java Sampler是测试复杂系统和非标准接口...
Java Sampler是JMeter框架的一部分,它允许开发者用Java语言编写测试脚本,从而实现对任何基于Java接口的服务进行压力测试。这种灵活性使得Java Sampler成为那些无法通过默认取样器实现测试需求的项目的理想选择。 ...
- **创建Java Sampler**: 首先,在JMeter中创建一个新的Java Sampler,以便编写自定义的Java代码来处理SSH连接。 - **引入外部JAR包**: 需要引入处理SSH连接的第三方库,如JSch等。 - **编写SSHUtil工具类**: ...
你可以编写自己的Java类来实现特定的请求逻辑,然后在JMeter中配置这个Java Request sampler来执行你的代码。 对于TCP请求,这是基于传输控制协议的网络通信方式,主要用于提供面向连接的服务。在JMeter中使用Java ...
在完成代码编写后,你需要打包成 JAR 文件,并将其放入 JMeter 的 `lib/ext` 目录。然后重启 JMeter,新的取样器插件就应该可以在“添加 -> 取样器”菜单中找到了。 总的来说,使用 Java 开发 JMeter 自定义取样器...
Java 算法是解决特定问题的步骤序列,是编写程序的核心。常见的算法包括排序(如冒泡排序、选择排序、插入排序、快速排序、归并排序)、搜索(如线性搜索、二分搜索)、图算法(如深度优先搜索、广度优先搜索)、...
它是一个100%纯Java应用程序,可以在多种操作系统上运行,并且支持多平台。JMeter能够测试静态和动态资源,例如服务器、服务和网络应用。 Sampler是JMeter中用于创建测试计划的一个组件,可以模拟用户在客户端对...
Sampler-Machine 的源码可能是用 C++、C# 或其他支持多媒体处理的语言编写的,因此我们需要对这些语言有基本的了解。源码中可能包含了音频文件的读取模块,这部分可能涉及到了如 WAV、MP3、FLAC 等音频格式的解码;...
在Java Request采样器中,有一个名为“Java Class”的输入框,这是你需要编写或导入自定义Java类的地方。你可以直接在该框中编写简单的Java代码,或者指定已存在于项目类路径中的类。例如,如果你要发送一个HTTP请求...
- 在BeanShell Sampler中编写简单的Java代码。 - 示例脚本:`String testStr = "12345"; return testStr;` - **添加外部jar文件**: - 如果需要使用自定义的类或库,可以将其添加到`..\lib\ext`目录下,并在脚本...
2. **读取Excel文件**:在Java中,可以使用Apache POI库来读取Excel文件。POI提供了API来操作Excel文档,包括HSSF(处理老版本的.XLS文件)和XSSF(处理新版本的.XLSX文件)。在这个插件中,我们需要解析指定的Excel...
Apache JMeter 是一款纯 Java 编写的开源性能测试工具,设计用于测试 Web 应用的性能和负载。它可以模拟大量并发用户,测试服务器的响应时间、吞吐量、稳定性等关键指标。JMeter 提供丰富的测试元素,如线程组、采样...
世界风java源码全路径语言采样器 , , , , , , , , , , , , , , , , , , , , , , , , , Fullpath 是我最初用 Ruby 编写的程序(来源是 )。 它是一个很好的小但仍然有用的程序(我经常使用它)。 所以我开始使用它来...
Allocation Instrumenter是使用 API和编写的Java代理。...为了编写自己的分配跟踪代码,您必须实现Sampler接口并将该接口的一个实例传递给AllocationRecorder.addSampler() : AllocationRecorder . addSampler
首先,你需要编写一个Java类,该类实现了JMeter的Sampler接口。这个接口定义了必要的方法,如`sample()`,用于执行实际的采样操作。然后,你可以在这个类中实现报文的构建、转码逻辑以及TCP连接和数据发送。 对于...
首先,Jmeter 是由 Java 编写的,因此它可以无缝地与 Java 代码集成。调用 Java 脚本有三种主要方式:调用 .java 文件、调用 .class 文件以及调用 .jar 文件。每种方法都有其适用场景和优缺点,下面将分别进行详细...