目的:对Java程序进行测试

目录

一、核心步骤

二、实例

三、JMeter Java Sampler介绍

四、自带java Request Sampler

一、核心步骤

1.创建一个Java工程;

2.将JMeter的lib目录下的jar文件添加进此工程的Build Path;

3.创建一个类并实现JavaSamplerClient接口或继承AbstractJavaSamplerClient,并重写;

public Arguments getDefaultParameters();设置可用参数及的默认值;
public void setupTest(JavaSamplerContext arg0):每个线程测试前执行一次,做一些初始化工作;
public SampleResult runTest(JavaSamplerContext arg0):开始测试,从arg0参数可以获得参数值;
public void teardownTest(JavaSamplerContext arg0):测试结束时调用;

4.Export为Runnable Jar File;

5.将此jar包放入JMETER_HOME\lib\ext目录;

6.以管理员身份打开JMeter;

7.创建线程组、Java Request、查看结果树,进行测试;

二、实例

1.在eclipse里面新建一个工程:JavaForJMeter

2.把{Jmeter_home}\lib目录下的所有jar添加进此工程的Build Path;

3.添加类Hello,代码如下:

package com.test.webservice;public class Hello {public String sayHello(){return "Hello";}public String sayHelloToPerson(String s){if(s == null || s.equals(""))s = "nobody";return (new StringBuilder()).append("Hello ").append(s).toString();}public int sum(int a,int b){return a+b;}
}

4.添加类perftest,并继承AbstractJavaSamplerClient,并添加代码如下:

注意:System.out等的输出会显示在启动JMeter时的命令窗口内,但过多的输出会影响性能的准确性。

package com.test.webservice;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;
import com.test.webservice.Hello;public class perftest extends AbstractJavaSamplerClient {private String a;private String b;/** Holds the result data (shown as Response Data in the Tree display). */private String resultData;// 这个方法是用来自定义java方法入参的。// params.addArgument("num1","");表示入参名字叫num1,默认值为空。//设置可用参数及的默认值;public Arguments getDefaultParameters() {Arguments params = new Arguments();params.addArgument("num1", "");params.addArgument("num2", "");return params;}//每个线程测试前执行一次,做一些初始化工作;public void setupTest(JavaSamplerContext arg0) {}//开始测试,从arg0参数可以获得参数值;public SampleResult runTest(JavaSamplerContext arg0) {a = arg0.getParameter("num1");b = arg0.getParameter("num2");SampleResult sr = new SampleResult();sr.setSampleLabel( "Java请求哦");try {sr.sampleStart();// jmeter 开始统计响应时间标记Hello test = new Hello();// 通过下面的操作就可以将被测方法的响应输出到Jmeter的察看结果树中的响应数据里面了。resultData = String.valueOf(test.sum(Integer.parseInt(a), Integer.parseInt(b)));if (resultData != null && resultData.length() > 0) {sr.setResponseData("结果是:"+resultData, null);sr.setDataType(SampleResult.TEXT);}// System.out.println(resultData);sr.setSuccessful(true);} catch (Throwable e) {sr.setSuccessful(false);e.printStackTrace();} finally {sr.sampleEnd();// jmeter 结束统计响应时间标记}return sr;}//测试结束时调用;public void teardownTest(JavaSamplerContext arg0) {// System.out.println(end);// System.out.println("The cost is"+(end-start)/1000);}// main只是为了调试用,最后打jar包的时候注释掉。/*public static void main(String[] args) { // TODO Auto-generated method stubArguments params = new Arguments(); params.addArgument("num1", "1");//设置参数,并赋予默认值1 params.addArgument("num2", "2");//设置参数,并赋予默认值2JavaSamplerContext arg0 = new JavaSamplerContext(params); perftestbbb test = new perftestbbb(); test.setupTest(arg0); test.runTest(arg0);test.teardownTest(arg0); }*/
}

5.Export为Runnable Jar File:hello.jar

6.将此hello.jar包放入JMETER_HOME\lib\ext目录;

7.打开JMeter,添加线程组,添加Java请求,查看结果树。

三、JMeter Java Sampler介绍

Arguments

getDefaultParameters() 用于获取界面的参数

SampleResult

runTest(JavaSamplerContext context) 类似于LR的Action,result.sampleStart()一个事务开始,result.sampleEnd()一个事务 结束

void

setupTest(JavaSamplerContext context) 初始化方法,类似于LR的init和Junit中的setUp()

void

teardownTest(JavaSamplerContext context) 类似于LR的end和Junit中的tearDown()

执行的先后顺序为:
getDefaultParameters() --> setupTest(JavaSamplerContext context) --> runTest(JavaSamplerContext context) --> teardownTest(JavaSamplerContext context)

常用的方法:
①、addArgument("name", "value")    定义参数
②、sampleStart()    定义事务的开始,类似于LR的lr_start_transaction,和LR一样事务间不要放无关代码
③、sampleEnd()    定义事务的结束,类似于LR的lr_end_transaction
④、setSuccessful(true、false)    设置运行结果的成功或失败,Jmeter统计成功失败的次数,在聚合报告中能够体现。
四、自带Java Request Sampler

JMeter默认实现了两个Java Request Sampler:SleepTest Sampler和JavaTest Sampler。

