zoukankan      html  css  js  c++  java
  • Jmeter性能测试之进阶Java request的使用

    在IDE中引用Jmeter的安装目录lib/ext中两个文件ApacheJMeter_core.jar和ApacheJMeter_java.jar

    Java request的类需要继承AbstractJavaSamplerClient类,在继承AbstractJavaSamplerClient类的时候,需要实现四个方法,分别是

    setupTest():初始化方法,用于初始化性能测试时的每个线程;

    getDefaultParameters():主要用于设置传入的参数;

    runTest():为性能测试时的线程运行体;

    teardownTest():测试结束方法,用于结束性能测试中的每个线程。

     1 package com.test.jmeterdemo;
     2 
     3 import com.test.http.HTTPClient;
     4 import com.test.http.HTTPUtils;
     5 import org.apache.jmeter.config.Arguments;
     6 import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
     7 import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
     8 import org.apache.jmeter.samplers.SampleResult;
     9 
    10 
    11 public class TestHTTP extends AbstractJavaSamplerClient  {
    12     private String url;
    13     private String method;
    14     private String header;
    15     private String reqBody;
    16     private String responseCode;
    17     private String responseHeader;
    18     private String responseBody;
    19 
    20     /**
    21      * 这个方法用来控制显示在GUI页面的属性,由用户来进行设置。
    22      * 此方法不用调用,是一个与生命周期相关的方法,类加载则运行。
    23      */
    24     public Arguments getDefaultParameters() {
    25         Arguments arguments = new Arguments();
    26         arguments.addArgument("Url", "");
    27         arguments.addArgument("Method", "");
    28         arguments.addArgument("Header", "");
    29         arguments.addArgument("ReqBody", "");
    30         return arguments;
    31     }
    32 
    33     /**
    34      * 初始化方法,初始化性能测试时的每个线程
    35      * 实际运行时每个线程仅执行一次,在测试方法运行前执行,类似于LoadRunner中的init方法
    36      */
    37     public void setupTest(JavaSamplerContext jsc){
    38         url = jsc.getParameter("Url");
    39         method = jsc.getParameter("Method");
    40         header = jsc.getParameter("Header");
    41         reqBody = jsc.getParameter("ReqBody");
    42     }
    43 
    44     /**
    45      * 性能测试时的线程运行体
    46      * 测试执行的循环体,根据线程数和循环次数的不同可执行多次,类似于Loadrunner中的Action方法
    47      */
    48     public SampleResult runTest(JavaSamplerContext javaSamplerContext) {
    49         SampleResult results = new SampleResult();
    50         results.setSamplerData(url+"
    "+method+"
    "+header+"
    "+reqBody);
    51         results.setRequestHeaders(header);
    52         //标记事务开始
    53         results.sampleStart();
    54         HTTPUtils.Response response = HTTPClient.sendHttpRequest(url, method, header, reqBody);
    55         //标记事务结束
    56         results.sampleEnd();
    57         if (response != null) {
    58             responseCode = String.valueOf(response.getResponseCode());
    59             responseHeader = response.getResponseHeader().toString();
    60             responseBody = (String) response.getResponseBody();
    61             results.setSuccessful(true);
    62         }
    63         results.setResponseCode(responseCode);
    64         results.setResponseHeaders(responseHeader);
    65         results.setResponseData(responseBody, "UTF-8");
    66         return results;
    67     }
    68 
    69     /**
    70      * 测试结束方法,结束测试中的每个线程
    71      * 实际运行时,每个线程仅执行一次,在测试方法运行结束后执行,类似于Loadrunner中的End方法
    72      */
    73     public void teardownTest(JavaSamplerContext args) {
    74     }
    75 }
  • 相关阅读:
    【Android】Android如何实现手机震动
    【Android】详解Android的menu菜单
    【Smali】Smali文件的动态调试
    【C#】C#项目如何获得项目的根目录
    【Android】Android如何对APK签名
    【Android】Android如何对APK反编译
    【SqlServer】在SqlServer中把数据导入导出为Excel文件
    【C#】解析C#中JSON.NET的使用
    【C#】浅析C#中的日期处理
    TCP与UDP传输协议
  • 原文地址:https://www.cnblogs.com/andrew209/p/9822644.html
Copyright © 2011-2022 走看看