目录
前言
在软件开发过程中,性能测试是一个非常重要的环节。而在性能测试过程中,使用 JMeter 是一个非常实用的工具。JMeter 是一个开源性能测试工具,可以用来测试 Web 应用程序的性能。它提供了一些简单易用的方法来构建性能测试,并可以自动化测试应用程序的性能。
原理
其实原理十分简单,我们一般就是用 Jmeter 的 GUI 来完成工作么。现在我们不用 GUI 了,我们直接引用 jmeter 的核心 lib,直接调用 jmeter 的 API 来执行我们的操作。你需要引入 maven 的依赖。如下
<dependency>
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<version>1.10.1</version>
<exclusions>
<exclusion>
<artifactId>ApacheJMeter_config</artifactId>
<groupId>org.apache.jmeter</groupId>
</exclusion>
</exclusions>
</dependency>
然后运行的时候,你还是需要装一个 Jmeter 的,这个我没绕过去。需要在代码中设置 jmter 的 home。以及一些其他的配置信息
JMeterUtils.setJMeterHome(Constant.getJmeterHome());
JMeterUtils.loadJMeterProperties(Constant.getJmeterHome()
+ "/bin/jmeter.properties");
JMeterUtils.setProperty("jmeter.save.saveservice.output_format", "xml");
File log = new File(Constant.logFilePath() + "perfTest.log");
private static String jmeterHome = "E:\\apache-jmeter-2.13";//jmeter的home目录
代码部分
现在我们来看看核心代码部分吧
Logger.info("测试方法: "+caseInfo.getName());
Logger.info("起始并发数: "+caseInfo.getBeginThread());
Logger.info("递增并发数: "+caseInfo.getAddThread());
Logger.info("结束并发数: "+caseInfo.getEndThread());
Logger.info("每个线程的循环次数: "+caseInfo.getLoop());
//Logger.html_link("1111", "222");
JMeterUtils.setJMeterHome(Constant.getJmeterHome());
JMeterUtils.loadJMeterProperties(Constant.getJmeterHome()
+ "/bin/jmeter.properties");
JMeterUtils.setProperty("jmeter.save.saveservice.output_format", "xml");
File log = new File(Constant.logFilePath() + "perfTest.log");
JMeterUtils.setProperty(LoggingManager.LOG_FILE, log.getAbsolutePath());
JMeterUtils.initLogging();// you can comment this line out to see extra
// log messages of i.e. DEBUG level
JMeterUtils.initLocale();
// Initialize JMeter SaveService
SaveService.loadProperties();
JavaSampler javaSample = new JavaSampler();
javaSample.setClassname(caseInfo.getName());
// Loop Controller
LoopController loopController = new LoopController();
loopController.addTestElement(javaSample);
loopController.setLoops(caseInfo.getLoop());
loopController.setFirst(true);
loopController.initialize();
// Thread Group
List<ThreadGroup> thread