jmeter java性能_jmeter java性能测试

本篇文章主要讲解jmeter如何测试java请求,以项目中某个接口为例,请求数据为post,返回也为post

1:新建maven工程,pom文件为

1

2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

3 4.0.0

4 com.ustcinfo.jmeter

5 java-post

6 0.0.1-SNAPSHOT

7 HttpRequestPost

8

9

10

11 commons-io

12 commons-io

13 2.5

14

15

16

17 org.apache.jmeter

18 ApacheJMeter_core

19 3.0

20

21

22 org.apache.jmeter

23 ApacheJMeter_java

24 3.0

25

26

27

28

29

30

31 maven-assembly-plugin

32

33 src/main/assembly/assembly.xml

34

35

36

37 make-assembly

38 package

39

40 single

41

42

43

44

45

46

47

2:新建JmeHttpRequestPost.java类

1 packagecom.ustcinfo.jmeter;2

3 importjava.io.DataOutputStream;4 importjava.io.InputStream;5 importjava.net.URL;6 importjava.net.URLConnection;7

8 importorg.apache.commons.io.IOUtils;9 importorg.apache.jmeter.config.Arguments;10 importorg.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;11 importorg.apache.jmeter.protocol.java.sampler.JavaSamplerContext;12 importorg.apache.jmeter.samplers.SampleResult;13

14 public class JmeHttpRequestPost extendsAbstractJavaSamplerClient {15

16 private String number = "number";17 private String number_value = "18134536460";18

19

20 /*

21 * 参数化,number22 */

23 @Override24 publicArguments getDefaultParameters() {25 Arguments params = newArguments();26 params.addArgument(number, number_value);27 returnparams;28 }29

30 /*

31 * 运行方法32 */

33 publicSampleResult runTest(JavaSamplerContext arg0) {34 SampleResult sr = newSampleResult();35 try{36 /*参数获取*/

37 String number = arg0.getParameter("number");38 sr.sampleStart();39 /*请求地址*/

40 String URL = "http://ip:port/WSSPort/";41 /*请求报文*/

42 String Json = "";43 Json="{"

44 +"\"TcpCont\":{"

45 +"\"ServiceCode\":\"/ServiceBus/custView/cust/cust001\","

46 +"\"SrcSysID\":\"100000\","

47 +"\"TransactionID\":\"3b236e76-4662-4df6-8c61-46a8e3d2df56\","

48 +"\"MsgId\":\"\""

49 +"},"

50 +"\"SvcCont\":{"

51 +"\"SOO\":["

52 +"{"

53 +"\"PUB_REQ\":{"

54 +"\"PAGE_INDEX\":\"1\","

55 +"\"PAGE_SIZE\":\"5\","

56 +"\"SVC_CONT_VER\":\"1.0\","

57 +"\"TYPE\":\"QRY_CUST_INFO\""

58 +"},"

59 +"\"RETURN_OBJECTS\":{"

60 +"\"ACCOUNT\":{"

61 +"\"FIELDS\":\"\""

62 +"},"

63 +"\"CONTACT\":{"

64 +"\"FIELDS\":\"\""

65 +"},"

66 +"\"CUST\":{"

67 +"\"FIELDS\":\"\""

68 +"},"

69 +"\"CUST_BRAND_LABEL\":{"

70 +"\"FIELDS\":\"\""

71 +"},"

72 +"\"CUST_POINT\":{"

73 +"\"FIELDS\":\"\""

74 +"},"

75 +"\"MANAGER\":{"

76 +"\"FIELDS\":\"CHANNEL_MEMBER_ID,MEMBER_NBR,CHANNEL_MEMBER_NAME,PHONE\""

77 +"},"

78 +"\"PARTY_CENTIFICATION\":{"

79 +"\"FIELDS\":\"\""

80 +"},"

81 +"\"TB_PTY_CERTIF_ID_VAR_INFO\":{"

82 +"\"FIELDS\":\"\""

83 +"},"

84 +"\"CUST_SPEC_INFO\":{"

85 +"\"FIELDS\":\"\""

86 +"}"

87 +"},"

88 +"\"CUST_REQ\":{"

89 +"\"CUST_ID\":\":getCustId("+number+",'4','',551)\","

90 +"\"LATN_ID\":\"551\","

91 +"\"PASSWORD\":\"\""

92 +"}"

93 +"}"

94 +"]"

95 +"}"

96 +"}";97 /*调用post请求方法*/

98 String postResult =doHttpPost(Json, URL);99 /*设置响应报文内容*/

100 sr.setResponseData(postResult, null);101 sr.setDataType(SampleResult.TEXT);102 sr.setSuccessful(true);103 sr.sampleEnd();104 } catch(Exception e) {105 e.printStackTrace();106 }107

108 returnsr;109 }110

111 /**

112 * doHttpPost:http发送json报文形式的post请求113 *@paramxmlInfo 请求报文114 *@paramURL 请求地址115 *@returnString 响应内容116 *@exception

117 */

118 public staticString doHttpPost(String xmlInfo, String URL) {119 byte[] xmlData =xmlInfo.getBytes();120 InputStream instr = null;121 try{122 URL url = newURL(URL);123 URLConnection urlCon =url.openConnection();124 urlCon.setDoOutput(true);125 urlCon.setDoInput(true);126 urlCon.setUseCaches(false);127 urlCon.setRequestProperty("Content-Type", "text/xml");128 urlCon.setRequestProperty("Content-length", String.valueOf(xmlData.length));129 DataOutputStream printout = newDataOutputStream(urlCon.getOutputStream());130 printout.write(xmlData);131 printout.flush();132 printout.close();133 instr =urlCon.getInputStream();134 byte[] bis =IOUtils.toByteArray(instr);135 String ResponseString = new String(bis, "UTF-8");136 if ((ResponseString == null) || ("".equals(ResponseString.trim()))) {137 System.out.println("返回空");138 }139 returnResponseString;140

141 } catch(Exception e) {142 e.printStackTrace();143 return "0";144 } finally{145 try{146 instr.close();147 } catch(Exception ex) {148 return "0";149 }150 }151 }152 }153

