我们在做性能测试时,有时需要自己编写测试脚本,很多测试工具都支持自定义编写测试脚本,比如LoadRunner就有很多自定义脚本的协议,比如"C Vuser","Java Vuser"等协议.同样,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测试代码示例,用于抛砖引玉,希望大家一起交流,共同 进步.
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1487685
相关推荐
这些参数对应于Java类中的属性,可以通过JMeter的GUI界面设置,然后在代码中通过`getProperties()`和`setProperties()`方法获取和设置。 二、JMeter Java Sampler应用 1. 自定义协议支持: 如果你需要测试的系统...
在JMeter中使用Java Request进行TCP测试,你需要编写Java代码来建立TCP连接,发送数据,并处理服务器返回的数据。这通常涉及到Socket编程,包括Socket的创建、数据的编码与解码等步骤。 HTTP请求则是我们最常见的...
在完成代码编写后,你需要打包成 JAR 文件,并将其放入 JMeter 的 `lib/ext` 目录。然后重启 JMeter,新的取样器插件就应该可以在“添加 -> 取样器”菜单中找到了。 总的来说,使用 Java 开发 JMeter 自定义取样器...
总结来说,JMeter的Java Sampler提供了对自定义协议和底层接口性能测试的能力,通过编写Java代码,测试者可以更精确地模拟负载,评估应用在特定场景下的性能。在实际项目中,Java Sampler是测试复杂系统和非标准接口...
编写Java代码 在Java Request采样器中,有一个名为“Java Class”的输入框,这是你需要编写或导入自定义Java类的地方。你可以直接在该框中编写简单的Java代码,或者指定已存在于项目类路径中的类。例如,如果你要...
在BeanShell预处理程序中,我们可以编写Java代码,例如import com.bjhg.test.BeanShellJMeter;,然后实例化BeanShellJMeter对象,并调用其方法。 总结 通过本教程,我们可以了解如何将自定义的Jar包引入JMeter,以...
JMeter支持JSR223兼容的语言(如Groovy和BeanShell)来编写脚本,提供了丰富的函数和定时器供用户自定义测试行为。 项目实战阶段,测试人员通常会创建线程组,设定并发用户数量,添加HTTP请求采样器模拟用户访问,...
《JMeter进行环境部署与性能测试的全面指南》 JMeter,全称为Apache JMeter,是一款功能强大的开源性能测试工具,最初专为Web应用测试...在实际工作中,根据具体需求灵活运用JMeter的各项功能,是进行性能测试的关键。
自定义Sample通常指的是开发者根据项目需求创建的示例代码或测试用例,而自定义协议则可能指的是网络通信中使用的非标准数据交换格式。在这个过程中,我们需要理解以下几个关键知识点: 1. **自定义Sample**:在...
本资源包含的是最新版本的"JMeter"和"Badboy"两款压力测试工具,它们是测试人员的得力助手,有效解决了一些旧版本可能导致的问题,如Badboy导出的脚本在JMeter中无法正常使用的状况。 **JMeter** Apache JMeter是...
3. **可扩展性**:支持自定义插件,可以通过编写Java代码或使用BeanShell、JSR223脚本语言实现自定义功能。 4. **丰富的测试元素**:包含HTTP请求、HTTP响应断言、定时器、监听器等多种测试组件,覆盖了全面的测试...
Apache JMeter是一款强大的性能测试工具,完全由Java编写,用于测试C/S架构的软件,特别是Web应用程序。它能够评估各种类型的资源,如静态文件、Java Servlets、Java对象、数据库和FTP服务器的性能。JMeter的功能...
- **安全**:确保数据库访问凭证的安全,避免在测试脚本中硬编码敏感信息。 - **性能监控**:在执行测试时,监测数据库的CPU使用率、内存消耗等指标,确保数据库服务器能应对预期的负载。 通过以上步骤,你可以使用...
BeanShell是JMeter内置的Java脚本引擎,允许我们在测试运行前执行自定义的Java代码。在这个预处理器中,我们将编写Java脚本来生成OAuth签名,这是OAuth 1.0认证过程的关键部分。 3. **Java脚本实现OAuth签名**: ...
JMeter使用Java编写,具有跨平台性,易于安装和使用。它的核心功能包括: 1. GUI测试:JMeter提供了一个易于使用的图形用户界面,用户可以轻松地创建和运行测试计划以及检查测试结果。 2. 多线程测试:JMeter支持...
4. **JMeter的二次开发**: JMeter本身是一个强大的性能测试工具,支持自定义插件和脚本编写,因此开发者可以根据需求扩展其功能。在进行二次开发时,可能需要集成Bouncy Castle的库来处理加密通信、证书验证等安全...
一旦jar包被正确地引入,你就可以编写一个Java程序,利用`JmeterResult.jar`中的类和方法来解析JMeter的CSV结果文件,并使用`jxl.jar`将数据写入Excel。 下面是一段示例代码,展示了如何使用这两个库: ```java ...