Java請求:就是用來對java項目的類進行壓測
例子:將輸入的兩個參數通過IO存入文件
1、創建Java工程,工程目錄如下
2、將Jmeter-lib下面的所有jar包導入java工程,
3、創建一個測試類並實現JavaSamplerClient接口或繼承AbstractJavaSamplerClient,並重寫:
- public Arguments getDefaultParameters():設置可用參數及的默認值;
- public void setupTest(JavaSamplerContext arg0):每個線程測試前執行一次,做一些初始化工作;
- public SampleResult runTest(JavaSamplerContext arg0):開始測試,從arg0參數可以獲得參數值;
- public void teardownTest(JavaSamplerContext arg0):測試結束時調用;
具體代碼:
輸入參數類:
1 package com.test; 2 3 import java.io.File; 4 import java.io.PrintWriter; 5 6 /** 7 * Created by Administrator on 2017/4/20. 8 */ 9 public class OutputService { 10 public static void output(String filename,int a,int b,int c) throws Exception{ 11 PrintWriter out=new PrintWriter(new File(filename)); 12 out.write(a+":"+b+":"+c); 13 out.close(); 14 } 15 }
測試類
1 package com.test; 2 3 import org.apache.jmeter.config.Arguments; 4 import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient; 5 import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; 6 import org.apache.jmeter.samplers.SampleResult; 7 8 /** 9 * Created by Administrator on 2017/4/20. 10 */ 11 public class PerformenceTest implements JavaSamplerClient { 12 private SampleResult results; 13 private String a; 14 private String b; 15 private String c; 16 private String filename; 17 18 public static void main(String[] args) { 19 // TODO Auto-generated method stub 20 Arguments params = new Arguments(); 21 params.addArgument("filename","0"); 22 params.addArgument("a", "0");//設置參數,並賦予默認值0 23 params.addArgument("b", "0");//設置參數,並賦予默認值0 24 params.addArgument("c", "0"); 25 JavaSamplerContext arg0 = new JavaSamplerContext(params); 26 PerformenceTest test = new PerformenceTest(); 27 test.setupTest(arg0); 28 test.runTest(arg0); 29 test.teardownTest(arg0); 30 } 31 // 設置傳入的參數,可以設置多個,已設置的參數會顯示到Jmeter的參數列表中 32 public Arguments getDefaultParameters() { 33 Arguments params = new Arguments(); 34 params.addArgument("filename", "0");//設置參數,並賦予默認值0 35 params.addArgument("a", "0");//設置參數,並賦予默認值0 36 params.addArgument("b", "0");//設置參數,並賦予默認值0 37 params.addArgument("c","0"); 38 return params; 39 } 40 41 42 // 初始化方法,實際運行時每個線程僅執行一次,在測試方法運行前執行 43 public void setupTest(JavaSamplerContext arg0) { 44 results = new SampleResult(); 45 } 46 47 48 // 測試執行的循環體,根據線程數和循環次數的不同可執行多次 49 @Override 50 public SampleResult runTest(JavaSamplerContext arg0) { 51 a = arg0.getParameter("a"); // 獲取在Jmeter中設置的參數值 52 b = arg0.getParameter("b"); // 獲取在Jmeter中設置的參數值 53 c = arg0.getParameter("c"); 54 filename = arg0.getParameter("filename"); // 獲取在Jmeter中設置的參數值 55 results.sampleStart();// jmeter 開始統計響應時間標記 56 try { 57 OutputService test = new OutputService(); 58 test.output(filename,Integer.parseInt(a), Integer.parseInt(b),Integer.parseInt(c)); 59 results.setSuccessful(true); 60 // 被測對象調用 61 } catch (Throwable e) { 62 results.setSuccessful(false); 63 e.printStackTrace(); 64 } finally { 65 results.sampleEnd();// jmeter 結束統計響應時間標記 66 } 67 return results; 68 } 69 70 71 // 結束方法,實際運行時每個線程僅執行一次,在測試方法運行結束后執行 72 public void teardownTest(JavaSamplerContext arg0) { 73 } 74 75 }
4、把該工程以jar包形式導出,選擇File—Project Structure,如圖所示,配置完成,點擊應用:
然后,選擇Build,打開剛才配置的jar包路徑,就看到導出的jar包
5、然后把導出的jar包復制到Jmeter的lib\ext目錄下,重啟Jmeter
6、打開測試計划,添加線程組--Java請求,選擇測試類,會自動加載出類中的參數,如圖
給參數賦值
執行壓測,並發數設為1000,運行結果如圖所示
聚合報告
表格察看結果
圖形結果
生成的文件