第一个Jmeter插件开发
以Jmeter的Function(函数)组件作为插件开发
什么是Jmeter的Function组件?
Function组件:jmeter-->选项-->函数助手对话框,打开函数助手
功能:通过下拉菜单,查看JMeter为我们默认提供的一系列实用的函数功能,使用函数非常简单,比如”__UUID”函数,功能是生成一个uuid,在后面的输入框中只需输入”${__UUID}”便可以引入调用该函数方法所返回的uuid值,所有的组件都可以对函数组件进行引入。
插件开发方法有两种
第一种:直接在jmeter官网下载 jmeter开源包,在源码里面新加函数,然后导出jar!
第二种:不需要下载源码,直接导入jmeter相应的jar包,即可立即开发!
推荐使用第二种方法,下面都是以第二种方法为例。
一个用于测试的Sampler插件
功能:一个专门用于测试函数或自定义变量输出的Sampler
名称:TestSampler
开发方式:分离法,分为逻辑控制部分TestSampler和GUI部分TestSamplerGUI
一、开发前准备
1、创建Java工程,File-->New-->Project,选择maven工程默认配置,next-->命名为TestSampler-->next
2、在Java工程中引入主要的JMeter插件开发jar包
主要的JMeter插件开发jar包:取jmeter安装目录\lib\ext
- ApacheJMeter_components.jar
- ApacheJMeter_core.jar
- jorphan.jar
- logkit-2.0.jar
二、代码开发
1、TestSampler类代码
Sampler的主要实现方法:通过重写sampler方法,实现执行一次抽样方法;
在此处输出”function”属性所对应的值,即输出GUI界面所引入的函数方法的返回结果。
import org.apache.jmeter.samplers.AbstractSampler;
import org.apache.jmeter.samplers.Entry;
import org.apache.jmeter.samplers.SampleResult;
/**
* @author nikey
* @date 2020/3/30
*/
public class TestSampler extends AbstractSampler {
public final static String FUNCTION = "function";
@Override
public SampleResult sample(Entry entry) {
SampleResult result = new SampleResult();
result.sampleStart();
// 输出GUI界面所输入的函数方法的返回结果
System.out.println(this.getProperty(FUNCTION));
result.sampleEnd();
result.setSuccessful(true);
return result;
}
}
2、TestSamplerGUI类代码
通过modifyTestElement方法,将functionTextField输入框中所输入的值,赋给TestSampler对象的function属性。
import org.apache.jmeter.samplers.gui.AbstractSamplerGui;
import org.apache.jmeter.testelement.TestElement;
import javax.swing.*;
import java.awt.*;
/**
* @author nikey
* @date 2020/3/30
*/
public class TestSamplerGUI extends AbstractSamplerGui {
private JTextField functionTextField = null;
public TestSamplerGUI(){
init();
}
@Override
public void configure(TestElement element) {
super.configure(element);
functionTextField.setText(element.getPropertyAsString(TestSampler.FUNCTION));
}
private void init() {
JPanel mainPanel = new JPanel(new GridBagLayout());
functionTextField = new JTextField(20);
mainPanel.add(functionTextField);
add(mainPanel);
}
@Override
public TestElement createTestElement() {
// 创建所对应的Sampler
TestElement sampler = new TestSampler();
modifyTestElement(sampler);
return sampler;
}
@Override
public String getLabelResource() {
return this.getClass().getSimpleName();
}
@Override
public void modifyTestElement(TestElement sampler) {
super.configureTestElement(sampler);
if(sampler instanceof TestSampler){
TestSampler testSampler = (TestSampler) sampler;
testSampler.setProperty(TestSampler.FUNCTION,functionTextField.getText());
}
}
@Override
public String getStaticLabel() {
// 设置显示名称
return "TestSampler";
}
private void initFields(){
functionTextField.setText("");
}
@Override
public void clearGui() {
super.clearGui();
initFields();
}
}
3、项目目录结构
三、插件打jar包
1、点击 File-->Project Structure(快捷键 Ctrl + Alt + Shift + s),点击Project Structure界面左侧的“Artifacts”如图:
2、Artifacts-->"+",选jar,选择from modules with dependencies,后有配置窗口出现,配置完成后,勾选Include in project build-->ok保存
3、菜单:Build-->Build Project
注意:如果编译报错,检查编译器版本是否正确,检查方法如下:
(1)File-->Settings-->Java Compiler,修改Target bytecode version版本为1.8
(2)Project Structure-->Project/Modules版本改为1.8
4、去打包输出路径,找到jar包
Artifacts-->Output directory:D:\Nikey\Project\Repository\gitee\TestSampler\out\artifacts\TestSampler_jar
四、Jmeter进行插件测试
1、将自研的jar包放入JMeter框架
D:\jmeter安装目录\lib\ext\TestSampler.jar
2、在线程组下添加TestSampler,输入被测试函数,运行该测试计划,检查控制台,控制台输出函数执行结果
操作:线程组右键-->添加-->TestSampler
点击运行后,到控制台查看输出(察看结果树中,请求显示No data to display,响应显示为空)
输出了${__intSum(1,2,a)}函数运行后的结果,1+2=3
上一篇: jmeter性能测试入门简介
下一篇: C语言的内存划分