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

 

 

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

 

 

一、启动JMeter

 

首先下载:

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

Binary版本

 

启动图形界面方法:

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

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

 

二、编写用例

 

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

 

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

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

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

 

代码示例:

 


jmeter 发起本地java请求 jmeter java 请求_apache



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


   

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

 

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

------------------------------------------------------------


目的:对Java程序进行测试;


 



一、核心步骤






1.创建一个Java工程;


2.将JMeter的lib目录下的jar文件添加进此工程的Build Path;


3.创建一个类并实现JavaSamplerClient接口或继承AbstractJavaSamplerClient,并重写:

• public Arguments getDefaultParameters():设置可用参数及的默认值;
• public void setupTest(JavaSamplerContext arg0):每个线程测试前执行一次,做一些初始化工作;
• public SampleResult runTest(JavaSamplerContext arg0):开始测试,从arg0参数可以获得参数值;
• public void teardownTest(JavaSamplerContext arg0):测试结束时调用;


4.Export为Runnable Jar File


5.将此jar包放入JMETER_HOME\lib\ext目录;


6.以管理员身份打开JMeter;


7.创建线程组、Java Request、结果树,进行测试;