背景
Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件,JMeter小巧轻便且免费。
在实际使用有几个问题:
1. 压测脚本和报告需要人肉保存,对于归档记录的查询很不方便。
2. 使用人员一般需要在个人电脑安装使用。
3. 功能使用略显复杂,需培训使用。
maven 依赖
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_core</artifactId>
<version>${AapacheJMeter.version}</version>
</dependen
<!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_components -->
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_components</artifactId>
<version>${AapacheJMeter.version}</version>
</dependen
<!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_http -->
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_http</artifactId>
<version>${AapacheJMeter.version}</version>
</dependency>
界面 仿 JMeter和postman 结构设计
后台实现主要包括三部分
1. jmx文件生成
注:JMeter提供的bean过于零活,生成不会报错,但是无法正常运行,
调试时通过JMeter工具生成的jmx文件和自己代码生成的jmx文件对比,进行调整。
HashTree hashTree = new HashTree();
TestPlan testPlan = new TestPlan(planDto.getPlanName());
testPlan.setProperty(TestElement.TEST_CLASS, TestPlan.class.getName());
testPlan.setProperty(TestElement.GUI_CLASS, TestPlanGui.class.getName());
testPlan.setUserDefinedVariables((Arguments) new ArgumentsPanel().createTestElement());
/**
* 添加计划
*/
HashTree testPlanTree = hashTree.add(testPlan);
// Loop Controller
LoopController loopController = new LoopController();
loopController.setLoops(planDto.getLoopCount());
loopController.setFirst(true);
if (planDto.getScheduler() == SchedulerEnum.YES.getId()) {
loopController.setContinueForever(false);
loopController.setLoops(-1);
}
loopController.setProperty(TestElement.TEST_CLASS, LoopController.class.getName());
loopController.setProperty(TestElement.GUI_CLASS, LoopControlPanel.class.getName());
loopController.initialize();
// Thread Group
ThreadGroup threadGroup = new ThreadGroup();
threadGroup.setName(planDto.getPlanName());
threadGroup.setNumThreads(planDto.getThreadNum());
threadGroup.setRampUp(planDto.getRampUpPreiod());
threadGroup.setSamplerController(loopController);
if (planDto.getSche