1. 程式人生 > >壓測JMeter---3、JMeter的元件---》3.3取樣器---》3.3.3 Java Request Sampler

壓測JMeter---3、JMeter的元件---》3.3取樣器---》3.3.3 Java Request Sampler

3.3.3 Java Request Sampler

      用以傳送Java請求,測試Java程式,需要基於JMeter測試框架編寫測試用例。

編寫測試用例步驟如下:

      1 . 新建一個普通的Java工程

      2 . 新增JMeter的包引用jar包位於JMeter安裝目錄/lib/ext下,一般要ApacheJMeter_core.jar和ApacheJMeter_java.jar這兩個jar依賴,將這兩個jar拷貝到專案的lib中。

      3 . 新建一個Java Class,並繼承“AbstractJavaSamplerClinent”,AbstractJavaSamplerClinent中預設實現了四個可以覆蓋的方法,分別是“getDefaultParameters”,“setupTest”,“runTest”和“teardownTest”方法。

            getDefaultParameters 方法主要用於設定傳入介面的引數;

            setupTest 方法為初始化方法,用於在執行測試前的一些初始化工作;

            runTest 方法為效能測試時的執行緒執行主體,執行的業務都放在該方法中;

            teardownTest 方法為測試結束方法,可以用來進行一些資源釋放工作;

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;

public class Test extends AbstractJavaSamplerClient{

	/**
	 * JMeter介面中展示出此方法所設定的預設引數
	 */
	@Override
	public Arguments getDefaultParameters(){
		Arguments  args = new Arguments();
		//args.addArgument(name, value);
		args.addArgument("userName", "admin");
		args.addArgument("password", "111111");
		return args;
	}
	
	/**
	 * 執行runTest()方法前會呼叫此方法,可以用來進行一些初始化工作
	 */
	@Override
	public void setupTest(JavaSamplerContext context){
		super.setupTest(context);
	}
	
	/**
	 * 執行runTest()方法後會呼叫此方法,可以用來進行一些資源釋放工作
	 */
	@Override
	public void teardownTest(JavaSamplerContext context){
		super.teardownTest(context);
	}
	
	/**
	 * 效能測試時的執行緒執行主體,執行的業務方法放在這裡
	 */
	@Override
	public SampleResult runTest(JavaSamplerContext context) {
		
		//建立SampleResult物件,用於記錄執行結果的狀態並返回
		SampleResult sampleResult = new SampleResult();
		
		//獲取JMeter中輸入的引數
		String userName = context.getParameter("userName");
		String password = context.getParameter("password");
		
		//開始// jmeter 開始統計響應時間標記
		sampleResult.sampleStart();
		
		
		//測試具體的程式碼Start
		boolean successfulFlag = true;//測試結果
		try{
			
			/* 
			 * 注意點:
			 * 		需要測試程式碼,若需要用到單獨jar包,需要把程式碼中用到的jar包貼上到JMeter安裝目錄/lib/ext下
			 * 
			 */
			
		} catch (Exception e) {
			e.printStackTrace();
			successfulFlag = false;
		}
		//測試具體的程式碼End
		
		//結束// jmeter 結束統計響應時間標記
		sampleResult.sampleEnd();
		
		
		sampleResult.setSuccessful(successfulFlag);//設定本次測試結果為true

		/*
			public void setResponseData(java.lang.String response, java.lang.String encoding)
				Sets the encoding and responseData attributes of the SampleResult object.
							設定SampleResult物件的編碼和響應資料屬性。
				Parameters:
				response - the new responseData value (String)
							響應-新的響應資料值(字串)
				encoding - the encoding to set and then use (if null, use platform default)
							編碼-編碼設定,然後使用(如果NULL,使用平臺預設)
		*/
		sampleResult.setResponseData("響應:userName" + userName + "-resp:成功;password"+ password + "-resp:成功", null);
		
		return sampleResult;
	}
	
}

      4 . 程式碼編寫完畢後,將Test類的程式碼打成jar包,然後拷貝到JMeter的安裝目錄\lib\ext下,然後啟動JMeter即能在Java請求面板的下拉列表中看到剛才編寫的Java類;注:若這步看不懂,繼續下面的操作,到JMeter新增Java請求取樣器視窗可以明白;

1)建立測試計劃:

      一個測試都以一個測試計劃開始的,開啟JMeter預設就有一個測試計劃;

2)新增執行緒組:

      右鍵測試計劃,新增--->執行緒(使用者)--->執行緒組/Add--->Threads(Users)--->Thread Group

3)新增取樣器(Sampler):

      右鍵執行緒組,新增--->取樣器--->Java請求

            名稱:Java請求的名稱

            註釋:可以寫該Java請求進行的具體測試操作

            類名稱:上面寫的測試用例的類

            userName/password:測試用例中的引數

4)新增監聽器:(呼叫介面的詳細情況展示)

      右鍵執行緒組,新增--->監聽器--->察看結果樹/Add--->Listener--->View Results Tree

6)執行測試:

      點選選單 執行->啟動/Run--->Start

希望對你有幫助,祝你有一個好心情,加油!

若有錯誤、不全、可優化的點,歡迎糾正與補充!