概述

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,然后就可以对其进行压力测试了。

Jmeter测试普通java类说明的更多相关文章

  1. Jmeter 测试 JMS (Java Message Service)/ActiveMQ 性能

    前言 JMS介绍:JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送 ...

  2. jmeter测试java代码

    有时候总是要写代码的,不得不说你也得会,这不往下看 java请求了,就的写代码,那么先来实现一个类, package com.company.jemeters; public class Hello ...

  3. 使用Jmeter测试java请求

    1.性能测试过程中,有时候开发想对JAVA代码进行性能测试,Jmeter是支持对Java请求进行性能测试,但是需要自己开发.打包好要测试的代码,就能在Java请求中对该java方法进行性能测试2.本文 ...

  4. 利用jmeter对WebRTC应用进行压力测试(java)

    利用jmeter对WebRTC应用进行压力测试(java) 说明:WebRTC是一款开源的多人即时视频API,与一般的http请求不同,webrtc应用实际压力主要是码流 最近负责了一个WebRTC的 ...

  5. 测试 Java 类的非公有成员变量和方法

    引言 对于软件开发人员来说,单元测试是一项必不可少的工作.它既可以验证程序的有效性,又可以在程序出现 BUG 的时候,帮助开发人员快速的定位问题所在.但是,在写单元测试的过程中,开发人员经常要访问类的 ...

  6. Java类的加载过程与ClassLoader的理解及测试

    当程序准备运行某个类,但该类还未被加载到内存中时,会经过以下三个步骤进行类的加载: 类的加载(Load)→类的连接(Link)→类的初始化(Initialize) 加载:类经过javac.exe编译的 ...

  7. jmeter之自定义java请求性能测试

    一.环境准备         1.新建一个java工程         2.导入jar包:ApacheJMeter_core.jar     ApacheJMeter_java.jar         ...

  8. jmeter测试dubbo接口

    本文讲解jmeter测试dubbo接口的实现方式,文章以一个dubbo的接口为例子进行讲解,该dubbo接口实现的功能为: 一:首先我们看服务端代码 代码架构为: 1:新建一个maven工程,pom文 ...

  9. 转:应用JMeter测试solr请求

    使用JMeter测试solr请求 一.安装JMeter 在官网http://jmeter.apache.org/download_jmeter.cgi下载JMeter 直接解压JMeter安装包 Li ...

随机推荐

  1. selector.select()和selector.selectedKeys()

    当调用selector.select()时会阻塞: This method performs a blocking selection operation. It returns only after ...

  2. 为什么在大多数OS中都引入”打开“这一文件系统调用?打开的含义是什么?

    当用户要求对一个文件实施多次读/写或者其他操作时,每次都要从检索目录开始.为了避免多次重复检索目录,在大多数OS中都引入了”打开“这一文件系统调用,当用户第一次请求对某文件进行操作时,须先利用open ...

  3. echarts实现自动轮播tooltip

    最近需要实现echarts图形中hover效果轮播(即tooltip在各个数据点上轮流显示)的功能,以下就是我学习的一个过程,只是提供思路,具体场景需要自己修改.(仅针对echarts 2.2.7及以 ...

  4. Office 卸载问题(安装包的语言不受系统支持)

    本人系统Win7 这个问题搞了一下午.各种网站找解决办法.下载下来的都是一些垃圾软件. Win7以上调成兼容模式运行理论可行. 放上微软的解决方法: * 彻底卸载Office 2003: http:/ ...

  5. 远程连接MongoDB数据库

    不使用用户名和密码 安装MongoDB后,默认不使用用户名和密码即可在本地登录,如需远程登录,只要修改/bin/mongo.conf文件即可

  6. 第8天:javascriptDOM小 案例、onmouseover 、onmouseout

    案例 为元素注册点击事件,弹出对话框 <input type="button" id="btn" value="开发分离"> & ...

  7. JS实现最小生成树之普里姆(Prim)算法

    最小生成树: 我们把构造连通网的最小代价生成树称为最小生成树.经典的算法有两种,普利姆算法和克鲁斯卡尔算法. 普里姆算法打印最小生成树: 先选择一个点,把该顶点的边加入数组,再按照权值最小的原则选边, ...

  8. [Linux]C语言Linux系统编程创建进程

    1.进程ID 每一个进程都由一个唯一的标识符表示,即进程ID,简称pid.系统保证在某时刻每个pid都是唯一的. 1.1分配进程ID 缺省情况下,内核将进程ID的最大值限制为32768,可以在此处设置 ...

  9. 17、多线程 (Thread、线程创建、线程池)

    进程概念 *A:进程概念 *a:进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行, 即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能. 线程的概念 *A:线程的概念 *a ...

  10. spring AOP为什么配置了没有效果?

     spring Aop的配置一定要配置在springmvc配置文件中         springMVC.xml 1 <!-- AOP 注解方式 :定义Aspect --> <!-- ...