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,然后就可以对其进行压力测试了。
Jmeter测试普通java类说明的更多相关文章
- Jmeter 测试 JMS (Java Message Service)/ActiveMQ 性能
前言 JMS介绍:JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送 ...
- jmeter测试java代码
有时候总是要写代码的,不得不说你也得会,这不往下看 java请求了,就的写代码,那么先来实现一个类, package com.company.jemeters; public class Hello ...
- 使用Jmeter测试java请求
1.性能测试过程中,有时候开发想对JAVA代码进行性能测试,Jmeter是支持对Java请求进行性能测试,但是需要自己开发.打包好要测试的代码,就能在Java请求中对该java方法进行性能测试2.本文 ...
- 利用jmeter对WebRTC应用进行压力测试(java)
利用jmeter对WebRTC应用进行压力测试(java) 说明:WebRTC是一款开源的多人即时视频API,与一般的http请求不同,webrtc应用实际压力主要是码流 最近负责了一个WebRTC的 ...
- 测试 Java 类的非公有成员变量和方法
引言 对于软件开发人员来说,单元测试是一项必不可少的工作.它既可以验证程序的有效性,又可以在程序出现 BUG 的时候,帮助开发人员快速的定位问题所在.但是,在写单元测试的过程中,开发人员经常要访问类的 ...
- Java类的加载过程与ClassLoader的理解及测试
当程序准备运行某个类,但该类还未被加载到内存中时,会经过以下三个步骤进行类的加载: 类的加载(Load)→类的连接(Link)→类的初始化(Initialize) 加载:类经过javac.exe编译的 ...
- jmeter之自定义java请求性能测试
一.环境准备 1.新建一个java工程 2.导入jar包:ApacheJMeter_core.jar ApacheJMeter_java.jar ...
- jmeter测试dubbo接口
本文讲解jmeter测试dubbo接口的实现方式,文章以一个dubbo的接口为例子进行讲解,该dubbo接口实现的功能为: 一:首先我们看服务端代码 代码架构为: 1:新建一个maven工程,pom文 ...
- 转:应用JMeter测试solr请求
使用JMeter测试solr请求 一.安装JMeter 在官网http://jmeter.apache.org/download_jmeter.cgi下载JMeter 直接解压JMeter安装包 Li ...
随机推荐
- CentOS 7_64位系统下搭建Hadoop_2.8.0分布式环境
准备条件: CentOS 7 64位操作系统 | 选择minimal版本即可(不带可视化桌面环境),也可以选择带完整版Hadoop-2.8.0 | 本文采用的是Hadoop-2.8.0版本.JDK1. ...
- JS数组和函数 小记
数组 JS中的数组来自window,是一个全局的对象,typeof的值是'object'. 创建数组: 1.Array(3):当只传一个值的时候,会生成一个长度为该数值的空数组. 2.Array(3, ...
- 问题集录--新手入门深度学习,选择TensorFlow 好吗?
新手入门深度学习,选择 TensorFlow 有哪些益处? 佟达:首先,对于新手来说,TensorFlow的环境配置包装得真心非常好.相较之下,安装Caffe要痛苦的多,如果还要再CUDA环境下配合O ...
- php中的namespace 命名空间
名字解释: namespace(命名空间),命名空间是从php5.3开始支持的功能.作用主要有两个:1.可以避免类名取得过长.2.当在多个框架配合使用时,同名的类之间不会冲突. 命名空间,看名字就知道 ...
- linux运维人员成长
原文地址:https://blog.csdn.net/kwame211/article/details/78059331 初级篇 linux运维人员常用工具拓扑详见: 1rsync工具 很多地方经常会 ...
- Cheatsheet: 2018 08.01 ~ 2018 10.31
Other Building the Ultimate Developer PC 3.0 - The Parts List for my new computer, IronHeart Face re ...
- SSM实现图片上传管理操作
Spring MVC 实现文件上传 时序图 利用 Spring MVC 实现文件上传功能,离不开对 MultipartResolver 的设置.MultipartResolver 这个类,你可以将其视 ...
- C#解析PDF
C#解析PDF的方式有很多,比较好用的有ITestSharp和PdfBox. PDF内容页如果是图片类型,例如扫描件,则需要进行OCR(光学字符识别). 文本内容的PDF文档,解析的过程中,我目前仅发 ...
- <meta name="viewport"content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">的作用
本人对该标签理解不深,这里是复制了穆乙的文章:如果有人进来看到这篇文章,请按此https://www.cnblogs.com/pigtail/archive/2013/03/15/2961631.ht ...
- UOJ169. 【UR #11】元旦老人与数列
传送门 考虑用 \(segment~tree~beats\) 那一套理论,维护区间最小值 \(mn\) 和严格次小值 \(se\) 那么可以直接 \(mlog^2n\) 维护前三个操作 考虑维护历史最 ...