3:在maven工程src/main下面新建assembly.xml文件,用作maven打包

1

2 assembly

3

4 tar.gz

5

6 true

7

8

9 ${project.build.directory}/dubbo/META-INF/assembly/bin

10 bin

11 0755

12

13

14 src/main/assembly/conf

15 conf

16 0644

17

18

19

20

21 lib

22

23

24

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请求,如果有参数化可设置参数化文件

d7fe2d281976e8f3cd62a27d8e60553c.png

上图为两个线程测试了一下,发现调用通过成功,响应数据正常返回,故该脚本可以正常使用

至于如何用这个jmx脚本做性能测试,我就不在重复了,参考我的博文-jmeter命令行运行-单节点测试或者分布式测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/526044.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 换服务器_更换MYSQL后数据库连接问题

【IT168 服务器学院】查看MYSQL数据库中 数据库与用户的连接方式>mysql -uroot -ppassword>use mysql;>select User,host,Password from user;问题:将备份的MYSQL数据库CP回DATA下后,老是连接数据库出错,或是提示UPDATE之类&#xf…

java 向上转型_java向上转型和向下转型

转型是在继承的基础上而言的,继承是面向对象语言中,代码复用的一种机制,通过继承,子类可以复用父类的功能,如果父类不能满足当前子类的需求,则子类可以重写父类中的方法来加以扩展。向上转型:子…

ckeditor java 上传_java使用CKEditor实现图片上传功能

java如何使用ckeditor实现图片上传功能,具体内容如下1.根据实际需要下载指定的ckeditor2.删除文件ckeditor/plugins/image/dialogs/image.js预览框中文本内容,并修改hidden属性值为显示上传选项卡删除image.js中包含在双引号中的上述文本将image.js中的h…

imsi序列号_IPhone 获取IMSI序列号

获取IPhone的IMSI序列号 无 #include dlfcn.h#define PRIVATE_PATH "/System/Library/PrivateFrameworks/CoreTelephony.framework/CoreTelephony"- void getImsi(){#if !TARGET_IPHONE_SIMULATOR void *kit dlopen(PRIVATE_PATH,RTLD_LAZY); NSString *imsi获取IPh…

java如何实现信号量_使用二进制信号量实现通用信号量

看到你的问题图像后,输入信号量的目的是只允许单个进程/线程等待锁定,如果你不使用它,其他进程将进入等待队列 .why we need the entry semaphore条目信号量未使用任何值初始化,如果它是全局声明的,则它将初始化为0.因…

java定时任务什么时间e结束_Java定时任务

public classQuartzManager {private static SchedulerFactory schedulerFactory newStdSchedulerFactory();/*** Description: 添加一个定时任务**paramjobName 任务名*paramjobGroupName 任务组名*paramtriggerName 触发器名*paramtriggerGroupName 触发器组名*paramjobClas…

Java中运用数组的四种排序方法_JAVA中运用数组的四种排序方法

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼快速排序public class TestMain {public static void main(String[] args) {Integer[] list{34,3,53,2,23,7,14,10};QuicSort qsnew QuicSort();qs.quick(list);for(int i0;iSystem.out.print(list[i]" ");}System.out.p…

java 时间转中文_使用JScript把时间转成中文

测试页function TimeCtrl(){this.DateObj new Date();this.toGb function(Str){Str Str.toString();if(/^\d$/.test(Str)){var NewStr "";var GBNum "零一二三四五六七八九";for(var i 0; i < Str.length; i){NewStr GBNum.charAt(Str.charAt(i)…

java比赛用多重for_关于 Java 中 for的多重循环

1、i1&#xff0c;赋值2、判断 i < 3(i为1)&#xff0c;结果为 true&#xff0c;进入循环体 A&#xff1a;for (int j 1;j < i;j) {System.out.print("*");} System.out.println(); 这部分。3.0、执行循环体 A。3.1、j 1&#xff0c;赋值3.2、判断 j < i …

java 程序流程控制知识点_JAVA基础知识点梳理三:流程控制语句

条件语句之 if语法&#xff1a;执行过程&#xff1a;例&#xff1a;int score 65;if (score > 60) {System.out.println("该学生及格");}//注&#xff1a;如果 if 条件成立时的执行语句只有一条&#xff0c;大括弧可以省略&#xff0c;但如果执行语句有多条&…

寂静岭3java攻略_《寂静岭3HD》通关心得:感人之佳作

作者&#xff1a;jet1942(原帖点击进入)寂静岭是什么?它是人的内心世界,它是人赎罪的地方。读了这句话后&#xff0c;是不是感觉意境非常深邃&#xff0c;还带有些恐怖感?是的&#xff0c;这就是寂静岭的魅力所在&#xff0c;作为一款AVG类游戏&#xff0c;他与生化危机不同&…

java不要无限循环_java – 看似无限循环终止,除非使用System.out.println

我有一个简单的代码,应该是一个无限循环,因为x将永远增长,并将始终保持大于j.int x 5;int y 9;for (int j 0; j < x; j) {x x y;}System.out.println(y);但是按原样,它打印y并且不会无休止地循环.我无法弄清楚为什么.但是,当我按以下方式调整代码时&#xff1a;int x …

jpg无损压缩 java_使用FreeImage对JPEG进行无损优化

您可以使用FreeImage删除元数据&#xff0c;但是&#xff0c;对于jpeg&#xff0c;图像将在保存时重新压缩&#xff0c;并伴随相关的图像质量损失 . by default, FreeImage will have copied the metadata to the new imageIf Not (args.CopyMetadata) ThenDim tag As New Free…

mysql数据应用从入门_MYSQL数据库应用从入门到精通----读书笔记

mysql1、创建数据库create database database_name;2、查看数据库show database_name;3、选择数据库use database_name;4、删除数据库drop database database_name;5、认识支持的存储引擎show engines \g;6、创建数据库表create table t_dept(deptno int,dname varchar(20),loc…

Java zset 应用_Java简单使用redis-zset实现排行榜

简单使用redis-zset实现排行榜此方法实现一个根据某字段的查询次数进行排行&#xff0c;查询的次数越多排行越前(从大到小排序)&#xff0c;适用于初学者1.添加依赖org.springframework.bootspring-boot-starter-data-redis2.注入RedisTemplate方法Autowiredpublic RedisTempla…

安卓的java无法访问网络_Android网络访问的基本方法

Android访问网络的两种主要方式&#xff1a;1、标准Java接口(java.net) ----HttpURLConnection&#xff0c;可以实现简单的基于URL请求、响应功能&#xff1b;2、Apache接口(org.appache.http)----HttpClient&#xff0c;使用起来更方面更强大。一般来说&#xff0c;用这种接口…

create用法java_Java AcousticEchoCanceler.create方法代碼示例

import android.media.audiofx.AcousticEchoCanceler; //導入方法依賴的package包/類Overridepublic boolean initCapturer() {// initalize audio modeaudioManagerMode.acquireMode(audioManager);// get the minimum buffer size that can be usedint minRecBufSize AudioR…

form表单图片预览 layui_layui 实现图片上传和预览

[学习笔记]图片不自动上传并在表单提交时再上传&#xff0c;看代码。附上表单页面前台实现autocomplete"off" class"layui-input" disabled>autocomplete"off" class"layui-input">上传图片确定layui.use([form, layer, upload]…

java不会框架怎么办_感觉学java无从下手了,各种框架乱七八糟,感觉好乱。该怎么办!?...

image各种各样的编程语言不断崛起&#xff0c;但唯有Java是牢牢占据着老大的位置&#xff0c;目前几乎90%以上的大中型互联网应用系统在服务器端开发首选Java。因此&#xff0c;也是吸引了不少年轻人投入到Java的学习之中。但不得不说&#xff0c;Java作为老牌编程语言&#xf…

java基数排序 数组_万字长文带你掌握Java数组与排序,代码实现原理都帮你搞明白!...

查找元素索引位置基本查找根据数组元素找出该元素第一次在数组中出现的索引public class TestArray1 {public static void main(String[] args) {//定义一个数组int[] arr{10,20,70,10,90,100,1,2};//根据元素查找出该元素在数组中第一次出现的索引int indexgetIndexByEle(arr,…