iper工具使用指南02(jmeter的java接口篇)

来源:互联网 发布:淘宝订单金额字体 编辑:程序博客网 时间:2024/05/20 06:31

前一篇我们介绍了http请求的jmeter脚本的创建,现在我们介绍下,如何写java的接口性能测试;

首先,在eclipse环境下创建一个java工程,然后加入你要压测系统的jar包,同时还需要将jmeter的测试基础包加进来:ApacheJMeter_java.jar和ApacheJMeter_core.jar,这两个jar包在jmeter工具的lib\ext下可以找到;为了方便调试,还会增加一些jmeter的日志包:jorphan.jar,logkit-2.0.jar,commons-logging-1.1.1.jar,avalon-framework-4.1.4.jar,这些jar包,都可以在Jmeter工具的lib下面找到;

添加好依赖的jar包后,我们就可以来编写接口测试的内容了;

在org.apache.jmeter.protocol.java.test下,创建要测试的class类;

package org.apache.jmeter.protocol.java.test;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;

import 被压测接口;

public class mbis_affiliateLogin extends AbstractJavaSamplerClient {
    private static String label = "affiliateLogin";//定义label名称,显示在jmeter的结果窗口
    private Map variableMap=new HashMap();;    
    long trackId ;
    long buyerId ;
    Date lastVisit;    
    private AsynchronousCall asynchronuoscall;//定义要测试的hsf接口
    
    public void setupTest(JavaSamplerContext arg0) {
        //定义测试初始值,setupTest只在测试开始前使用
        
    }

    public Arguments getDefaultParameters() {
        //参数定义,显示在前台,也可以不定义
        Arguments params = new Arguments();        
        params.addArgument("trackId", "24321435345");
        params.addArgument("buyerId", "2031166562");

        return params;
        
    }
    @Override
    public SampleResult runTest(JavaSamplerContext arg0) {
        // TODO Auto-generated method stub        
        SampleResult sr;
        sr = new SampleResult();
        sr.setSampleLabel(label);
        boolean success=true;
        //填写压测时传入的参数
        variableMap.put("trackId",24321435345L);
        variableMap.put("buyerId",2031166562L);
        variableMap.put("lastVisit",new Date());
        //执行开始
        sr.sampleStart();
        try    { 
            //调用被压测接口的方法
             asynchronuoscall.affiliateLogin(variableMap);
             
        } catch (Throwable e) {
            success=false;
        } finally {
            //执行结束
            sr.sampleEnd();
            sr.setSuccessful(success);             
        }
        return sr;
    }
}

写完接口测试类后,需要调试,就可以创建个main函数来调试一下结果:

package org.apache.jmeter.protocol.java.test;

import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;

public class maintest {
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

       //把测试接口类new一个对象
        mbis_affiliateLogin hsftest = new mbis_affiliateLogin();
        JavaSamplerContext arg0 = new JavaSamplerContext(hsftest
                .getDefaultParameters());
        //初始值执行
        hsftest.setupTest(arg0);

       //执行部分调用

        hsftest.runTest(arg0);

       //执行结束处理

        hsftest.teardownTest(arg0);

    }

}

调试成功后,就可以来打测试jar包了,两种打包方式:

1.先把ApacheJMeter_java.jar解压,然后把创建的工程中,bin下面的class文件拷贝出来,拷贝到ApacheJMeter_java.jar的“org.apache.jmeter.protocol.java.test”下面

打开电脑的开始->运行,输入cmd,打开dos命令行,进入jmeter的ApacheJMeter_java所在目录中,执行打包命令,jar cf ApacheJMeter_java.jar org,这个就能重新打包一个ApacheJMeter_java.jar包了,然后把自己本地jmeter的lib/ext下的jar包给替换掉;

2.直接把测试类在eclipse下Export打成jar包,然后拷贝到jmeter的lib/ext下面,这个方法最简单,推荐使用;

 

打包结束后,还需要把被压测系统的jar包以及所需的依赖放入到jmeter工具的lib下面,这样才能调用到;

好了,现在再打开jmeter工具,添加线程组->事务控制器->java请求,这时候类名称里面,就可以看到你刚才工程中创建的类名了;

这样,java接口压测的脚本就创建成功啦~~~

很多时候,我们不单单需要java接口测试,有一些hsf的接口需要测试,这时候我们需要在测试类中添加hsfunit的东西,添加bean了

在setupTest之前,可以添加hsfstart的内容:

    static {
       //hsf启动版本
        HSFEasyStarter.start("D:\\project", "1.4.8.7");
        System.out.println("hsf start: ----------------");
        try {

            //sleep2s,等待地址推送
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

另外,在setupTest的里面,添加getbean的内容:

        //配置getbean的xml地址

        String[] locations = { "D:\\project\\works\\mbis_hsf_test\\src\\mbis_beans.xml" };
        ApplicationContext context = new FileSystemXmlApplicationContext(locations);
       //getbean的内容填写
        registerService = (RegisterService) context.getBean("registerService");
在相应的地方,把bean文件填写了就可以了(可以参考下hsf单元测试的编写内容),同时不要忘记把用到的如spring、hsfunit的jar包也放入到jmeter的lib下就可以了