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+"\n"+method+"\n"+header+"\n"+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 }

猜你喜欢

转载自www.cnblogs.com/andrew209/p/9822644.html