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

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

用戶配置 隨機數 技術分享 修改 單擊 技術 請求協議 時間表 ava

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分別表示接收量和發送量的每秒千字節表示。

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

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