这里简单说明一下怎么自定义java请求,并利用jmeter做压力测试,希望不仅对测试人员,对开发人员也有帮助。
1 创建java请求类
1) 在eclipse中创建一个java项目
2) 导入Jmeterhome/lib/ext下的两个包:ApacheJMeter_java.jar和ApacheJMeter_core.jar
3) 创建一个继承于AbstractJavaSamplerClient的java类
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;
public class javaRequest extends AbstractJavaSamplerClient {
//自定义变量
private SampleResult results;
private String var1=null;
private String var2=null;
//设置传入的参数,可以设置多个,已设置的参数会显示到Jmeter的参数列表中
@Override
public Arguments getDefaultParameters() {
Arguments params = new Arguments();
params.addArgument("param1","");
params.addArgument("param2","");
return params;
}
//初始化方法,实际运行时每个线程仅执行一次,在测试方法运行前执行
@Override
public void setupTest(JavaSamplerContext arg0){
//以下是举例代码
results = new SampleResult();
var1 = arg0.getParameter("param1"); //获取在Jmeter中设置的参数值
if (var1 != null && var1.length() > 0) {
results.setSamplerData(var1);
}
var2=arg0.getParameter("param2");
if (var2 != null && var2.length() > 0) {
results.setSamplerData(var2);
}
}
//测试执行的循环体,根据线程数和循环次数的不同可执行多次
@Override
public SampleResult runTest(JavaSamplerContext arg0) {
SampleResult result = new SampleResult();
boolean success = true;
//事务的起点
result.sampleStart();
// 这里可引用var1、var2编写您的测试代码.
//事务的终点
result.sampleEnd();
//设置本次事务成功或失败
result.setSuccessful(success);
return result;
}
//结束方法,实际运行时每个线程仅执行一次,在测试方法运行结束后执行
@Override
public void teardownTest(JavaSamplerContext arg0){
driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
System.out.println(verificationErrorString);
}
super.teardownTest(arg0);
}
}
2 引入jar包
将以上project导出为jar包,放到jmeter/lib/ext下,重启jmeter。
3 添加线性组
4 添加java request
选择自定义的类,设置对应的参数值。
5 添加监控
聚合报告:
服务器参数监控: