您的位置:首页 > 编程语言 > Java开发

使用java自定义jmeter的压力测试用例

2014-12-19 15:12 399 查看
    之前已经分享过如何用java进行压力测试,然而,那种直接用代码压测的缺乏图形化GUI的直观。同时,只能够单机进行压测,有些情况下,比如webservice的压测需要大量的序列化反序列化xml,这些很消耗CPU之类的资源的压力测试,单机根本不足。

    基于上述的原因,我选择了jmeter来进来一些压力测试用例的实施,像普通的http压力测试的对jmeter来说都小菜一碟,同时分布式的压力测试对jmeter来说更是对用户透明的。jmeter的资料在网上已经很足够,就不怎么重复了,这次想要重点讲的是如何定义自己的压力测试的用例。

    类似于之前的压力测试模板,jmeter也提供了模板给我们,它就是在线程组下新建sample-》java请求,我们在java请求的选择中会有几个默认的test可以让我们选,这几个都是demo,我们今天要做的就是模仿下这个demo来实现自己的test,来让jmeter加载我们的test。



在这个红线框出的就是我们自己定义的test。

     要实现这样一个test,只需要我们写个类实现jmeter提供的

AbstractJavaSamplerClient 模板类

,然后实现里面的
public SampleResult runTest(JavaSamplerContext javaSamplerContext)

,然后将该类打包成jar包,并且扔进去${jmeter_home}/lib/ext/下,jmeter就会自己在java请求面板中加载。

public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
SampleResult results = new SampleResult();//这个一定要定义,jmeter调用根据这个来计算调用率
try {
results.sampleStart();//开始调用
results.setSampleLabel("lsz");//设置聚合报告中的名字
Thread.sleep(100);
results.setSuccessful(true);
results.setResponseCodeOK();
results.setBodySize(100);
} catch (InterruptedException e) {
e.printStackTrace();
}finally {
results.sampleEnd();//一定要end,不然jmeter不统计这次结果~
}
return results;
}


同样的,我们可以自己定义初始化的参数,只需要重写

public Arguments getDefaultParameters()

返回参数的列表就可以了。

public Arguments getDefaultParameters() {
Arguments params = new Arguments();
params.addArgument("SleepTime", String.valueOf(1000L));
params.addArgument("SleepMask", "0x" + Long.toHexString(1023L).toUpperCase(Locale.ENGLISH));
return params;
}


代码:https://github.com/linsongze/jmeter_javatest
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: