1. 程式人生 > >Jmeter效能測試之進階Java request的使用

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 }