jmeter 二次開發


基於jmeter的java請求的二次開發

 

常用的方法:

①、addArgument("name", "value")    定義參數

②、sampleStart()    定義事務的開始,類似於LR的lr_start_transaction,和LR一樣事務間不要放無關代碼

③、sampleEnd()    定義事務的結束,類似於LR的lr_end_transaction

④、setSuccessful(true、false)    設置運行結果的成功或失敗,Jmeter統計成功失敗的次數,在聚合報告中能夠體現。

 

二、實例介紹:

1、操作步驟:

◆ 用idea新建一個普通的java項目

◆ 引入jmeter的lib目錄下的所有的jar包

◆ 編寫測試類

◆ 測試類測試通過后,把項目導出為jar包放到 jmeter lib/ext目錄下

◆ 啟動jmeter,新建java請求,選擇你編寫的測試類,編寫jmeter的測試用例

2、idea新建項目: file->new project->選擇sdk->java ee

3、引入jmeterlib下的jar包:File –> Project Structure–> Modules->Dependencies -> + 選擇Library 選擇對應的jmeter目錄下的lib

4、編寫測試類

待測試的類

public class SercertGenerate {
 
 
  public   String generate(String[] args) {
    String key = args[0];
    String secret = args[1];
    String method = args[2];
    String path = args[3];
    String gmtDate = getGMTDate();
 
      System.out.println(gmtDate);
    String signStr = "date: " + gmtDate + "\n" + method + " " + path + " HTTP/1.1";
  
    return signStr;  
  }
 
  public  String  getGMTDate() {
    DateFormat dateFormat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss 'GMT'", Locale.US);
    dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
    return dateFormat.format(Calendar.getInstance().getTime());
  }
 
 
 
 
 
 
//  public static void main(String[] args) {
//
//   String[] strarray = {"7930665351","31d5b2fa00c64b25b6db60434e51ecd3","GET","/test?test=1"};
//   System.out.println(generate(strarray));
//
//
//
//  }
}

 

測試類

import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.config.Arguments;
 
public class SercertGenerateTest extends AbstractJavaSamplerClient {
 
    private String key;
    private String secret;
    private String method;
    private String path;
    private String gmtDate;
 
    private String resultData;
 
 
    /*
     * 通過getDefaultParameters()可以來定義入參
     *
     * */
    public Arguments getDefaultParameters() {
        //定義屬性對象,用來添加GUI參數
        Arguments params = new Arguments();
        params.addArgument("key", "");
        params.addArgument("secret", "");
        params.addArgument("method", "");
        params.addArgument("path", "");
        return params;
    }
 
    //每個線程測試前執行一次,做一些初始化工作;
    public void setupTest(JavaSamplerContext arg0) {
    }
 
    //開始測試,從arg0參數可以獲得參數值;
    public SampleResult runTest(JavaSamplerContext arg0) {
        key = arg0.getParameter("key");
        secret = arg0.getParameter("secret");
        method = arg0.getParameter("method");
        path = arg0.getParameter("path");
        SampleResult sr = new SampleResult();
        sr.setSampleLabel("Java request");
        try {
            sr.sampleStart();// jmeter 開始統計響應時間標記
            SercertGenerate sercertGenerate = new SercertGenerate();
            // 通過下面的操作就可以將被測方法的響應輸出到Jmeter的察看結果樹中的響應數據里面了。
            gmtDate = sercertGenerate.getGMTDate();
 
            String[] strarray = {key,secret,method,path};
            resultData = sercertGenerate.generate(strarray);
 
            if (resultData != null && gmtDate != null) {
                sr.setResponseData("日期結果是:" + gmtDate + "加密結果是:" + resultData, null);
                sr.setDataType(SampleResult.TEXT);
 
            }
             System.out.println(resultData);
 
            sr.setSuccessful(true);
        } catch (Throwable e) {
            sr.setSuccessful(false);
            e.printStackTrace();
        } finally {
            sr.sampleEnd();// jmeter 結束統計響應時間標記
        }
        return sr;
    }
 
    //測試結束時調用;
    public void teardownTest(JavaSamplerContext arg0) {
        // System.out.println(end);
        // System.out.println("The cost is"+(end-start)/1000);
    }
 
    public static void main(String[] args)
    { // 測試測試類是否有問題,打包的時候需要注釋掉
        Arguments params = new Arguments();
        params.addArgument("key", "7930665351");
        params.addArgument("secret", "31d5b2fa00c64b25b6db60434e51ecd3");
        params.addArgument("method", "GET");
        params.addArgument("path", "/test?test=1");
        JavaSamplerContext arg0 = new JavaSamplerContext(params);
        SercertGenerateTest test = new SercertGenerateTest();
        test.setupTest(arg0);
        test.runTest(arg0);
        test.teardownTest(arg0);
    }
 
 
}

 


5、idea導出jar包:File > Project Structure > Artifacts + > JAR > Empty 選擇你的項目源文件的模塊(注意:這里不是選擇的web這個模塊)  Build > Build Artifacts... > sampleName > Build/Rebuild

6、jar包放到jmeter的lib/ext目錄后,啟動jmeter,新建java請求

 


原文:https://blog.csdn.net/haiweizhourong/article/details/82153991


免責聲明!

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



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