目的:对Java程序进行测试
目录
一、核心步骤
二、实例
三、JMeter Java Sampler介绍
四、自带Java Request Sampler
一、核心步骤
1.创建一个Java工程;
2.将JMeter的lib目录下的jar文件添加进此工程的Build Path;
3.创建一个类并实现JavaSamplerClient接口或继承AbstractJavaSamplerClient,并重写;
publicArguments getDefaultParameters();设置可用参数及的默认值;publicvoidsetupTest(JavaSamplerContext arg0):每个线程测试前执行一次,做一些初始化工作;publicSampleResult runTest(JavaSamplerContext arg0):开始测试,从arg0参数可以获得参数值;publicvoidteardownTest(JavaSamplerContext arg0):测试结束时调用;
4.Export为Runnable Jar File;
5.将此jar包放入JMETER_HOME\lib\ext目录;
6.以管理员身份打开JMeter;
7.创建线程组、Java Request、查看结果树,进行测试;
二、实例
1.在eclipse里面新建一个工程:JavaForJMeter
2.把{Jmeter_home}\lib目录下的所有jar添加进此工程的Build Path;
3.添加类Hello,代码如下:
packagecom.test.webservice;publicclassHello {publicString sayHello()
{return"Hello";
}publicString sayHelloToPerson(String s)
{if(s ==null|| s.equals(""))
s= "nobody";return(newStringBuilder()).append("Hello ").append(s).toString();
}publicintsum(inta,intb)
{returna+b;
}
}
4.添加类perftest,并继承AbstractJavaSamplerClient,并添加代码如下:
注意:System.out等的输出会显示在启动JMeter时的命令窗口内,但过多的输出会影响性能的准确性。
packagecom.test.webservice;importorg.apache.jmeter.config.Arguments;importorg.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;importorg.apache.jmeter.protocol.java.sampler.JavaSamplerContext;importorg.apache.jmeter.samplers.SampleResult;importcom.test.webservice.Hello;publicclassperftestextendsAbstractJavaSamplerClient {privateString a;privateString b;/**Holds the result data (shown as Response Data in the Tree display).*/privateString resultData;//这个方法是用来自定义java方法入参的。//params.addArgument("num1","");表示入参名字叫num1,默认值为空。//设置可用参数及的默认值;publicArguments getDefaultParameters() {
Arguments params=newArguments();
params.addArgument("num1", "");
params.addArgument("num2", "");returnparams;
}//每个线程测试前执行一次,做一些初始化工作;publicvoidsetupTest(JavaSamplerContext arg0) {
}//开始测试,从arg0参数可以获得参数值;publicSampleResult runTest(JavaSamplerContext arg0) {
a= arg0.getParameter("num1");
b= arg0.getParameter("num2");
SampleResult sr=newSampleResult();
sr.setSampleLabel( "Java请求哦");try{
sr.sampleStart();//jmeter 开始统计响应时间标记Hello test =newHello();//通过下面的操作就可以将被测方法的响应输出到Jmeter的察看结果树中的响应数据里面了。resultData =String.valueOf(test.sum(Integer.parseInt(a), Integer
.parseInt(b)));if(resultData !=null&& resultData.length() > 0) {
sr.setResponseData("结果是:"+resultData, null);sr.setDataType(SampleResult.TEXT);
}//System.out.println(resultData);sr.setSuccessful(true);
}catch(Throwable e) {
sr.setSuccessful(false);
e.printStackTrace();
}finally{
sr.sampleEnd();//jmeter 结束统计响应时间标记}returnsr;
}//测试结束时调用;publicvoidteardownTest(JavaSamplerContext arg0) {//System.out.println(end);//System.out.println("The cost is"+(end-start)/1000);}//main只是为了调试用,最后打jar包的时候注释掉。/*public static void main(String[] args)
{ // TODO Auto-generated method stub
Arguments params = new Arguments();
params.addArgument("num1", "1");//设置参数,并赋予默认值1
params.addArgument("num2", "2");//设置参数,并赋予默认值2
JavaSamplerContext arg0 = new JavaSamplerContext(params);
perftestbbb test = new perftestbbb();
test.setupTest(arg0);
test.runTest(arg0);
test.teardownTest(arg0);
}*/}
5.Export为Runnable Jar File:hello.jar
6.将此hello.jar包放入JMETER_HOME\lib\ext目录;
7.打开JMeter,添加线程组,添加Java请求,查看结果树。
三、JMeter Java Sampler介绍
Arguments
getDefaultParameters() 用于获取界面的参数
SampleResult
runTest(JavaSamplerContext context) 类似于LR的Action,result.sampleStart()一个事务开始,result.sampleEnd()一个事务 结束
void
setupTest(JavaSamplerContextcontext)初始化方法,类似于LR的init和Junit中的setUp()
void
teardownTest(JavaSamplerContextcontext)类似于LR的end和Junit中的tearDown()
执行的先后顺序为:
getDefaultParameters() -->setupTest(JavaSamplerContext context) -->runTest(JavaSamplerContext context) -->teardownTest(JavaSamplerContextcontext)
常用的方法:
①、addArgument("name", "value") 定义参数
②、sampleStart() 定义事务的开始,类似于LR的lr_start_transaction,和LR一样事务间不要放无关代码
③、sampleEnd() 定义事务的结束,类似于LR的lr_end_transaction
④、setSuccessful(true、false) 设置运行结果的成功或失败,Jmeter统计成功失败的次数,在聚合报告中能够体现。
四、自带Java Request Sampler
JMeter默认实现了两个Java Request Sampler:SleepTest Sampler和JavaTest Sampler。
JavaTest Sampler不向服务器发送数据请求,一般被用作调试目的使用。
至此,这已讲解完了。