QA

Jemeter插件开发

0x00.这段时间做服务器接口测试,遇到一个需要动态获取校验码的,需要自己开发插件。

0x01.准备基本的开发环境eclipse,下载jmeter源码,导入工程。下载地址:http://jmeter.apache.org/download_jmeter.cgi,请选择你使用的jmeter对应版本的源码。
0x02.在src/functions下新建你自己的函数类
0x03.开始码代码:

package org.apache.jmeter.functions;

import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.samplers.Sampler;

public class {"函数名称"}extends AbstractFunction {
    
    //private static final Logger log = LoggingManager.getLoggerForClass();
    private static final List desc = new LinkedList();
    private static final String KEY = "__函数名称";
    private Object[] values = null;

    //Add arguments description
    static{
        desc.add("参数提示一");
        desc.add("参数提示二");
    }
    
    @Override
    public List getArgumentDesc() {
        // TODO Auto-generated method stub
        return desc;
    }

    @Override
    public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException {
        
        String numberString1 = ((CompoundVariable) values[0]).execute().trim();
        String numberString2 = ((CompoundVariable) values[1]).execute().trim();
        String 参数一;
        String 参数二;
        try{
            url = numberString1;
            isAuth = numberString2;
        } catch (Exception e){
            return null;
        }

        return String.valueOf(work(参数一,参数二));
    }
    
    public static void  print(String s){
        System.out.println(s);
    }

    private String work(String 参数一,String 参数二) {        
            
        String ret = null;
        //.....your code
        return ret;
    }

    @Override
    public void setParameters(Collection parameters) throws InvalidVariableException {
        //可以检查参数数量,主要包括以下两种方法
        checkMinParameterCount(parameters, 2);
        checkParameterCount(parameters, 2, 2);
        values = parameters.toArray();
        
    }

    @Override
    public String getReferenceKey() {
        //显示的函数名称
        return KEY;
    }
    
}    
This is just a placeholder img.