JavaTest Sampler不向服务器发送数据请求,一般被用作调试目的使用。

至此,这已讲解完了。

转载于:https://www.cnblogs.com/perfectwang/p/7235411.html

【转】JMeter学习(十七)JMeter测试Java相关推荐

  1. JMeter学习笔记--JMeter常用测试元件

    JMeter测试计划有一个被称为"函数测试模式"的选项,如果被选择,它会使Jmeter记录来自服务器返回的每个取样的数据.如果你在测试监听器中选择一个文件,这个数据将被写入文件.如 ...

  2. JMeter学习笔记--JMeter监听器

    监听器(Listeners)是一种展示采样结果的测试元件,采样结果可以通过树.表格.图片加以展示,或者简单地写入某个结果文件之中. 注:不同的监听器通过不同的方式展示服务器响应信息,但它们都将同样的原 ...

  3. JMeter学习笔记——JMeter关联

    关联是Jmeter工具中非常重要的一个技术.因为在测试过程过有些数据是经常发生变化的,要获取并使用这些数据,就要使用关联. 比如: 用户登录后,session信息都不同,有些操作要使用session, ...

  4. jmeter测试java接口测试_简单易学的测试攻略:JMeter测试Java请求示例

    JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现,大家可以到官网下载源代码和查看相关文档. 关于使用JMeter进行JDBC数据库测试.HTTP请求接 ...

  5. 使用jmeter测试java程序

    最近在用jmeter进行性能测试,防止被忘记,把步骤写下. 场景:测试java程序 1.右击测试计划-> 添加 -> Threads(Users) -> 线程组 2.设置线程属性,用 ...

  6. jmeter测试java代码

    有时候总是要写代码的,不得不说你也得会,这不往下看 java请求了,就的写代码,那么先来实现一个类, package com.company.jemeters;public class Hello { ...

  7. jmeter测试java服务_Jmeter 测试 JMS (Java Message Service)/ActiveMQ 性能

    前言 JMS 介绍:JMS 即 Java 消息服务(Java Message Service)应用程序接口,是一个 Java 平台中关于面向消息中间件(MOM)的 API,用于在两个应用程序之间,或分 ...

  8. 学习笔记-JMeter 进行接口压力测试

    一.压力测试场景设置 1.场景设定:进行接口压力测试时,有单场景也有混合场景.单场景就是对一个接口进行请求:混合场景需要对多个接口进行请求,在流程类业务场景会运用到 2.压测时间设定:通常时间为10- ...

  9. 全网最新最全的jmeter接口测试,压力测试

    目录 一.前言 二.接口测试 2.1Jmeter-http接口脚本 2.2Jmeter-webservice接口脚本 三.压力测试 3.1压测任务需求的确认 3.2压测设置 3.3压测结果查看 3.4 ...

  10. 使用Jmeter至WebService压力测试

    使用Jmeter至WebService压力测试   目中我们使用了Jmeter对webservice进行了压力測试,Apache JMeter是Apache组织开发的基于Java的压力測试工具.用于对 ...

最新文章

  1. Openresty最佳案例 | 第1篇:Nginx介绍
  2. 国家脑库:神经科学研究的基础设施
  3. 面试 | 创建多少个线程合适,该怎么回答?
  4. djangoORM数据类型及基本操作
  5. 三年开发项目经验总结
  6. PHP中路由和rewrite的使用
  7. jquery(js) 增加 删除 修改属性样式、元素内容
  8. 【转】随机函数 rand() srand() 以及seed的原理
  9. algorithm头文件中的函数:remove()与remove_if() 函数,……
  10. php 编译原理,php编译原理 - Robin3D的个人页面 - OSCHINA - 中文开源技术交流社区
  11. Dynamic Web TWAIN:网页扫描过程中如何自动检测和删除空白页?
  12. 怎么清楚计算机硬盘搜索记录,如何去除电脑硬盘删除痕迹
  13. 微信带参二维码数据解析
  14. win10打字反应慢处理
  15. normalize.css 类似,使用normalize.css遇到的问题?
  16. kaggle网站注册登录流程详细介绍(小白必看)
  17. mysql 编码错误_【分享】MySQl操作系统提示错误编码
  18. 如何一次高效的插入200MB(50万条)的insert语句
  19. QQ2006贺岁版SP1发布更新地址栏搜索(转)
  20. http请求 响应返回

热门文章

  1. RedHat停止维护CentOS!CentOS 创建者发起新项目,刚上线空白项目Star数已破两千
  2. Linux使用LVM逻辑卷 给分区扩容 不重启 热扩容
  3. 关于计算机组件游戏,Windows系统运行库/游戏运行库组件怎么补全?
  4. 数据分析学习笔记—python简单操作EXCEL
  5. 数据分析学习笔记—python数据类型与数据容器
  6. html5片转为base64,base64和图片的互转(HTML5的File实现)
  7. 容器访问宿主机数据库_docker从容器中怎么访问宿主机
  8. selenium python怎么断言_如何为python / selenium中的特定元素断言文本?
  9. pytorch学习笔记(三十):RNN反向传播计算图公式推导
  10. 牛客 2021年度训练联盟热身训练赛第二场 I题Pegasus Circle Shortcut