参考:http://www.cnblogs.com/yuki-lau/archive/2013/04/20/3033010.html
---------------------------------------
[popexizhi]
编辑“Java请求”属性。下图这个大家可以发现已经有了Launcher类,和userName、password、authUrl的值了,这是因为:
1. 我之前写了满足一定要求的代码,打了jar包,放入了JMeter的lib/ext文件夹下了,所以可以看到Launcher;
2. 我在Launcher类中的getDefaultParameters方法中添加了默认的userName、password、authUrl值
---------------------------------------------
实现“Java请求”代码
针对"Java请求"类型的测试,需要基于JMeter测试框架编写测试用例。
1)新建一个普通的Java工程
2)添加JMeter的包引用,这些包位于 JMeter安装目录/lib/ext下,一般只需要ApacheJMeter_core.jar和ApacheJMeter_java.jar这两个。
3)新建一个Java Class,如下例中的“Launcher”,并继承“AbstractJavaSamplerClient”。AbstractJavaSamplerClient中默认实现了四个可以覆盖的方法,分别是“getDefaultParameters”,“setupTest”,“runTest”和“teardownTest”方法。
---------------------------------------
[popexizhi]
编辑“Java请求”属性。下图这个大家可以发现已经有了Launcher类,和userName、password、authUrl的值了,这是因为:
1. 我之前写了满足一定要求的代码,打了jar包,放入了JMeter的lib/ext文件夹下了,所以可以看到Launcher;
2. 我在Launcher类中的getDefaultParameters方法中添加了默认的userName、password、authUrl值
---------------------------------------------
实现“Java请求”代码
针对"Java请求"类型的测试,需要基于JMeter测试框架编写测试用例。
1)新建一个普通的Java工程
2)添加JMeter的包引用,这些包位于 JMeter安装目录/lib/ext下,一般只需要ApacheJMeter_core.jar和ApacheJMeter_java.jar这两个。
3)新建一个Java Class,如下例中的“Launcher”,并继承“AbstractJavaSamplerClient”。AbstractJavaSamplerClient中默认实现了四个可以覆盖的方法,分别是“getDefaultParameters”,“setupTest”,“runTest”和“teardownTest”方法。
- getDefaultParameters 方法主要用于设置传入界面的参数;
- setupTest方法为初始化方法,用于初始化性能测试时的每个线程;
- runTest方法为性能测试时的线程运行体;
- teardownTest方法为测试结束方法,用于结束性能测试中的每个线程。
package cn.edu.zju.swift.test;
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 cn.edu.zju.swift.JtangSwiftClient; //被测试的类内容
import cn.edu.zju.swift.model.result.AccountResult; //被测试的类内容
public class Launcher extends AbstractJavaSamplerClient{
private JtangSwiftClient client;
@Override
/**
* JMeter界面中展示出此方法所设置的默认参数。
* @return
*/
public Arguments getDefaultParameters() {
Arguments args = new Arguments();
args.addArgument("authUrl", "http://192.168.3.51:8080/auth/v1.0");
args.addArgument("userName", "test:tester");
args.addArgument("password", "testing");
return args;
}
/**
* 执行runTest()方法前会调用此方法,可放一些初始化代码
*/
@Override
public void setupTest(JavaSamplerContext context) {
// 创建SwiftClient
this.client = new JtangSwiftClient(15000, 15000, 8192, true, false);
}
/**
* 执行runTest()方法后会调用此方法,可放一些资源释放代码
*/
@Override
public void teardownTest(JavaSamplerContext context) {
// 关闭连接
this.client.close();
}
@Override
/**
* 性能测试时的线程运行体,执行的业务方法放在这里。
*/
public SampleResult runTest(JavaSamplerContext context) {
// 创建SampleResult对象,用于记录执行结果的状态,并返回
SampleResult sampleResult = new SampleResult();
// 获取JMeter中输入的用户参数
String authUrl = context.getParameter("authUrl");
String userName = context.getParameter("userName");
String password = context.getParameter("password");
// 开始
sampleResult.sampleStart();
AccountResult accountResult = client.auth(authUrl, userName, password);
// 暂停
// sampleResult.samplePause();
// 重启
// sampleResult.sampleResume();
// 结束
sampleResult.sampleEnd();
sampleResult.setSuccessful(accountResult.isSuccess());
// 返回
return sampleResult;
}
}
4)代码编写完毕后,把上面的例子打包(使用eclipse右键项目 -> export -> jar,即可)。然后把生成的"swift-random-action-test.jar"文件拷贝到JMeter的安装目录lib\ext下,就可以在上述“2. 使用JMeter创建测试计划”的4)Java请求编辑页面的下拉列表中看到Launcher类了。
这里有两点需要注意:
1. 如果你的jar依赖了其他第三方jar,需要将其一起放到lib/ext下,否则会出现ClassNotFound错误,这个问题也是困扰了我好久的 T^T;
2. 如果在将jar放入lib/ext后,你还是无法找到你编写的类,且此时你是开着JMeter的,则需要重启一下JMeter。
这里有两点需要注意:
1. 如果你的jar依赖了其他第三方jar,需要将其一起放到lib/ext下,否则会出现ClassNotFound错误,这个问题也是困扰了我好久的 T^T;
2. 如果在将jar放入lib/ext后,你还是无法找到你编写的类,且此时你是开着JMeter的,则需要重启一下JMeter。
没有评论:
发表评论