如何在jmeter中java怎么调用jmeter自己写的java工具包

如何在jmeter中调用自己写的java工具包_百度知道您现在的位置:&&>>&&>>&&>>&&>>&正文
如何使用JMeter测试Java项目
  四、 测试结果的分析说明
  说明:
  Label: 每个 JMeter 的 element (例如 HTTP Request )都有一个 Name 属性,这里显示的就是 Name 属性的值
  #Samples: 表示你这次测试中一共发出了多少个请求,我的测试计划模拟 10 个用户,每个用户迭代 10 次,因此这里显示 100
  Average: 平均响应时间 ―― 默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以 Transaction 为单位显示平均响应时间
  Median: 中位数,也就是 50 %用户的响应时间
  90% Line: 90 %用户的响应时间
  Min: 最小响应时间
  Max: 最大响应时间
  Error%: 本次测试中出现错误的请求的数量 / 请求的总数
  Throughput: 吞吐量 ―― 默认情况下表示每秒完成的请求数( Request per Second ),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
  KB/Sec: 每秒从服务器端接收到的数据量,相当于 LoadRunner 中的 Throughput/Sec
  我分别模拟10、25、50、75和100个用户并发访问该页面,根据报告所得测试结果作出如下统计。注:时间单位是ms
  用户数 #Samples Average Median 90%Line Min Max Error% Throughput KB/Sec
  10 642 672 688 125 125 719 00.0 14.8/sec 221.15
  25 250 50 250
14.5/sec 217.14
  50 500 78 281
14.2/sec 212.02
  75 750 84 328
14.5/sec 216.67
  100 85 4 00.0 15.1/sec 225.43
  一般情况下,当用户能够在2秒以内得到响应时,会感觉系统的响应很快;当用户在2-5秒之间得到响应时,会感觉系统的响应速度还可以;当用户在5-10秒以内得到响应时,会感觉系统的响应速度很慢,但是还可以接受;而当用户在超过10秒后仍然无法得到响应时,会感觉系统糟透了,或者认为系统已经失去响应,而选择离开这个Web站点,或者发起第二次请求。故该系统的用户信息查询信息页面的在10到25人并发访问时,系统响应速度很快,25人到50人并发访问时速度还可以,50人到100人并发访问就比较慢了。&&&&[3]&
【责编:Peng】
?&[]?&[]?&[]?&[]?&[]?&[]?&[]?&[]?&[]?&[]
相关产品和培训
 友情推荐链接
 认证培训
 专题推荐
 ? ? ? ? ? ? ? ? ? ?
 今日更新
?&?&?&?&?&?&?&?&?&?&
 社区讨论
 博客论点
 频道精选
 Java 频道导航实战:使用JMeter的Java Sampler轻松定制自己的benchmark
实战:使用JMeter的Java Sampler轻松定制自己的benchmark
以前碰到更多的是WEB APP的性能测试,也许用得最多的是Loadrunner, Web Stress tool之类的常态化工具,从没考虑过对于后端引擎类的测试是怎样的。
现在有幸主导了一个企业引擎的研发,其最关健的不是其功能如何,而是性能如何。故benchmark就显得尤为重要。
既然是benchmark,一系列的性能监测、度量工具使用在所难免:
1. nmon。首选的AIX/Linux性能监测工具。很多年前简单总结过,可参考:http://www.blogjava.net/itstarting/archive//255638.html.
2. jconsole。这个jdk自带的工具,监控JVM Heap size及回收、线程数量、CPU使用之类的,简单好用
3. JMeter。这个Apache的老字号,不得不搬出来(公司没有Loadrunner,也不能盗版)
4. Jamon。这个是方法级性能监控工具,完全无侵入性,如果框架用Spring,加上一小段AOP的配置即可
没想到的是,最给我带来惊喜,还是JMeter.
严格意义上上,JMeter我还是第一次在正式场合搬出来深度使用,以前简单的加压http,顶多算是个hello world.
JMeter有很多的插件式的扩展,因为本引擎使用的Netty + Protobuf,所以自然想到的还是JUnit Sampler和Java Sample。其中JUnit Sample个人觉得没有Java Sampler好,姑且按下不表。
Java Sampler,顾名思义,就是一个Java的采样器,扩展AbstractJavaSamplerClient即可轻松实现。
Java代码 &public&class&Benchmark&extends&AbstractJavaSamplerClient&{&&...&&}&&
Benchmark有很多的场景,可以写很多个Benchmark类,比如Benchmark_A, Benchmark_B,我偷懒,四大场景我就写了一个。
好了,下面重点说说需要实现的部分,及其作用。
1. 重载getDefaultParameters方法。
Java代码 &@Override&&public&Arguments&getDefaultParameters(){&&&&&&&&&&Arguments&params&=&new&Arguments();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&return&&&}&&
&在这个方法里,可以设置各种参数,这些参数可以从GUI处获取,也可以设置合适的默认值。有意思的是,这些默认值在GUI扫描的时候,会自动出现在界面上,以供必要的调整和优化。
2. 重载setupTest方法。
Java代码 &@Override&&public&void&setupTest(JavaSamplerContext&arg0)&{&&&&&&&}&&
为了达到真正的性能测试目的,所有的数据准备工作,应在这里完成。 需要注意的是,这个方法在JMeter初始化的每个线程都会执行一遍,而不是全局仅一遍。
3. 重载并重点编写runTest方法。
Java代码 &@Override&&public&SampleResult&runTest(JavaSamplerContext&arg0)&{&&&&&&&&}&&
这是我们重点要做编写的客户端代码,为Java Sampler实现的重点。
在这里,你可以尽情的调用客户端的API,完成所需要与服务器端交互的一切,包括交易成功与否的判断。
所谓代码胜千言,下面看看代码好了,加上了注释,就不用废话了:
Java代码 &@Override&&public&SampleResult&runTest(JavaSamplerContext&arg0)&{&&&&&&&&SampleResult&sp&=&new&SampleResult();&&&&&&&&&&&MatchResponse&matchR&&&&&&&&&&UUID&uuid&=&UUID.randomUUID();&&&&&&&&&&String&key&=&uuid.toString();&&&&&&&&&&sp.sampleStart();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&try&{&&&&&&&&&&&&&&&&&&&&&&&&if("PC2-ID".equalsIgnoreCase(benchmark_mode)){&&&&&&&&&&&&&&&&&&matchResponse&=&client.sendMatchRequest(&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&key,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&ENGINE.code(),&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&pc2Image,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&sourcePositions,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&targetIdentifiers,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&ImageType.PC2.imageCode());&&&&&&&&&&&&&&}else&if("WSQ-ID".equalsIgnoreCase(benchmark_mode)){&&&&&&&&&&&&&&&&&&matchResponse&=&client.sendMatchRequest(&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&key,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&ENGINE.code(),&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&wsqImage,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&sourcePositions,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&targetIdentifiers,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&ImageType.WSQ.imageCode());&&&&&&&&&&&&&&}else&if("ID-ID".equalsIgnoreCase(benchmark_mode)){&&&&&&&&&&&&&&&&&&matchResponse&=&client.sendMatchRequest(&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&key,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&ENGINE.code(),&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&sourceIdentifier,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&sourcePositions,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&targetIdentifiers,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&ImageType.PC2.imageCode());&&&&&&&&&&&&&&}else{&&&&&&&&&&&&&&&&&&print("Not&supported&benchmark&mode&found",&benchmark_mode);&&&&&&&&&&&&&&&&&&throw&new&java.lang.IllegalArgumentException("Not&supported&benchmark&mode&found");&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&sp.sampleEnd();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&this.printMatchResponse(matchResponse);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&sp.setSuccessful(true);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Iterator&MatchResult&&matchResults&=&matchResponse.getMatchResults().iterator();&&&&&&&&&&&&&&MatchResult&matchR&&&&&&&&&&&&&&MatchScore&&&&&&&&&&&&&&&while(matchResults.hasNext()){&&&&&&&&&&&&&&&&&&matchResult&=&matchResults.next();&&&&&&&&&&&&&&&&&&Iterator&MatchScore&&scores&=&matchResult.getMatchScores().iterator();&&&&&&&&&&&&&&&&&&while(scores.hasNext()){&&&&&&&&&&&&&&&&&&&&&&score&=&scores.next();&&&&&&&&&&&&&&&&&&&&&&if&(score.score&9999.0){&&&&&&&&&&&&&&&&&&&&&&&&&&sp.setSuccessful(false);&&&&&&&&&&&&&&&&&&&&&&&&&&break;&&&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&}&&&&&&&&&&}&catch&(Exception&e)&{&&&&&&&&&&&&&&sp.sampleEnd();&&&&&&&&&&&&&&sp.setSuccessful(false);&&&&&&&&&&&&&&&&&e.printStackTrace();&&&&&&&&&&&&&&return&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&return&&&&&}&&
4. 重载并编写teardownTest方法。
Java代码 &@Override&&public&void&teardownTest(JavaSamplerContext&context)&{&&&&&&&&&&&}&&
天下没有不散的筵席,落幕时分跟JUnit的tearDown一样,但据我测试的效果来看,这玩意全局只调用一次,而非跟setupTest
那样每个线程都来一次。
下面谈谈怎么配置JMeter,并真正跑起来。
有几个步骤:
1. 安装JMeter...咳废话
2. 打包Benchmark为jar并拷贝所有的依赖到 %apache-jmeter%\lib\ext下。
我用maven,就更简单了,配上下面那段:
Xml代码 &&&&&&&org.apache.maven.plugins&&&&&&maven-jar-plugin&&&&&&2.3.1&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&true&&&&&&&&&&&&&&&&&&lib/&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
这样拷贝过去的就是:
%apache-jmeter%\lib\ext\我的benchmark.jar
%apache-jmeter%\lib\ext\lib\*——各种杂七杂八的依赖
3. 启动JMeter。
双击%apache-jmeter%\bin\jmeter.bat
4. 新增一个Thread Group.
右键Test Plan-&Add-&Threads (Users)-&Thread Group
改名为Benchmark,并设置几个重量级的参数:
a) Number of Threads (users),并发的线程数
b) Ramp-Up Period (in seconds),预热时间,类似于一般意义上的Think Time
c) Loop Count,每组并发线程循环的次数
d) Scheduler是另外一组用来配置调度的,我没用这个
5. 新增Java Request.
右键刚新增的线程组(这里名叫Benchmark了)-& Add -& Sampler -& Java Request
默认情况下,如果你仅放了一个Java Sampler,JMeter即可通过扫他的classpath扫到你的Java Sampler并自动出现在GUI上。如下图:
6. 再放一到若干个Listener,用以观察输出/图形化报表
一般而言,我喜欢放两个,一个是最最朴素的"View Results in Table":
右键刚新增的线程组Benchmark-& Add -& Listener -& View Results in Table
再来一个"Graph Full Results",图形化的
到此为止,基本配置完毕,保存一下。
跑Benchmark其实就很简单了,一般而言三个步骤:
1. 调整Thread Group的参数,一般包括Number of Threads (users)和Loop Count,以配合不同的压力场景
2. 调整必要的参数,通过点击Java Request,即可控制你的Java Sampler的每个参数细节
3. 点击Start,并观察输出,包括View Results in Table或者Graph Full
Results。输出主要包括:No of Samples、Latest
Sample、Average、Deviation、Throughput、Median等,够用了。如下图:
附:一般而言,如果线程不是太吓人(比如超过1000),一个JMeter实例就够了,如果多了,就要考虑多个JMeter实例并行测试了。
发表评论:
TA的最新馆藏[转]&如何在Jmeter中使用外部的java文件 - 咖啡涩的个人空间 - 51Testing软件测试网 51Testing软件测试网-中国软件测试人的精神家园
如何在Jmeter中使用外部的java文件
& 08:30:21
/ 个人分类:
链接:&http://blog.csdn.net/quiet_girl/article/details/主要讲解的是在中如何使用外部的文件,在使用Jmeter的时候,一旦有这方面的需求,还是比较有用的。

我要回帖

更多关于 jmeter 调用jar 的文章

 

随机推荐