看了两篇关于如何用JMeter进行HTTP请求及数据库方面做性能测试的文章(如下两个链接),感受到这款工具的强大和易用。我在这里延续一下,对另一种常用的测试类型"Java请求",做个入门级的介绍。
http://www.ibm.com/developerworks/cn/java/l-jmeter/
http://www.ibm.com/developerworks/cn/opensource/os-pressiontest/
"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";
代码示例:
/**
*
*/
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会对失败次数做出统计
*/
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。
如有使用问题,欢迎一起探讨。
养成给代码做性能对比的习惯,是一名合格程序员基本的素质。