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

 

看了两篇如何使用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代码 
public class Test extends AbstractJavaSamplerClient {
private static String label = "luceneBaseTest";
private String sql1;
private String sql2;
private SampleResult results;
private String testStr;
public void setupTest(JavaSamplerContext arg0) {
System.out.println("setupTest");
results = new SampleResult();
testStr = arg0.getParameter("testString", "");
if (testStr != null && testStr.length() > 0) {
results.setSamplerData(testStr);
}
}
public SampleResult runTest(JavaSamplerContext arg0)
{
sql1 = arg0.getParameter("host");
sql2 = arg0.getParameter("port");
SampleResult sr;
sr = new SampleResult();
sr.setSampleLabel(label);
try
{ // 这里调用我们要测试的java代码
//开始
UsrKwProc usrKwProc = new UsrKwProc("nokia n97 gsm 黑色");
Property property = usrKwProc.getProperty();
int domain = usrKwProc.getDomain();
Searcher search = SearchFactory.creator(property, domain);
// 实例化一个page对象
Page page = new Page();
// 设置每页显示的条数
page.setEveryPage(10);
// 设置首次显示为第一页
page.setCurrentPage(1);
Result re = search.search(page);
List<OutShow> outShows = re.getContent();
//结束
sr.sampleStart(); // 记录程序执行时间,以及执行结果
sr.setSuccessful(true);
System.out.println("send over!");
} catch (Throwable e)
{
System.out.println("Exception is " + e.getMessage());
sr.setSuccessful(false);
} finally
{
sr.sampleEnd();
}
return sr;
}
public void teardownTest(JavaSamplerContext arg0)
{
}
public Arguments getDefaultParameters()
{
Arguments params = new Arguments();
params.addArgument("sql1", "");
params.addArgument("sql2", "");
return params;
}
public static void main(String[] args){
}
}
       

    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步的配置开始运行,选中"聚合报告"即可查看实时状态

     

     

    Tips:

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

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

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

    尝试重启JMeter

     

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

     

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

     

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

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值