jmeter 使用java 請求


實際過程中采用Jmeter壓測Http接口比較多,但當有些請求邏輯比較復雜的時候,Jmeter 中自帶的sample比較難實現,或者是實際工作中也可能會遇見一些無法通過http 來實現的,比如通過SDK來獲取token,然后拿token再去請求其他的接口等等,就需要借助java request來實現邏輯。

Jmeter自帶的java request defaults(包含 java test 和 Sleep test 2個)

 

 

 

下面來看下創建自己需要的Java Request 的步驟:

1. 創建Java 工程

2. 引入JMeter在lib目錄和lib\ext 目錄下的jar包:

  ApacheJMeter_core.jar

  ApacheJMeter_java.jar

  avalon-framework-4.1.4.jar

  jorphan.jar

  logkit-2.0.jar

     -------------------------------------------------------------------

  import org.apache.jmeter.config.Arguments; //請求參數

  import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient; //請求基類

  import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; //請求上下文,可以理解為Jmeter傳過來的內容

  import org.apache.jmeter.samplers.SampleResult;//請求結果

3. 創建一個類並實現javaSamplerClient 接口或繼承AbstractJavaSamplerClient,並重寫:

  public Arguments getDefaultParameters():設置可用參數及默認值;

  public void setupTest(JavaSamplerContext arg0):每個線程測試前執行一次,做一些初始化工作;

  public SampleResult runTest(JavaSamplerContest arg0):開始測試,從arg0參數可以獲得參數值;

  public void teardownTest(JavaSamplerContest arg0):測試結束時調用;

  ( 調用順序: getDefaultParameters——> setupTest——> runTest ——> teardownTest )

4. 導出jar包到 {JMETER_HOME}\lib\ext目錄中。

5. 重啟JMeter界面

6. 新增java請求,選擇需要的類名稱,填寫參數。

7. 設置線程組、結果樹、進行測試。

 

舉例:新建一個隨機生成中文姓名的Java請求

1. 創建類 TestDemo, 繼承自AbstractJavaSamplerClient

  public class TestDemo extends AbstractJavaSamplerClient;

2. getDefaultParameters: 默認參數設置,將顯示在JMeter界面。

  public Arguments getDefaultParameters(){

    Argument args = new Arguments();

    args.addArgument(name:"name_count", value:"2"); //設置參數name_count,並賦予默認值2

    args.addArgument(name:"name_count", value:"3"); 

    args.addArgument(name:"all_random", value:"true");

    args.addArgument(name:"last_name", value:"張");

    return args;

  }

3. setupTest:初始化的操作,比如將參數復制給變量。

  public void setupTest(JavaSamplerContest JavaSamplerContest){

    this.labeName = JavaSamplerContest.getParameter( "TestElement");

    this.nameCount = JavaSamplerContest.getIntParament("name_count");

    this.nameLength = JavaSamplerContest.getIntParameter("name_length");

    this.allRandom = Boolean.valueOf(JavaSamplerContest,getOaraneter("all_random");

    this.lastName = javaSamplerContext.getParameter("last_name");

  }

4. runTest: 邏輯主體 

(sampleStart和sampleEnd作為統計事務的開始和結束。 setSuccessful 可以設置事務的成功失敗。)

  public SampleResult runTest(JavaSamplerContext javaSamplerContext) {

    SampleResult results = new SampleResult();

     try{

      results.sampleStart(); //統計時間開始標志

      List<String> names = CreateName.GetName(nameCount, nameLength, allRandom, lastName);

      //正常

      results.setResponseDate(names.toString(),"UTF-8");

      results.setDataType(SampleResult.TEXT);

      results.setSuccessful(true);

    } catch (Throwable e) {

      //有異常

      results.setSuccessful(false);

      results.setResponseMessae(e.toString());

    } finally {

      results.sampleEnd();// jmeter 統計時間結束標記

    }

    return resules;

  }  

5. teardownTest:結束時的操作

   public void teardownTest(JavaSamplerContext JavaSamplerContext) {

  }

6. 導出jar包:TestDemo.jar, 放入 {JMETER_HOME}\lib\ext目錄中.

7. 重啟Jmeter, 新創建 java request,名稱處可選擇到TestDemo


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM