Jmeter Java Sampler编写入门.docx_第1页
Jmeter Java Sampler编写入门.docx_第2页
Jmeter Java Sampler编写入门.docx_第3页
Jmeter Java Sampler编写入门.docx_第4页
Jmeter Java Sampler编写入门.docx_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、简介JMeter的http请求的性能测试可能大家都比较熟悉,它的工作原理是持续发送我们录制修改的http请求,来对server端进行施压,在施压过程中我们可以灵活设置一些请求参数或结果校验参数,JMeter会将这些参数加入到我们的请求当中来发送请求。在发送请求前,JMeter会做一个时间戳,然后在请求所有字节返回后,JMeter会再做一个时间戳,然后这个结果就是我们当前http请求的响应时间。当然JMeter里还可以做一个判断,如果你设置有结果校验的话,JMeter会把获得响应的字节编码后和预期结果做一个对比,如果对比成功,则认为本次请求是PASS,否则为FAIL。那Java请求的性能测试是什么呢?Java请求性能测试与http请求非常类似,只是它更底层一些,就是通过编写脚本代码对一个暴露java接口的应用一个或几个方法事务调用进行施压,它会得到这个事务过程的响应时间和响应结果,做一个对比,http请求是应用提供http协议的服务,发送请求到服务端得到返回值,java请求则是应用提供接口服务,发送java请求到服务端得到返回值。其实JMeter是用Java语言做的,所以他里面的所有协议的请求都是基于Java实现,例如http请求,它只是用Java代码封装了Http的协议,内部其实使用了Java的类库来对应用发送请求的(包,再深入你会发现这些请求都是通过java的socket实现),所以通过Java请求的性能测试,我们可以做任意自定义协议请求的性能测试。二、为什么要做Java请求的性能测试当开发的一个应用是WebService,或者是hessian协议暴露接口,也可以是其他自定义协议暴露了接口时,这时对接口的性能测试,如果找开发编写一些页面来进行调用,难免会在http请求里做解析消耗一些时间和资源,不能精确地得到应用的性能结果,这时候如果使用Java请求的性能测试,更能精确体现出应用的性能表现。三、Java请求性能测试的例子说明:本例子只供参考,用于学习,测试的接口方法是启在jmeter的jvm中,所以可以直接调用,真实环境的接口性能测试需要协议封装的。1、被测方法模拟我们模拟一个被测类,在这里没有指明package,自己可以随意设定。public class TargetClass private SimpleDateFormat ymdhms = new SimpleDateFormat(yyyy-MM-dd hh:mm:ss); public void timeConsumption() for (int i = 0; i 0) results.setSamplerData(testStr); try results.sampleStart();/事务代码,在这里编写真实项目中远程调用的代码,sampleStart和sampleEnd方法之间作为一次事务。Jmeter把下面代码的执行时间作为一次请求的响应时间 targetClass.timeConsumption(); int result = targetClass.targetFunction(testStr); results.sampleEnd(); /用于设置运行结果的成功或失败,如果是false则表示结果失败,否则则表示成功 if (result = testStr.length() results.setSuccessful(true); else results.setSuccessful(false); catch (Throwable t) t.printStackTrace(); System.err.println(Exception!); results.setSuccessful(false); return results; /结束方法,实际运行时每个线程仅执行一次,在测试方法运行结束后执行,类似于LoadRunner中的end方法 public void teardownTest(JavaSamplerContext arg0) System.out.println(tearDown); 红色加粗部分是主要的事务部分,JMeter会在sampleStart时加一个时间戳,然后在sampleEnd时再加一个时间戳,两个时间戳相减JMeter则认为是我们一次Java请求的响应时间,单位ms。随后我们做一些判断可以判定此次请求成功与否,本例中应该不会有失败场景。 完成这段脚本代码后,同步骤1将项目进行jar打包,完成打包后,把本次打包jar和步骤1中的jar包放入JMeter目录的/lib/ext/目录下,然后再启动JMeter。PS:在完成脚本的编写后,我们可以写如下一个简单的main函数对脚本进行调试,因为模拟了JMeter去执行脚本,可能需要引入更多的包到项目中来。public static void main(String args) TestLength test = new TestLength(); JavaSamplerContext arg0 = new JavaSamplerContext(test.getDefaultParameters(); test.setupTest(arg0); test.runTest(arg0); test.teardownTest(arg0);3、编写jmx测试计划在将两次的jar放入JMeter的/lib/ext/下面后,启动JMeter,新建一个线程组,我们设置运行脚本就加载到20个线程,每个线程循环1000次,即我们对我们例子的事务进行2万次的施压。在线程组里添加一个Java请求的Sampler,如果你已正确将脚本的jar包放入了/lib/ext/目录下,我们可以在类名称下拉框里找到刚才我们编写的脚本类com.alibaba.jmetertest.TestLength在选中这个类后,我们还可以看到在请求里可以设置脚本里编写的入参testStr,这个值我们可以通过CSV Data Set Config、函数助手、正则表达式提取器从前一请求返回值获取等设置成一个动态的值,本例中我们使用简单的CSV Data Set Config来设置这个值吧。先新建一个CSV Data Set Config,并保存测试计划到java.jmx中。登录到46机器Admin账号,使用一下名称生成1万条的随机字符串到testString文件中echoa-z0-9-_3,16|regxstr10000 testString,下载testString放到与测试计划同一目录中。设置CSV Data Set Config内容如下,其详细的设置说明请见野蛮孟姜视频。再到Java请求中我们设置我们变量的参数如下: 保存测试计划,到此我们的java.jmx已经完成,接下来我们可以执行测试计划来进行性能测试了。4、执行测试计划将我们生成的jar包上传到linux服务器Jmeter的/lib/ext/目录下,上传测试计划通过执行./jmeter -n -t java.jmx -l java.jtl运行脚本(如果对这条命令有疑问,可以执行jmeter.bat -h查看帮助),-n -t 后跟jmx文件,-l 指定日志文件名称。执行完毕后会在测试计划的目录下生成java.jtl文件。我们使用伯虎的jtlParser解析java.jtl,可以得到如下的内容:这就是我们之前编写脚本里的事务进行2万

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论