zoukankan      html  css  js  c++  java
  • jmeter 测试java request 脚本

    Jmeter 利用AbstractJavaSamplerClient 作为基类识别被测代码。

    被测类需要继承AbstractJavaSamplerClient类,然后倒入jmeter安装路径下,进行测试。以下是详细步骤: 

    创建工程,导入以下两个依赖:

    		<!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_core -->
    		<dependency>
    			<groupId>org.apache.jmeter</groupId>
    			<artifactId>ApacheJMeter_core</artifactId>
    			<version>5.1.1</version>
    		</dependency>
    
    		<!-- https://mvnrepository.com/artifact/org.apache.jmeter/ApacheJMeter_java -->
    		<dependency>
    			<groupId>org.apache.jmeter</groupId>
    			<artifactId>ApacheJMeter_java</artifactId>
    			<version>5.1.1</version>
    		</dependency>
    

     创建MyJavaRequest 类,继承AbstractJavaSamplerClient类,重写其中一些方法:

    getDefaultParameters方法:定义了线程参数。该方法中定义的参数会在Jmeter GUI页面出现,要求填写。
    setupTest方法:test的准备工作。
    runTest方法:被测试的java代码写在sampleStart和sampleEnd中间。执行时间会被系统计时。
    teardownTest方法:测试之后的回收工作。
    以下是一个简单的被测试类。

    package el.testRequest;
    import java.util.Random;
    
    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 MyJavaRequest extends AbstractJavaSamplerClient {
        private String a;
        private int b;
        
        @Override
        public Arguments getDefaultParameters() {
            Arguments params = new Arguments();
            params.addArgument("String1", "hello");
            params.addArgument("number2", "1234");
            return params;
        }
    
        @Override
        public void setupTest(JavaSamplerContext arg0) {
            a = arg0.getParameter("String1");
            b = arg0.getIntParameter("number2");
        }
    
        public SampleResult runTest(JavaSamplerContext context) {
            SampleResult results = new SampleResult();
            results.setSampleLabel("test speed of print something");
            Random r = new Random();
            try {
                results.sampleStart();
                System.out.println(a + " " + b);
                Thread.sleep(r.nextInt(100));
                results.setSuccessful(true);
            }catch(Exception e) {
                    results.setSuccessful(false);
                    e.printStackTrace();
            }finally {
                results.sampleEnd();
            }
            results.setResponseData("a is " + a + " and b is " + b,null);
            return results;
        }
    
        @Override
        public void teardownTest(JavaSamplerContext arg0) {
            System.out.println("test is over");
        }
    
    }
    将该类导出成Jar文件,既可以是runable的也可以是一般的。如果被测试类还依赖了别的类,要将被依赖类也一起导出成一个jar文件。

     放在Jmeter的安装路径中:C:xxxxxxxxxxxapache-jmeter-5.1.1libext

     

    重启Jmeter,添加Java request 测试元件:

     被测试类被成功识别到。线程参数出现在页面上,有默认值。

     

    添加一个结果树,可以运行了:

     

  • 相关阅读:
    gil
    异步
    字符串 最长回文字串
    字符串 最长公共前缀
    数组 合并区间
    python 排序
    2021.9.3 阿里笔试AK贴
    SIP协议详解
    fiddler抓包各字段的含义
    常见的HTTP状态码列表
  • 原文地址:https://www.cnblogs.com/testertry/p/11012804.html
Copyright © 2011-2022 走看看