jmeter java性能_使用JMeter进行性能测试(Java请求)

来源:http://wangym.iteye.com/blog/731729

看了两篇如何使用JMeter在HTTP请求及数据库方面做性能测试的文章(如下两个链接),感受到这款工具的强大及易用。我在这里延续下,对JMeter里另外一种常用的测试类型:"Java请求",做个入门级的介绍。

http://www.ibm.com/developerworks/cn/java/l-jmeter/

http://www.ibm.com/developerworks/cn/opensource/os-pressiontest/

"Java请求"是指JMeter对Java Class进行性能测试。在没有使用JMeter这类工具前,我对Class的性能测试,基本都是通过自己写个循环,然后单线程或并发着去运行,最终输出整体所耗时间。

一、启动JMeter

首先下载:

http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi

无论是Linux/WIndows,最简单的方法是下载Binary版本

启动图形界面方法:

Linux下运行 $安装目录/bin/jmeter.sh

Windows下运行 $安装目录/bin/jmeter.bat

二、编写用例

针对"Java请求"类型的测试,需要基于JMeter测试框架编写测试用例。

1、新建一个普通的Java工程

2、将 $安装目录/lib/ 目录引入工程

3、新建一个Java Class,如下例中的"PerformanceTest",并继承"AbstractJavaSamplerClient"

代码示例:

Java代码

3c442006cd0171a9bcdfca1283ebbde5.png

/**

*

*/

packagetest;

importorg.apache.jmeter.config.Arguments;

importorg.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;

importorg.apache.jmeter.protocol.java.sampler.JavaSamplerContext;

importorg.apache.jmeter.samplers.SampleResult;

/**

*@authorxuanyin

*

*/

publicclassPerformanceTestextendsAbstractJavaSamplerClient{

/**

*

*/

privatestaticlongstart=0;

privatestaticlongend=0;

/**

*执行runTest()方法前会调用此方法,可放一些初始化代码

*/

publicvoidsetupTest(JavaSamplerContextarg0){

//开始时间

start=System.currentTimeMillis();

}

/**

*执行runTest()方法后会调用此方法.

*/

publicvoidteardownTest(JavaSamplerContextarg0){

//结束时间

end=System.currentTimeMillis();

//总体耗时

System.err.println("costtime:"+(end-start)/1000);

}

/**

*JMeter界面中可手工输入参数,代码里面通过此方法获取

*/

publicArgumentsgetDefaultParameters(){

Argumentsargs=newArguments();

returnargs;

}

/**

*JMeter测试用例入口

*/

@Override

publicSampleResultrunTest(JavaSamplerContextarg0){

SampleResultsr=newSampleResult();

try{

//Start

sr.sampleStart();

/**

*Start~End内的代码会被JMeter

*纳入计算吞吐量的范围内,为了使

*性能结果合理,无关代码不必放此

*/

//TODO

/**

*True/False可按测试逻辑传值

*JMeter会对失败次数做出统计

*/

sr.setSuccessful(true);

//End

sr.sampleEnd();

}catch(Exceptione){

e.printStackTrace();

}

returnsr;

}

Tips:

* 可以添加main(String[] args)方法,更直观地在本地调试无误后,再把代码移至runTest()方法内

* System.out等的输出会显示在启动JMeter时的命令窗口内,但过多的输出会影响性能的准确性

4、完成用例后,将工程导出成Jar,放置于 $安装目录/lib/ext/ 下,其它依赖的Jar放置于 $安装目录/lib/ 下

5、启动(或重启)JMeter

三、运行用例

1、选中主界面左侧的“测试计划”,右键菜单->添加->Threads(Users)->线程组

2、再选中刚才新增的"线程组",右键菜单->添加->Sampler->Java请求

3、再选中刚才新增的"Java请求",右键菜单->添加->监视器->聚合报告

(聚合报告即是性能测试结果报告)

4、在"Java请求"选项卡中可以选择你想测试的类名;在"线程组"选项卡中可以输入想循环的次数及并发线程数

5、一切就绪后,点击菜单栏上的"运行"->启动,JMeter即会按第4步的配置开始运行,选中"聚合报告"即可查看实时状态

93c1103db908ff5179a682aeff2d0e09.png

Tips:

* 如果在"Java请求"选项卡中未找到编写的测试用例类名:

则请先确认用例是否继承了JMeter框架;

其次保证用例的Jar文件在 $安装目录/lib/ext/ 下;

尝试重启JMeter

如有使用问题,欢迎给我留言一起探讨。

养成给代码做性能对比的习惯,是一名合格程序员必不可缺的素质。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值