美文网首页
jmeter压测java方法

jmeter压测java方法

作者: abaeccdce206 | 来源:发表于2017-07-28 10:31 被阅读516次

    场景:测试支付接口,需要一个对参数加密。本次先用求和算法代替

     实现方式
     1:实现自定义方法,如下 public int sum(int a,int b)
    
    public class MathTest {
       
        public int sum(int a,int b)
        {
            return a+b;
        }
    
        
    }
    

    需要的jar包

    JMETER_HOME\lib\ext目录下copy
    1:ApacheJMeter_core.jar 
    2: ApacheJMeter_java.jar
    

    jmeter调用自定义代码方法

     */
    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;
    
    public class JmeterHttpTest extends AbstractJavaSamplerClient    {
    
    //    private SampleResult sampleresult = new SampleResult();
        private MathTest test=null;
        private static long start = 0;
        private static long end = 0;
        private String resultData;
    
        //把测试的一些默认数据在程序运行前显示到JMeter客户端
        @Override
        public Arguments getDefaultParameters()
        {
            Arguments params = new Arguments();
            params.addArgument("key1","1");
            params.addArgument("key2","2");
            return params;
        }
    
        //子类用它来 记录log
    //    protected org.apache.log.Logger getLogger()
    //    {
    //        return null;
    //    }
    
        //初始化方法,实际运行时每个线程仅执行一次,在测试方法运行前执行
        public void setupTest(JavaSamplerContext context)
        {
            //获取界面中传递的值
            String value1 = context.getParameter("key1");
            //获取界面中传递的值
            String value2 = context.getParameter("key2");
            test=new MathTest();
            start = System.currentTimeMillis();
        }
        //测试执行的循环体,根据线程数和循环次数的不同可执行多次
    
    
        public SampleResult runTest(JavaSamplerContext context) {
    
            //获取界面中传递的值
            String value1 = context.getParameter("key1");
            //获取界面中传递的值
            String value2 = context.getParameter("key2");
            int num1= Integer.parseInt(value1);
            int num2= Integer.parseInt(value2);
            SampleResult sampleresult = new SampleResult();
    
    
    
            sampleresult.setSamplerData("请求参数num1:"+num1+"\n请求参数num2:"+num2);
    //        private SampleResult sampleresult = new SampleResult();
    
            // TODO Auto-generated method stub
            try {
                sampleresult.sampleStart();
                resultData = String.valueOf(test.sum(num1,num2));
                if (resultData != null && resultData.length() > 0) {
                    sampleresult.setResponseData("结果是:"+resultData, null);
                    sampleresult.setDataType(SampleResult.TEXT);
                    sampleresult.setSuccessful(true);
                }
    
    
            } catch (Exception e) {
                sampleresult.setSuccessful(false);
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            finally {
                sampleresult.sampleEnd();// jmeter 结束统计响应时间标记
            }
    //        sampleresult.sampleEnd();//重复结束,删除
            return sampleresult;
        }
    
        //结束方法,实际运行时每个线程仅执行一次,在测试方法运行结束后执行
        public void teardownTest(JavaSamplerContext context)
        {
            end = System.currentTimeMillis();
            // 总体耗时
            System.err.println("cost time:" + (end - start) + "毫秒");
        }
    
    }
    

    注意点:

      1: sampleresult.sampleStart();开始记时间。
      2: sampleresult. sampleEnd();开始记时间。
      3: params.addArgument("key1","1"); 添加默认参数
      4:sampleresult.setSuccessful(true); 自定义断言结果
    

    操作步骤,将代码工程导出为可执行jar

    1:利用jmeter自带java请求调用自定义方法步骤

    1⃣️将此jar包放入JMETER_HOME\lib\ext目录;
    2⃣️重启jmeter
    3⃣️建线程组、Java Request、查看结果树,进行测试;
    

    如下图选择自己的jar,key 1 和 key2 可自定义,其他和测试http 请求一致

    image.png

    2:在jmeter中直接编写java代码

    1:如果自己的jar过多,可以在jmeter根目录下新建一个文件夹如cxf
     2:在jmeter_home/bin/jmeter.properties文件中添加
        plugin_dependency_paths=./cxf
    

    新建BeanShell Sampler

    ${x} ${y}空格隔开
    x和y取自定义变量
    

    调试的时候,打开选项-log Viewer

    image.png

    相关文章

      网友评论

          本文标题:jmeter压测java方法

          本文链接:https://www.haomeiwen.com/subject/vfrtlxtx.html