• jmeter3.0 java请求


    1、java请求说明

    需要压测某些java方法或一些请求需要通过编写代码实现

    1.1、依赖jar包:

    jmeter下/lib/ext中的ApacheJMeter_java.jar(必须)、ApacheJMeter_core.jar(必须)

    如需在本地调试。还需引入jar包:avalon-framework-4.1.4.jar、jorphan.jar、logkit-2.0.jar

    测试类必须继承org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient类

    1.2、主要有四个方法:

    getDefaultParameters:设置输入参数

    setupTest:执行测试前的初始化

    runTest:执行测试方法体,被测代码需要在该方法中实现

    teardownTest:执行测试后动作

    2、代码样例,简单的求和测试

    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 Sum extends AbstractJavaSamplerClient {
    
        private String a;
        private String b;
        /** Holds the result data (shown as Response Data in the Tree display). */
        private String resultData;
    
        // 这个方法是用来自定义java方法入参的。
        // params.addArgument("num1","");表示入参名字叫num1,默认值为空。
        //设置可用参数及的默认值;
        public Arguments getDefaultParameters() {
            Arguments params = new Arguments();
            params.addArgument("num1", "");
            params.addArgument("num2", "");
            return params;
        }
    
        //每个线程测试前执行一次,做一些初始化工作;
        public void setupTest(JavaSamplerContext arg0) {
        }
    
        //开始测试,从arg0参数可以获得参数值;
        public SampleResult runTest(JavaSamplerContext arg0) {
            a = arg0.getParameter("num1");
            b = arg0.getParameter("num2");
            //System.out.println("a:"+a+"	"+"b:"+b);
            SampleResult sr = new SampleResult();
            sr.setSampleLabel( "求和");      //设置采样器名称
            try {
                sr.sampleStart();// jmeter 开始统计响应时间标记
                // 通过下面的操作就可以将被测方法的响应输出到Jmeter的察看结果树中的响应数据里面了。
                resultData = String.valueOf(Integer.parseInt(a)+Integer
                        .parseInt(b));
                //System.out.println(resultData);
                if (resultData != null && resultData.length() > 0) {
                    sr.setResponseData("结果是:"+resultData, null);
                    sr.setDataType(SampleResult.TEXT);
                }
                // System.out.println(resultData);
                sr.setSuccessful(true);
            } catch (Throwable e) {
                sr.setSuccessful(false);
                e.printStackTrace();
            } finally {
                sr.sampleEnd();// jmeter 结束统计响应时间标记
            }
            return sr;
        }
    
        //测试结束时调用;
        public void teardownTest(JavaSamplerContext arg0) {
            //System.out.println(end);
            //System.out.println("The cost is"+(end-start)/1000);
        }
        
        // main只是为了调试用,最后打jar包的时候注释掉。
        
        public static void main(String[] args) { // TODO Auto-generated method stub
            Arguments params = new Arguments();
            params.addArgument("num1", "1");// 设置参数,并赋予默认值1
            params.addArgument("num2", "2");// 设置参数,并赋予默认值2
            JavaSamplerContext arg0 = new JavaSamplerContext(params);
            System.out.println(arg0.getIntParameter("num1"));
            Sum test = new Sum();
            test.setupTest(arg0);
            test.runTest(arg0);
            test.teardownTest(arg0);
        }  
    }

    3、将工程导出为jar文件

    4、使用jmeter测试

    将导出的jar包放在jmeter目录下的/lib/ext下,在类名称中选择Sum

  • 相关阅读:
    听豆瓣架构变迁分享会总结
    业界对生成图片缩略图的做法归纳
    58和百姓网的技术学习
    减少存储过程封装业务逻辑-web开发与传统软件开发的思维模式不同
    网站速度问题排查与定位经验
    调度思想-现实中的事物与技术里面其实存在类似道理
    关于图片或者文件在数据库的存储方式归纳
    mysql单表体积和一个库设计多少张表为妥
    php的变量引用与销毁机制
    选择技术方案权衡时,考虑对其可控性很重要
  • 原文地址:https://www.cnblogs.com/zxgaa/p/9412456.html
Copyright © 2020-2023  润新知