• Jmeter测试普通java类说明


    概述

             Apache JMeter是Apache组织开发的基于Java的压力测试工具。本文档主要描述用Jmeter工具对基于Dubbo、Zookeeper框架的Cassandra接口、区块链接口进行压力测试的一些说明,为以后类似接口的测试提供参考。

    环境部署

    1、  下载Jmeter工具apache-jmeter-3.3.zip

    http://jmeter.apache.org/download_jmeter.cgi

    2、  解压apache-jmeter-3.3.zip

    3、  运行bin目录下的jmeter.bat,就可以看到Jmeter测试界面(Linux环境请运行jmeter.sh)。如下图所示:

    测试流程

    1、  打开Jmeter工具,在【测试计划】下面添加【线程组】,如下如图所示:

     

    2、  在【线程组】下面添加【java请求】,如下图所示

    3、  在【线程组】下面继续添加【察看结果数】和聚合报告,如下图所示

    4、  接下来在我们的consumer工程中,用maven引入Jmeter依赖的jar包,在pom.xml文件加入如下几行代码:

       <dependency>

            <groupId>org.apache.jmeter</groupId>

            <artifactId>ApacheJMeter_core</artifactId>

            <version>3.0</version>

        </dependency>

                 <dependency>

                     <groupId>org.apache.jmeter</groupId>

                   <artifactId>ApacheJMeter_java</artifactId>

                 <version>3.0</version>

    </dependency>

    5、  加好之后,用Maven编译consumer工程,编译成功后,会在工程中引入如下两个Jmeter jar包:

    6、  编写Jmeter测试用例,需要继承AbstractJavaSamplerClient类,这个步骤很重要,写好之后,后续导出xxx.jar包后,Jmeter界面使用这个测试用例进行压力测试,下面附上详细代码

    public class JMeterTestSign extends AbstractJavaSamplerClient {
        private String resultData ; //写入结果树时使用
        private SampleResult results;
        //提供给jmeter的对外参数,可修改
        String value;
        String type;

        /**
         * 测试方法运行之前的工作(初始化记录结果;从参数列表中获取对应变)
         * @param arg0
         */
        @Override
        public void setupTest(JavaSamplerContext arg0) {
            results = new SampleResult();
            value = arg0.getParameter("value");
            type = arg0.getParameter("type");
        }

        /**
         * 获取默认参数以及参数值
         * @return
         */
        @Override
        public Arguments getDefaultParameters() {
            Arguments params = new Arguments();
            String value = "1234567890";
            params.addArgument("value", value);
            params.addArgument("type", "ec");
            return params;
        }

        /**
         * 运行测试方法(初始化记录结果,设定开始/结束记录时间,测试调用Service的主方法,测试成功与否的判断方法)
         * @param arg0
         * @return
         */
        public SampleResult runTest(JavaSamplerContext arg0) {
            results = new SampleResult();//初始化记录结果
            results.sampleStart();//计时开始
            /*测试方法,此处写自己的测试方法进行调用*/
            try {

    // 下面的一行为自定义方法,可以测试自己的方法
                String signature = EccService.sign(value, type);
                results.sampleEnd();//计时结束
                //判断测试成功与否的方法:可根据实际进行判断,此处为如果没有抛出异常,则认为该次调用成功
                results.setSuccessful(true);
                //将结果写入结果树:在JMeter的监听器-查看结果树时即可查看返回结果
                resultData = signature;
                results.setResponseData("结果是:"+resultData ,null);
                results.setDataType(SampleResult. TEXT);
                return results;
            } catch (InvalidKeySpecException e) {
                results.setSuccessful(false);
                e.printStackTrace();
                return results;
            } catch (IOException e) {
                results.setSuccessful(false);
                e.printStackTrace();
                return results;
            } catch (CryptoException e) {
                results.setSuccessful(false);
                //将结果写入结果树:在jmeter的监听器-查看结果树时即可查看返回结果
                resultData += false;
                results.setResponseData("结果是:"+resultData ,null);
                results.setDataType(SampleResult. TEXT);
                e.printStackTrace();
            }
            return results;
        }

        /**
         * 获取jmeter输入的参数值
         *
         * @return
         */
        public void setValues(JavaSamplerContext arg0) {
            value = arg0.getParameter("value", value);
            type = arg0.getParameter("type", type);
        }
        @Override
        public void teardownTest(JavaSamplerContext context) {

        }
    }

    7、  编写好测试用例后,将工程导出为一个jar包:

    Maven build或者maven package都可以

    8、  将导出的jar包,拷贝到Jmeter安装目录的lib/ext子目录下

    9、  在Jmeter测试计划主界面,点击【浏览】,选择本次Jmeter测试用例所依赖的jar包目录(右键工程,选择maven build,在goals中输入dependency:copy-dependencie命令并执行,把所有jar包放到某个目录下)

    注:maven导出所有依赖的jar包,也可以在pom文件中添加配置

    <build>

            <plugins>

                <plugin>

                    <groupId>org.apache.maven.plugins</groupId>

                    <artifactId>maven-dependency-plugin</artifactId>

                    <executions>

                        <execution>

                            <id>copy</id>

                            <phase>package</phase>

                            <goals>

                                <goal>copy-dependencies</goal>

                            </goals>

                            <configuration>

                                <outputDirectory>${project.build.directory}/lib</outputDirectory>

                            </configuration>

                        </execution>

                    </executions>

                </plugin>

            </plugins>

        </build>

    12、    点击【线程组】,在主界面中输入【线程数】:需要多少并发量就写多少个,其他都写1

    13、   再点击【Java请求】,在主界面中,【类名称】选择’ com.foriseland.fas.cassandra.jmeter.TestConsumer’;并在下方输入自定义的参数,如下如图所示:

    14、              以上这些操作完成后,保存退出,并重启Jmeter,然后就可以对其进行压力测试了。

  • 相关阅读:
    Linux下一些命令
    Javascript实现Base64解码
    C语言中指针和数组的区别
    hdu 1166 线段树 解法 484MS
    fatjar: eclipse导出工具
    每天一道面试题(1)~~~
    windows Emacs的安装与配置
    编程者入门:谈Servlet/JSP的配置详解
    RMQ谈:Range Minimum/Maximum Query 区间最小/大值查询 ST优化
    Lisp in a box 装配指南
  • 原文地址:https://www.cnblogs.com/alan319/p/9111466.html
Copyright © 2020-2023  润新知