使用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代码   
  1.   
  2. package test;   
  3.   
  4. import org.apache.jmeter.config.Arguments;   
  5. import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;   
  6. import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;   
  7. import org.apache.jmeter.samplers.SampleResult;   
  8.   
  9.   
  10. public class PerformanceTest extends AbstractJavaSamplerClien{   
  11.   
  12.           
  13.         private static long start 0;   
  14.         private static long end 0;   
  15.   
  16.           
  17.         public void setupTest(JavaSamplerContext arg0) {   
  18.   
  19.                 // 开始时间   
  20.                 start System.currentTimeMillis();   
  21.         }   
  22.   
  23.           
  24.         public void teardownTest(JavaSamplerContext arg0) {   
  25.   
  26.                 // 结束时间   
  27.                 end System.currentTimeMillis();   
  28.   
  29.                 // 总体耗时   
  30.                 System.err.println("cost time:" (end start) 1000);   
  31.         }   
  32.   
  33.           
  34.         public Arguments getDefaultParameters() {   
  35.   
  36.                 Arguments args new Arguments();   
  37.   
  38.                 return args;   
  39.         }   
  40.   
  41.           
  42.         @Override  
  43.         public SampleResult runTest(JavaSamplerContext arg0) {   
  44.   
  45.                 SampleResult sr new SampleResult();   
  46.   
  47.                 try {   
  48.   
  49.                         // Start   
  50.                         sr.sampleStart();   
  51.   
  52.                           
  53.   
  54.                         // TODO   
  55.   
  56.                           
  57.                         sr.setSuccessful(true);   
  58.   
  59.                         // End   
  60.                         sr.sampleEnd();   
  61.   
  62.                 catch (Exception e) {   
  63.   
  64.                         e.printStackTrace();   
  65.                 }   
  66.   
  67.                 return sr;   
  68.          
package test; 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 PerformanceTest extends AbstractJavaSamplerClient { private static long start = 0; private static long end = 0; public void setupTest(JavaSamplerContext arg0) { // 开始时间 start = System.currentTimeMillis(); } public void teardownTest(JavaSamplerContext arg0) { // 结束时间 end = System.currentTimeMillis(); // 总体耗时 System.err.println("cost time:" + (end - start) / 1000); } public Arguments getDefaultParameters() { Arguments args = new Arguments(); return args; } @Override public SampleResult runTest(JavaSamplerContext arg0) { SampleResult sr = new SampleResult(); try { // Start sr.sampleStart(); // TODO sr.setSuccessful(true); // End sr.sampleEnd(); } catch (Exception e) { e.printStackTrace(); } return sr; }
   

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Version: Applicable to JMeter 2.8+(适用JMeter版本) 以下为官方说明: Prepare a simple IdGenerator For security reasons, ZK generates ID randomly. However to perform a record & reply test, it is mandatory to fix the IDs of the components. The IdGenerator here is used to create a predictable component id when testing. ———— 官方描述地址 http://blog.zkoss.org/index.php/2013/08/06/zk-jmeter-plugin/ 编译后的class文件,是需要配合jar包一起用的,用来自动关联uuid和data,jar包里面只解决了dtid。因为官方提供源码,需要自己编译后才可以用,我这里是已经编译好的class。(提供给那些没有条件编译的朋友) ———— 使用方法: 1.解压后classes\foo\jmtest目录 直接覆盖在 被测的ZK平台对应目录中(WEB-INF下)。 2.修改zk.xml文件,添加下面内容(WEB-INF下) foo.jmtest.SimpleIdGenerator 3.安装ZK的JMeter插件 把压缩包中的 zk-jmeter-plugin-0.8.0.jar 文件,复制到 JMETER_HOME\lib\ext. ———— 安装完整,重新打开JMeter,可以添加ZK http 代理,录制脚本试试。 下面录制步骤: Prepare a Test Plan 1.Create a Thread Group in Test Group. 2.Add HTTP Cookie Manager in Thread Group 3.Add HTTP Request Defaults in Thread Group. 4.Add Transaction Controller in Thread Group. 5.Edit HTTP Request Defaults, set the Server Name and Port Number. 6.Create a ZK HTTP Proxy Server (Add > Non-Test Elements) in WorkBench, and edit it as follows Set Target Controller to Test Plan > Thread Group > Transaction Controller 7.Start the ZK HTTP Proxy Server

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值