加入收藏 | 设为首页 | 会员中心 | 我要投稿 财气旺网 - 财气网 (https://www.caiqiwang.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

JMeter进阶—详解Java sampler的设计 方法

发布时间:2022-11-30 12:47:22 所属栏目:语言 来源:
导读:  JMeter Java Sampler介绍 我们通常使用jmeter做http或者https请求的测试,但是有些场景我们需要直接调用Java接口进行性能测试, jmeter通过Java请求可以实现该需求(这样就可以处理一些公司自定义的协议了,开发提
  JMeter Java Sampler介绍 我们通常使用jmeter做http或者https请求的测试,但是有些场景我们需要直接调用Java接口进行性能测试, jmeter通过Java请求可以实现该需求(这样就可以处理一些公司自定义的协议了,开发提供协议接口,然后我们通过java sampler进行调用)。本文将会详细介绍jmeter中如何编写 java请求并对其进行调用!   添加Java请求 JMeter进阶——详解Java sampler的设计方法(附源码) Java请求如下:   JMeter进阶——详解Java sampler的设计方法(附源码) 其中上图里com.my.demo.JmeterDemo2,即我们需要调用的Java类;str是我们需要传入的参数。那么Jmeter中如何实现对java请求的调用呢?我会在本文详细讲解!   设计Java请求思路与代码解析 如何编写jmeter java请求,简单地说分如下几点:   1写一个类,叫做Demo,使其继承AbstractJavaSamplerClient;   2.在public SampleResult runTest(JavaSamplerContext arg0)方法里,写处理java代码的逻辑;   3.在public Arguments getDefaultParameters()方法里定义从jmeter中传入java代码的参数;   4.把类Demo 打成jar包并放入jmeter的\lib\ext 目录下(如果Demo需要依赖其它jar包需要一起放入\lib\ext目录下)   实例代码如下:   import org.apache.commons.lang3.StringUtils;  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 JmeterDemo2 extends AbstractJavaSamplerClient  {  private SampleResult sr;  public Arguments getDefaultParameters() {  Argumentsparams = new Arguments();  params.addArgument("str", "");  return params;  }  public SampleResult runTest(JavaSamplerContext arg0) {  this.sr.setSampleLabel("commonsio-demo2");  try {  Stringstr=arg0.getParameter("para");  //使用jar包中StringUtils类的countMatches方法来统计字符串a的个数  int num=StringUtils.countMatches(str, "a");  if (num==0) {  this.sr.setResponseMessage("ResponseMessage:参数匹配0个"); //Sample Result 中的Response message  this.sr.setResponseData("ResponseData:参数匹配0个","UTF-8"); //Response Data的值,会被后面的覆盖  this.sr.setSuccessful(true);//Sample Result 中的结果  }else {  this.sr.setResponseMessage("ResponseMessage:参数匹配"+num+"个");  this.sr.setResponseData("ResponseData:参数匹配"+num+"个","UTF-8");  this.sr.setSuccessful(false);  }  }catch (Exception e) {  this.sr.setResponseMessage(e.getMessage().toString());  this.sr.setSuccessful(false);  }finally {  //this.sr.setResponseData("结束测试", "UTF-8");  super.getNewLogger().info("####测试执行####");  try {  Thread.sleep(500);  }catch (InterruptedException e) {  // TODO Auto-generated catch block  e.printStackTrace();  }  }  return this.sr;  }  public void setupTest(JavaSamplerContext context) {  super.setupTest(context);  super.getNewLogger().info("####测试开始####");  this.sr = new SampleResult();  this.sr.sampleStart();  }  public void teardownTest(JavaSamplerContext context) {  super.teardownTest(context);  this.sr.sampleEnd();  super.getNewLogger().info("####测试结束####");  }  }  这里对上述代码做详细分析:   主要用到的方法如下:   JMeter进阶——详解Java sampler的设计方法(附源码) 方法执行的先后顺序为:   getDefaultParameters() -->   setupTest(JavaSamplerContext context)-->   runTest(JavaSamplerContext context) -->   teardownTest(JavaSamplerContext context)   代码运行后,打开日志结果如下,参数para 对应代码String str=arg0.getParameter("para");   JMeter进阶——详解Java sampler的设计方法(附源码) 从日志中可以看到   setupTest(JavaSamplerContext context) 中的代码被执行1次,打印   ####测试开始####   teardownTest(JavaSamplerContext context) 中的代码被执行1次,打印   ####测试结束####   而runTest中的方法super.getNewLogger().info("####测试执行####"); 被执行5次,因为在线程组中,设置执行5次。(线程组线程执行的次数,影响java请求中的runTest,而不会影响setupTest和teardownTest)。方法super.getNewLogger().info("")会把值写入日志。   setResponseMessage("ResponseMessage:参数匹配0个");打印到Sample Result 中的Response message里;setSampleLabel("commonsio-demo2");设置java请求的显示名称,如下图:   JMeter进阶——详解Java sampler的设计方法(附源码) setResponseData("ResponseData:参数匹配0个","UTF-8"); 打印到Response Data,如下图:   JMeter进阶——详解Java sampler的设计方法(附源码) 最后,方法setSuccessful(true)会影响测试结果   在IDE中开发Jmeter Java 请求   在IDE中开发Jmeter Java 请求与普通java开发一致,引入需要的java包以及jmeter相关jar包即可,引入Jmeter lib\ext下的ApacheJMeter_core.jar和ApacheJMeter_java.jar到IDE中!
 

(编辑:财气旺网 - 财气网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!