jmeter测试工具的使用

官网下载了apache-jmeter-3.3,配置环境变量,固然jdk要事先配好。java

通常用来测试并发和接口压力测试,因为工做须要用到以上需求,因此去了解下,而且记录下apache

 

其余基本使用就不介绍了,说下怎么写自定义函数吧,业务上模拟http下单请求,由于下单信息须要作加密,单一的参数提交已经不能实现需求,因此用到java代码来实现并发

  1. 在开发工具上新建java项目,导入下面几个jar包,jar包都在apache-jmeter-3.3的安装目录下的\lib\ext
  2. 新建项目包,包名以.functions结尾
  3. 新建自定义类,继承AbstractFunction
  4. 获得以下几个父类的方法
  • public List<String> getArgumentDesc() 
  • public String execute(SampleResult arg0, Sampler arg1) throws InvalidVariableException
  • public String getReferenceKey()
  • public void setParameters(Collection<CompoundVariable> arg0)
                throws InvalidVariableException

 

 

======源代码=====app

public class MySignFunc extends AbstractFunction {ide

    private static final List<String> desc = new LinkedList<String>();
     private static final int MAX_PARA_COUNT = 8;
     private static final int MIN_PARA_COUNT = 8;
    static {
        desc.add("输入appId");
        desc.add("输入appSecret");
        desc.add("输入phone");
        desc.add("输入flowVal");
        desc.add("输入scope");
        desc.add("输入outOrderId");
        desc.add("输入callbackUrl");
        desc.add("输入timestamp");
        desc.add("输入testModel");
    }
    
    private Object[] values;
    //function名称
    private static final String KEY = "__MySignFunc";
    private  String signStr = "";
    
    @Override
    public List<String> getArgumentDesc() {
        // MyTask Auto-generated method stub
        return desc;
    }函数

    @Override
    public String execute(SampleResult arg0, Sampler arg1)
            throws InvalidVariableException {
        // MyTask Auto-generated method stub
        String appId = ((CompoundVariable) values[0]).execute(); 
        String appSecret = ((CompoundVariable) values[1]).execute(); 
        String phone = ((CompoundVariable) values[2]).execute(); 
        String flowVal = ((CompoundVariable) values[3]).execute(); 
        String scope = ((CompoundVariable) values[4]).execute(); 
        String outOrderId = ((CompoundVariable) values[5]).execute(); 
        String callbackUrl = ((CompoundVariable) values[6]).execute(); 
        String timestamp = ((CompoundVariable) values[7]).execute(); 
        String testModel = ((CompoundVariable) values[8]).execute();
        HashMap<String, String> params = new HashMap<>();
        params.put("appId", appId);
        params.put("phone", phone);
        params.put("flowVal", flowVal);
        params.put("scope",scope);
        params.put("outOrderId", outOrderId); 
        params.put("callbackUrl",callbackUrl);
        params.put("timestamp", timestamp);
        params.put("testModel", testModel);
        String signStr =MapUtils.createLinkString(params)+appSecret;
        String sign = EncryptUtils.md5(signStr);
        return sign;
    }工具

    @Override
    public String getReferenceKey() {
        // MyTask Auto-generated method stub
        return KEY;
    }开发工具

    @Override
    public void setParameters(Collection<CompoundVariable> arg0)
            throws InvalidVariableException {
        // MyTask Auto-generated method stub
        values = arg0.toArray(); //将值存入类变量中
    }测试

}
 加密

导出jar包。放到\lib\ext下,重启jmeter,就会看到本身写的函数啦

输入对应的值,点击生成测试值是否正确,固然,值是变量来的,否则函数就是去了意义,变量能够采用 自定义用户变量的值或者读取数据文件的值,具体就不详细描述了。

相关文章
相关标签/搜索