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

原文地址:http://wangym.iteye.com/blog/731729

"Java请求"测试是指通过JMeter工具对Java Class进行压力测试。JMeter可设定测试时的并发线程数、循环次数或测试时长等,模拟出巨大的负载后便可观察在不同压力下程序的强度和分析出整体性能。

 

一.启动JMeter

 

下载:

http://jmeter.apache.org/download_jmeter.cgi

启动:

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

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

 

二.编写用例

 

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

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

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

3、新建Java Class,如下的"PerformanceTest ",并继承"AbstractJavaSamplerClient";


例: 已给被测class为:


public class HelloWorld {
    public static int sum = 0;
    public static void sum(int a, int b) {
        sum = a + b;
        // System.out.println(sum);
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        HelloWorld a = new HelloWorld();
        a.sum(1, 2);
    }
}
测试上面这个class的性能,只需要实现一个用例,一直调用他,然后进行结果统计。测试case的实现:

Java代码   收藏代码
  1. /** 
  2.  *  
  3.  */  
  4. package test;  
  5.   
  6. import org.apache.jmeter.config.Arguments;  
  7. import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;  
  8. import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;  
  9. import org.apache.jmeter.samplers.SampleResult;  
  10.   
  11. /** 
  12.  * @author xuanyin 
  13.  *  
  14.  */  
  15. public class PerformanceTest extends AbstractJavaSamplerClient {  
  16.   
  17.         /** 
  18.          *  
  19.          */  
  20.         private static long start = 0;  
  21.         private static long end = 0;  
  22.   
  23.         /** 
  24.          * 执行runTest()方法前会调用此方法,可放一些初始化代码 
  25.          */  
  26.         public void setupTest(JavaSamplerContext arg0) {  
  27.   
  28.                 // 开始时间  
  29.                 start = System.currentTimeMillis();  
  30.         }  
  31.   
  32.         /** 
  33.          * 执行runTest()方法后会调用此方法. 
  34.          */  
  35.         public void teardownTest(JavaSamplerContext arg0) {  
  36.   
  37.                 // 结束时间  
  38.                 end = System.currentTimeMillis();  
  39.                 // 总体耗时  
  40.                 System.err.println("cost time:" + (end - start) / 1000);  
  41.         }  
  42.   
  43.         /** 
  44.          * JMeter界面中可手工输入参数,代码里面通过此方法获取 
  45.          */  
  46.         public Arguments getDefaultParameters() {  
  47.   
  48.                 Arguments args = new Arguments();  
  49.                 return args;  
  50.         }  
  51.   
  52.         /** 
  53.          * JMeter测试用例入口 
  54.          */  
  55.         @Override  
  56.         public SampleResult runTest(JavaSamplerContext arg0) {  
  57.   
  58.                 SampleResult sr = new SampleResult();  
  59.   
  60.                 try {  
  61.                         // Start  
  62.                         sr.sampleStart();  
  63.                         /** 
  64.                          * Start~End内的代码会被JMeter 
  65.                          * 纳入计算吞吐量的范围内,为了使 
  66.                          * 性能结果合理,无关代码不必放此 
  67.                          */  
  68.                         // TODO  
  69.                         /** 
  70.                          * True/False可按测试逻辑传值 
  71.                          * JMeter会对失败次数做出统计 
  72.                          */ 
  73.                         HelloWorld test=new HelloWorld();
  74.                         test.sum(1,1);
  75.                         //被测对象调用
  76.                         sr.setSuccessful(true);  
  77.                         // End  
  78.                         sr.sampleEnd();  
  79.                 } catch (Exception e) {  
  80.                         e.printStackTrace();  
  81.                 }  
  82.   
  83.                 return sr;  
  84.         }  

 

4、导出成Jar并置于 $JMeter安装目录/lib/ext/ 下,若有依赖Jar也置于 $JMeter安装目录/lib/ 下;

5、启动或重启JMeter。

三、运行用例

 

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

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

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

4、选择想测试的类名,并在"线程组"选项中输入循环次数及并发线程数;

5、点击菜单栏上"运行"->启动后便开始运行,在"聚合报告"查看结果数据。

 

 

Tips:

若在"Java请求"选项中未找到测试用例类名: 则请先确认用例是否继承了JMeter框架的基类; 其次保证用例Jar文件在 $安装目录/lib/ext/ 下; 尝试重启JMeter。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值