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

     
     

    至此,这已讲解完了。

     
     
  • 相关阅读:
    11.26
    11.25
    11.24
    11.23
    11.22
    11.21
    11.20
    3.16结对作业1.2
    3.14结对作业1.0
    3.13Android学习
  • 原文地址:https://www.cnblogs.com/perfectwang/p/7235411.html
Copyright © 2011-2022 走看看