原文地址: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的实现:
- /**
- *
- */
- 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;
- /**
- * @author xuanyin
- *
- */
- public class PerformanceTest extends AbstractJavaSamplerClient {
- /**
- *
- */
- private static long start = 0;
- private static long end = 0;
- /**
- * 执行runTest()方法前会调用此方法,可放一些初始化代码
- */
- public void setupTest(JavaSamplerContext arg0) {
- // 开始时间
- start = System.currentTimeMillis();
- }
- /**
- * 执行runTest()方法后会调用此方法.
- */
- public void teardownTest(JavaSamplerContext arg0) {
- // 结束时间
- end = System.currentTimeMillis();
- // 总体耗时
- System.err.println("cost time:" + (end - start) / 1000);
- }
- /**
- * JMeter界面中可手工输入参数,代码里面通过此方法获取
- */
- public Arguments getDefaultParameters() {
- Arguments args = new Arguments();
- return args;
- }
- /**
- * JMeter测试用例入口
- */
- @Override
- public SampleResult runTest(JavaSamplerContext arg0) {
- SampleResult sr = new SampleResult();
- try {
- // Start
- sr.sampleStart();
- /**
- * Start~End内的代码会被JMeter
- * 纳入计算吞吐量的范围内,为了使
- * 性能结果合理,无关代码不必放此
- */
- // TODO
- /**
- * True/False可按测试逻辑传值
- * JMeter会对失败次数做出统计
- */
- HelloWorld test=new HelloWorld();
- test.sum(1,1);
- //被测对象调用
- sr.setSuccessful(true);
- // End
- sr.sampleEnd();
- } catch (Exception e) {
- e.printStackTrace();
- }
- return sr;
- }
- }
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。