jmeter java性能测试
本篇文章主要讲解jmeter如何测试java请求,以项目中某个接口为例,请求数据为post,返回也为post
1:新建maven工程,pom文件为
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ustcinfo.jmeter</groupId>
<artifactId>java-post</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>HttpRequestPost</name>
<dependencies>
<!-- httppost请求依赖jar包 -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
<!-- java jmeter依赖jar包 -->
<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>
</dependencies> <build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptor>src/main/assembly/assembly.xml</descriptor>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
2:新建JmeHttpRequestPost.java类
package com.ustcinfo.jmeter; import java.io.DataOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection; import org.apache.commons.io.IOUtils;
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 JmeHttpRequestPost extends AbstractJavaSamplerClient { private String number = "number";
private String number_value = "18134536460"; /*
* 参数化,number
*/
@Override
public Arguments getDefaultParameters() {
Arguments params = new Arguments();
params.addArgument(number, number_value);
return params;
} /*
* 运行方法
*/
public SampleResult runTest(JavaSamplerContext arg0) {
SampleResult sr = new SampleResult();
try {
/*参数获取*/
String number = arg0.getParameter("number");
sr.sampleStart();
/*请求地址*/
String URL = "http://ip:port/WSSPort/";
/*请求报文*/
String Json = "";
Json="{"
+"\"TcpCont\":{"
+"\"ServiceCode\":\"/ServiceBus/custView/cust/cust001\","
+"\"SrcSysID\":\"100000\","
+"\"TransactionID\":\"3b236e76-4662-4df6-8c61-46a8e3d2df56\","
+"\"MsgId\":\"\""
+"},"
+"\"SvcCont\":{"
+"\"SOO\":["
+"{"
+"\"PUB_REQ\":{"
+"\"PAGE_INDEX\":\"1\","
+"\"PAGE_SIZE\":\"5\","
+"\"SVC_CONT_VER\":\"1.0\","
+"\"TYPE\":\"QRY_CUST_INFO\""
+"},"
+"\"RETURN_OBJECTS\":{"
+"\"ACCOUNT\":{"
+"\"FIELDS\":\"\""
+"},"
+"\"CONTACT\":{"
+"\"FIELDS\":\"\""
+"},"
+"\"CUST\":{"
+"\"FIELDS\":\"\""
+"},"
+"\"CUST_BRAND_LABEL\":{"
+"\"FIELDS\":\"\""
+"},"
+"\"CUST_POINT\":{"
+"\"FIELDS\":\"\""
+"},"
+"\"MANAGER\":{"
+"\"FIELDS\":\"CHANNEL_MEMBER_ID,MEMBER_NBR,CHANNEL_MEMBER_NAME,PHONE\""
+"},"
+"\"PARTY_CENTIFICATION\":{"
+"\"FIELDS\":\"\""
+"},"
+"\"TB_PTY_CERTIF_ID_VAR_INFO\":{"
+"\"FIELDS\":\"\""
+"},"
+"\"CUST_SPEC_INFO\":{"
+"\"FIELDS\":\"\""
+"}"
+"},"
+"\"CUST_REQ\":{"
+"\"CUST_ID\":\":getCustId("+number+",'4','',551)\","
+"\"LATN_ID\":\"551\","
+"\"PASSWORD\":\"\""
+"}"
+"}"
+"]"
+"}"
+"}";
/*调用post请求方法*/
String postResult = doHttpPost(Json, URL);
/*设置响应报文内容*/
sr.setResponseData(postResult, null);
sr.setDataType(SampleResult.TEXT);
sr.setSuccessful(true);
sr.sampleEnd();
} catch (Exception e) {
e.printStackTrace();
} return sr;
} /**
* doHttpPost:http发送json报文形式的post请求
* @param xmlInfo 请求报文
* @param URL 请求地址
* @return String 响应内容
* @exception
*/
public static String doHttpPost(String xmlInfo, String URL) {
byte[] xmlData = xmlInfo.getBytes();
InputStream instr = null;
try {
URL url = new URL(URL);
URLConnection urlCon = url.openConnection();
urlCon.setDoOutput(true);
urlCon.setDoInput(true);
urlCon.setUseCaches(false);
urlCon.setRequestProperty("Content-Type", "text/xml");
urlCon.setRequestProperty("Content-length", String.valueOf(xmlData.length));
DataOutputStream printout = new DataOutputStream(urlCon.getOutputStream());
printout.write(xmlData);
printout.flush();
printout.close();
instr = urlCon.getInputStream();
byte[] bis = IOUtils.toByteArray(instr);
String ResponseString = new String(bis, "UTF-8");
if ((ResponseString == null) || ("".equals(ResponseString.trim()))) {
System.out.println("返回空");
}
return ResponseString; } catch (Exception e) {
e.printStackTrace();
return "0";
} finally {
try {
instr.close();
} catch (Exception ex) {
return "0";
}
}
}
}
3:在maven工程src/main下面新建assembly.xml文件,用作maven打包
<assembly>
<id>assembly</id>
<formats>
<format>tar.gz</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${project.build.directory}/dubbo/META-INF/assembly/bin</directory>
<outputDirectory>bin</outputDirectory>
<fileMode>0755</fileMode>
</fileSet>
<fileSet>
<directory>src/main/assembly/conf</directory>
<outputDirectory>conf</outputDirectory>
<fileMode>0644</fileMode>
</fileSet>
</fileSets>
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
</dependencySet>
</dependencySets>
</assembly>
4:打包该工程,maven install,打包完成后可以看到target下生成了两个文件一个java-post-0.0.1-SNAPSHOT-assembly.tar还有一个java-post-0.0.1-SNAPSHOT.jar
将java-post-0.0.1-SNAPSHOT-assembly.tar中的lib文件夹下所有的jar包拷贝到jmeter的lib目录下,如果有重复的,则不替换用jmeter原生的jar包
将java-post-0.0.1-SNAPSHOT.jar拷贝到jmeter的lib/ext目录下
5:启动jmeter,验证该jar功能是否正常,新建一个java请求,如果有参数化可设置参数化文件
上图为两个线程测试了一下,发现调用通过成功,响应数据正常返回,故该脚本可以正常使用
至于如何用这个jmx脚本做性能测试,我就不在重复了,参考我的博文-jmeter命令行运行-单节点测试或者分布式测试
jmeter java性能测试的更多相关文章
- jmeter如何玩之badboy + jmeter并发性能测试
今天下班时公司安排了一个同事来对项目做集群性能测试,怀着对性能测试的好奇心,下班后没有着急离开,而是等待 那位同事的到来,然后在旁边学习了下如何使用Badboy和jmeter做性能测试. 1. 软件介 ...
- jenkins+ant+jmeter自动化性能测试平台
jenkins+ant+jmeter自动化性能测试平台 Jmeter是性能测试的工具,java编写.开源,小巧方便,可以图形界面运行也可以在命令行下运行.网上已经有人使用ant来运行,http://w ...
- Jmeter进行性能测试时多台负载机的配置方法
参考:https://blog.csdn.net/russ44/article/details/54729461 Jmeter进行性能测试时多台负载机的配置方法 Jmeter 是java 应用,对于C ...
- 【转】Jenkins+Ant+Jmeter自动化性能测试平台
Jmeter是性能测试的工具,java编写.开源,小巧方便,可以图形界面运行也可以在命令行下运行.网上已经有人使用ant来运行,,既然可以使用ant运行,那和hudson.jenkins集成就很方便了 ...
- Java性能测试从入门到放弃-概述篇
Java性能测试从入门到放弃-概念篇 辅助工具 Jmeter: Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试.JMeter 可以用于对服务器.网络 ...
- Jmeter Web 性能测试入门 (三):Jmeter 常用组件说明
线程组:用来设置并发的数量和模式.是用来模拟用户并发的组件.JMeter 的每个任务都是用线程来处理的. 线程数:要并发的请求数量. Ramp-Up Period: 在多次时间内把这些并发的请求发送完 ...
- Jmeter Web 性能测试入门 (七):Performance 测试中踩过 Jmeter 的坑
脚本运行的过程中,大量request抛error,但没有地方能够查看request是因为什么error的. 原因:Jmeter默认禁掉了运行过程中每个request的具体response信息收集,只保 ...
- 转 15 jmeter分布式性能测试
15 jmeter分布式性能测试 背景由于jmeter本身的瓶颈,当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至还会引起Java内存溢出的错误.要解决这个问题, ...
- developerWorks 中国 技术主题 Java technology 文档库 Java 性能测试的四项原则
转-https://www.ibm.com/developerworks/cn/java/j-lo-java-performance-testing/?cm_mmc=dwchina-_-homepa ...
随机推荐
- ubuntu 12.04 安装和使用花生壳
1.安装必要的开发包 [root@localhost ~]# apt-get install gcc g++ autoconf automake 2.下载phddns到某一个目录 http://www ...
- [原]iOS Makefile Template
export DEVELOPER_DIR := $(shell xcode-select --print-path) PLATFORM="$(DEVELOPER_DIR)/Platforms ...
- IOS学习之路二十二(UIAlertView获得文本框内容及添加北京图片)
今天写项目要用到警告框带输入框的,于是就自己做了个小demo. 效果图大体如下: 下面简单介绍一下UIAlertView alertViewStyle属性有以下三种选项: UIAlertViewSt ...
- URLDecoder: Incomplete trailing escape (%) pattern
在使用URLDecoder对字符串进行解码的时候 报以下异常信息: Exception in thread "main" java.lang.IllegalArgumentExce ...
- 微信移动端web页面调试小技巧
技术贴还是分享出来更加好,希望能对一些朋友有帮助,个人博客 http://lizhug.com/mymajor/微信移动端web页面调试小技巧
- VS2012下使用Moq进行单元测试
单元测试虽然是个很老的东西了,但平时写代码一般都不写测试,因为VS调试完全可以满足了,所以一直也就没有用过,刚好在<Pro.ASP.NET.MVC.3.Framework>中看到了Moq这 ...
- cf 323A A. Black-and-White Cube 立体构造 不知道为什么当k为奇数时构造不出来 挺有趣的题目吧
A. Black-and-White Cube time limit per test 1 second memory limit per test 256 megabytes input stand ...
- 横瓜执导众程序员开展大讨论关于C、JAVA及其它主流IT技术使用情况和优点缺点。
横瓜执导众程序员开展大讨论关于C.JAVA及其它主流IT技术使用情况和优点缺点. 遥执乾坤(44758121) 18:21:23 mysql据说只能使用一个索引,我这里几乎所有字段都有索引. 但每个 ...
- SQL 两表关联查询 where 条件中等号两端字段顺序对效率的影响
现有两表A(大).B(小)作关联查询,SQL语句如下: SQL1:select * from A,B where A.id = B.id SQL2:select * from A,B where B. ...
- 密码配置配置SSH免密码登陆
在本文中,我们主要介绍密码配置的内容,自我感觉有个不错的建议和大家分享下 我的用户名是master 1.安装ssh(若没安装的话) sudo apt-get install ssh 2.配置为可以免密 ...