zoukankan      html  css  js  c++  java
  • 【转】JMeter学习(十七)JMeter测试Java

    目的:对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_HOMElibext目录;

    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 stub
              Arguments params = new Arguments(); 
              params.addArgument("num1", "1");//设置参数,并赋予默认值1 
              params.addArgument("num2", "2");//设置参数,并赋予默认值2
              JavaSamplerContext 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_HOMElibext目录;

    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不向服务器发送数据请求,一般被用作调试目的使用。

     
     

    至此,这已讲解完了。

     
     
  • 相关阅读:
    洛谷 1850 NOIP2016提高组 换教室
    2018牛客多校第三场 C.Shuffle Cards
    2018牛客多校第一场 B.Symmetric Matrix
    2018牛客多校第一场 A.Monotonic Matrix
    2018牛客多校第一场 D.Two Graphs
    2018宁夏邀请赛L Continuous Intervals
    2018宁夏邀请赛K Vertex Covers
    BZOJ
    HDU
    ACM International Collegiate Programming Contest, Egyptian Collegiate Programming Contest (ECPC 2015)
  • 原文地址:https://www.cnblogs.com/perfectwang/p/7235411.html
Copyright © 2011-2022 走看看