如何高效開發jmeter自定義函數

Jmeter是一款開源的性能測試工具,目前是行業內使用率最高的性能測試工具之一,Jmeter是使用JAVA語言開發的,本文介紹如何使用JAVA語言開發本身須要的擴展函數linux


  • 目前業界流行的兩種開發模式,本文介紹第二種
    一、使用Jmeter二次開源環境,直接在org.apache.jmeter.functions包下面開發本身須要的函數,而後導出該jar包,替換Jmeter目錄的ApacheJMeter_functions.jar文件
    二、直接在Maven 項目下開發自定義函數,而後打包,該方法、簡單、高效

  • 開發思路
    一、使用Eclipse建立Maven 項目,配置Pom文件,引入擴展function所需的依賴包;
    二、建立類,而後繼承AbstractFunction,實現四個主方法;
    三、對編寫好的項目進行編譯、打包
    四、把打包好的函數放到jmeter擴展目錄,調用自定義函數,檢查是否正確;
JDK環境 Jmeter依賴包版本 Maven倉庫版本
1.8 4.0 3.5.3

1、新建Maven項目apache

1.File》New》Project,選擇Maven》Maven Project,一直點擊Next,此處Package包名必定要以.functions格式結束,不然開發出來的函數,Jmeter讀取不到
如何高效開發jmeter自定義函數
如何高效開發jmeter自定義函數
2.配置Pom文件,Pom文件配置的Jmeter4.0版本,只要保存了Pom文件,系統就會自動下載和關聯相應的jar包,Pom配置文件以下:
如何高效開發jmeter自定義函數
3.保存Pom文件以後,系統會自動下載關聯的依賴文件,以下圖:
如何高效開發jmeter自定義函數
如何高效開發jmeter自定義函數
4.此時,因爲對pom文件進行了修改,項目頂層會出現一把×,而且編譯可能就會報錯,須要執行Maven》Update Project更新外部依賴的Jar包windows

  • 更新前:
    如何高效開發jmeter自定義函數
    如何高效開發jmeter自定義函數
  • 更新後,編譯、打包正常:
    如何高效開發jmeter自定義函數
    2、編寫自定義函數代碼
  • 要實現擴展Jmeter function,主要有兩點
    1.1. 實現function的類的package聲明必須包含".functions"

    JMeter設計讓一些核心的類能夠在非UI的方式下運行的時候能被加載進來,這些類會被優先加載。加載這些類的時候是經過命名規則來實現的。全部實現function的類必需包含".functions",因此咱們自定義實現的類裏必須包含".functions",好比以下申明的包名爲:"jmeter.test.functions"微信

如何高效開發jmeter自定義函數
1.2. 首先在Jmeter.test.functions包下建立一個類,類名稱爲Save_Variable,須要繼承AbstractFunction類,而後實現父類的四個方法ide

如何高效開發jmeter自定義函數

  • 這裏主要是定義變量desc、KEY 而後將描述顯示到函數的參數描述中,以下圖
    如何高效開發jmeter自定義函數

如何高效開發jmeter自定義函數

  • setParameters函數做用就是獲取函數輸入框界面輸入的值,將輸入的值傳遞給execute

如何高效開發jmeter自定義函數

  • getReferenceKey函數是提供一個在Jmeter函數助手顯示的函數名稱
    如何高效開發jmeter自定義函數
  • getArgumentDesc函數用來獲取對輸入參數的描述
    如何高效開發jmeter自定義函數函數

  • execute函數用來實現獲取輸入的參數,而後經過對參數作須要的處理,該函數是開發中最重要的模塊,而且進行最後執行,本次案例中主要實現的功能就是保存jmeter中傳入的變量
    3、編譯、打包
    1. 編寫代碼完成,就能夠進行編譯、打包操做了,右鍵點擊項目》Run As》Maven build
      如何高效開發jmeter自定義函數
    2. 在Goals中輸入package,而後點擊Apply》Run執行編譯,打包操做
      如何高效開發jmeter自定義函數
    3. 編譯打包完成,在target目錄會生成一個jar包,以下圖所示
      如何高效開發jmeter自定義函數
      如何高效開發jmeter自定義函數

4、驗證開發的函數是否正常工具

  1. 首先把Jmeter.test.functions函數放到jmeter的\lib\ext目錄
    如何高效開發jmeter自定義函數
  2. 而後啓動jmeter,進入選項》函數助手對話框,選擇 _Media_Save_Variable,輸入要保存的變量文件名,和變量值,點擊生成按鈕(點了生成,系統就會生成一個函數,而後就至關於作了複製功能,能夠拷貝到須要調用的地方),本次之內部函數${time(yyyy-MM-dd)}和${counter(false,i)}進行測試
    如何高效開發jmeter自定義函數
  3. 使用一個sample調用該函數,以下所示
    如何高效開發jmeter自定義函數
    也可使用後置處理器調用
    如何高效開發jmeter自定義函數性能

  4. 本次設置2線程,5循環,點擊執行按鈕,執行結果以下:
    如何高效開發jmeter自定義函數
    如何高效開發jmeter自定義函數
  5. 本次執行腳本的目錄爲script下,因此會在相同層級目錄的data中生成
    如何高效開發jmeter自定義函數測試

    • 函數功能介紹
      一、本次開發的函數實現的效果爲經過傳兩個變量,一個是文件名(用來保存參數),一個是變量(能夠傳入多個參數),自動保存獲取的變量
      二、根據你執行腳本的路徑,若是是在script下執行,就會在上一個層級的data目錄(無則自動生成該目錄)保存該變量,若是是在其它目錄執行腳本,則會在執行目錄下的data目錄(無則自動生成該目錄)保存該變量,變量文件夾也是會自動建立,若是已經存在該文件,則會自動追加變量到該文件
      三、實現變量值篩選,若是獲取的變量有一個爲空值,也不會保存該次獲取的其它變量
      四、windows和linux環境均可用
      五、性能測試過程當中,常常有需求想要大批量保存獲取的變量,而且是關聯的變量,須要實現多個變量保存在同一行csv,方便其它案例調用,目前jmeter內置函數沒有該功能,本次開發的函數就能實現該需求
      Jmeter.test.functions.jar下載方法見文章末尾介紹

    完整源碼以下:ui

如何高效開發jmeter自定義函數

  • 踩坑記錄
    1. 開發一個新的自定義函數,調用函數報錯以下,報錯信息是提示訪問了未定義的變量或者類名
      如何高效開發jmeter自定義函數
      通過排查,發現是本次傳入了三個參數,可是setParameters中定義的最大參數個數仍是2,因此致使報錯,修改該方法便可,以下
      如何高效開發jmeter自定義函數
      如何高效開發jmeter自定義函數

   若是文章對你有幫助,能夠在右下角點擊關注功能,歡迎轉發、拍磚,本人會持續推出與測試有關的文章,與你們分享測試技術,每一篇原創文章都是用心編寫,杜絕抄襲複製,微信公衆號與本平臺文章同步,方便你們查閱


QQ技術交流羣:加羣請輸入驗證信息51CTO
              如何高效開發jmeter自定義函數


微信二維碼關注公衆號:

            如何高效開發jmeter自定義函數


關注以後,回覆資源下載,便可獲取本人共享的各類資源下載地址

如何高效開發jmeter自定義函數

相關文章
相關標籤/搜索