1. 程式人生 > >效能測試工具——Jmeter使用小結(一)

效能測試工具——Jmeter使用小結(一)

    Apache Jmeter是針對Java的一款效能測試工具,利用該工具可以實現自動化的批量測試和結果聚合,適合做介面壓測。今天就來捋一捋軟體安裝的一些小細節和使用。

一、安裝

    Jmeter基於JDK,安裝之前確保Java環境變數配置無誤。在官網下載最新版本解壓後,配置環境變數 JMETER_HOME 為安裝目錄並將 %JMETER_HOME%\bin 新增到Path中。啟動安裝目錄下/bin/jmeter.bat,稍作等待彈出GUI視窗表明安裝成功。需要注意命令列視窗和圖形介面關閉任意一個另一個都會關閉。

    在命令列視窗中會有一段提示:

======================================================================================================
Don't use GUI mode for load testing !, only for Test creation and Test debugging.
For load testing, use NON GUI Mode:
   jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
& increase Java Heap to meet your test requirements: Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file Check : https://jmeter.apache.org/usermanual/best-practices.html ======================================================================================================

    這一段指的是僅建議用GUI介面進行指令碼的建立和測試,如果要執行實際測試,使用命令列執行測試指令碼,或編輯jmeter.bat,修改java堆大小相關的引數來滿足測試需求。

    預設的jmeter GUI使用英語,修改jmeter.properties中 language=zh-CN 可以預設以簡體中文啟動。

    為了方便測試,右鍵點選jmeter.bat-->傳送到桌面快捷方式-->右鍵快捷方式選擇屬性-->將目標設定為安裝目錄\bin\ApacheJMeter.jar,起始位置安裝目錄\bin,即可建立GUI快捷方式。

二、測試

    這裡我主要是對介面做壓力測試,記錄一下過程中遇到的坑和結果分析。

    首先建立自己的測試計劃。預設的測試計劃顏色可能是灰色,此時為禁用狀態,右鍵單擊啟用否則測試時報錯  Error processing org.apache.jmeter.gui.action.Start 。啟用後新增執行緒組,可以配置需要的執行緒數以及單個執行緒的迴圈執行次數,以及執行緒啟動時間Ramp-Up時間。這個時間表示啟動全部執行緒所用時間,為0時表示執行緒併發,否則執行緒將以T/N的時間間隔(T為改時間,N為總個數)啟動。

    接下來是新增具體的任務。這裡我新增HTTP請求,填寫請求協議、IP、埠號等資訊,新增需要的引數值。為了模擬真實情況,請求的引數一般不完全相同,配置方法一般有三種。

  • 使用者配置變數:右鍵HTTP請求——新增——配置元件——使用者定義的變數,在引數呼叫處使用${變數名}呼叫引數。
  • 函式生成器:選項中的函式助手對話方塊(或Ctrl+Shift+F1)可以呼叫Jmeter提供的函式,常用函式之一是_Random,可以生成範圍內隨機整數。單純需要隨機變數可以新增——配置原件——隨機變數,可以對輸出格式和隨機數種子進行設定。
  • 檔案讀取:新增——配置元件——CSV資料檔案設定,可以將變數儲存在CSV表格中,每個變數儲存為一列,從檔案中按行讀取變數並且可以設定迴圈讀取檔案直至滿足任務需求。

    完成任務配置後,新增結果監聽器。檢視結果樹可以對每個執行緒單詞呼叫結果進行檢視,包括請求內容和返回結果,適合進行測試計劃的驗證;對於壓力測試等更多考慮統計性指標的測試,新增聚合報告來檢視效能指標。

    上圖中Label表示請求名,#Samples表示請求次數(執行緒數*迴圈次數),Average為平均響應時間,Median、90%Line、95%Line、99%Line分別為對應比例的樣本的最長響應時間,Min/Max為總體最小值/最大值,Error%為錯誤率,Throughput為吞吐量,這裡表示為每秒完成的請求數量;Received KB/sec和Sent KB/sec分別表示接收量和傳送量的每秒千位元組表示。

    本次測試的是業務在高併發場景下的執行效能,更側重於承受上限和平均響應時長,因此沒有用到斷言。如果有必要,可以新增斷言來判斷是否獲取了期望結果,具體用法等下次實際使用後再做總結。