壓測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
希望對你有幫助,祝你有一個好心情,加油!
若有錯誤、不全、可優化的點,歡迎糾正與補充!