JMeter簡單的使用(3.0+)-效能測試(壓力)
JMeter簡單的效能測試使用介紹
工作需要,寫了一份JMeter簡單使用的文件,刪改部分工作相關的圖,應該沒大影響。
下載JMeter
下載原始Jmeter檔案
最新的3.1的下載地址如下
Windows下:
Linux下:
安裝必要外掛jmeter-plugins(windows下)
下載外掛管理器
開啟GUI模式下的jmeter下載所需外掛
選擇選單欄中的“選項”,選擇“Plugings Manager”,如圖
選擇所需外掛安裝
開啟外掛管理器後選擇Available Plugings,勾選3 Basic Graph 以及Custom Thread Groups,點選Apply Changes and Restart JMeter,等待下載完成重啟JMeter即可。
安裝必要外掛jmeter-plugins(Linux下)
查詢並複製jar包
在windows的介面下,安裝好外掛後,根據上圖的Review Changes中的資訊,在{jmeter}/bin/lib/ext中找到新增jar包,複製到linux上。
使用JMeter測試
GUI模式下測試介面
新增執行緒組
在GUI模式,開啟JMeter。右鍵點選“測試計劃”,選擇“新增”→“Threads(Users)”→“執行緒組”,如圖所示:
新增HTTP請求
執行緒組屬性不做修改,右鍵點選新新增的“執行緒組”,選擇“新增”→“Sampler”→“HTTP請求”,如圖所示:
完成HTTP請求
根據請求資訊,完成“HTTP請求”:修改名稱;注意IP和埠號,在路徑欄補齊除ip埠號的剩餘路徑;Implementation使用httpClient4;使用https的協議需要在協議欄填寫https;選擇請求的方法,多數為POST或這GET;若請求體中含有中文,最好在content encoding中填寫utf-8;請求引數可以選擇Parameters或者Body Data,Parameters的引數更加直觀,Body Data的更加方便引數修改且引數以parameter1=value1&mmeter2=value2形式。
新增檢視結果數
右鍵點選“HTTP請求”,選擇“新增”→“監聽器”→“檢視結果樹”,如圖所示:
新增證書檔案
協議為Https的請求還需要載入證書,如果為https協議,在沒有載入證書的情況下,進行了測試,最好儲存測試計劃,然後重啟JMeter,重啟後先載入證書,再進行測試,否則,報錯。選擇“選項”→“SSL管理器”,如圖所示:
選擇pkcs12的證書檔案
使用pkcs12的證書檔案,jks直接用是不行的,需要java打包下
啟動測試
點選“啟動”按鈕,啟動測試,如圖所示
輸入pcks12的密碼
啟動測試後,彈出“KeyStore Password”,輸入pcks12生成時用的密碼。
測試後檢視結果樹
測試結束後,點選“檢視結果樹”,可以看到當前測試運行了一個例項,選中該結果,點選“響應資料”檢視響應的文字,檢查文字是否為正確的響應資料,JMeter會把所有響應碼200的回覆都當成成功,一些服務例如查詢等,可能會設定查詢失敗下返回提示語句但響應碼依舊是200。此時需要檢視響應文字中正確響應的關鍵詞,方便壓測時設定響應斷言。
GUI模式下建立壓力測試計劃
新增Concurrency Thread Group
可以新建一個測試計劃,也可以在原先介面測試的測試計劃上修改。本例直接修改原先的介面測試,右鍵“測試計劃”,選擇擇“新增”→“Threads(Users)”→“Concurrency Thread Group”,如圖所示:
設定Concurrency Thread Group
根據需求完成執行緒組的設定,需要填寫“Target Concurrency”,為壓力測試預期的併發壓力(注意Jmeter採用執行緒模擬併發的策略,大併發意味著大量執行緒,測試機效能會大量消耗,甚至影響測試結果,所以需要大併發的情況下,建議採用分散式部署Jmeter進行測試);“Ramp Up Time”,為測試併發數啟動所需時間(注意測試並不是所有併發啟動後才執行,在啟動過程中,先啟動的執行緒會先執行請求);“Ramp Up Steps Counts”,為是否將啟動執行緒分階段的啟動,例如10即為分10次階段性的啟動一部分執行緒,可以為空;“Hold Target Rate Time”,為併發達到要求後再執行多久時間;“Time Unit”,時間單位,非常重要,有分和秒,不要選擇錯誤。
新增Http請求
直接複製之前介面測試時的http請求,刪去檢視結果樹即可。
新增聚合報告
右鍵http請求,選擇“新增”→“監聽器”→“聚合報告”。如圖所示
聚合報告中儲存測試資料
在聚合報告的“檔名”欄,填入./*-${__time(yyyyMMdd-HHmmss,)}.jtl,表示在當前目錄生成jtl(jmeter的資料檔案格式),${__time(yyyyMMdd-HHmmss,)}為jmeter的時間函式,生成測試的年月日分鐘秒,方便後期管理測試資料。
新增響應斷言
右鍵http請求,選擇“新增”→“斷言”→“響應斷言”,如圖所示:
配置響應斷言
不同請求配置不同的斷言。根據之前的介面測試,點選新增,輸入判斷文字,不同模式匹配規則,自行百度
儲存測試計劃
刪除介面測試的執行緒組,點選“檔案”,選擇“儲存測試計劃為”,儲存測試計劃。壓測計劃建立完成。注意3.1版本“儲存測試計劃為”下面是“選中部分儲存為”,舊版就是“儲存為”,會儲存選中的部分,然後實際測試的時候因為測試計劃不完整是沒法跑測試的,會報Error in NonGUIDriver java.lang.RuntimeException: Could not find the TestPlan class!,這雷舊版很容易踩上。
NO-GUI模式下啟動壓力測試
Windows下
開啟cmd,目錄切換到測試計劃(jmx)所在的目錄,證書放在同一目錄下,輸入{jmeter}/bin/jmeter -Djavax.net.ssl.keyStore=*.pkcs12 -Djavax.net.ssl.keyStorePassword=* -n -t *.jmx
{jmeter}為jmeter的安裝目錄
-Djavax.net.ssl.keyStore=**.pkcs12 是證書檔案
-Djavax.net.ssl.keyStorePassword=** 是證書檔案生成時的密碼
-n 為nogui模式
-t 後面為測試計劃檔案(jmx)
linux下(推薦)
目錄切換到測試計劃(jmx)所在的目錄,證書放在同一目錄下,輸入{jmeter}/bin/jmeter -Djavax.net.ssl.keyStore=*.pkcs12 -Djavax.net.ssl.keyStorePassword=* -n -t .jmx |tee -a .out
{jmeter}為jmeter的安裝目錄
-Djavax.net.ssl.keyStore=**.pkcs12 是證書檔案
-Djavax.net.ssl.keyStorePassword=** 是證書檔案生成時的密碼
-n 為nogui模式
-t 後面為測試計劃檔案(jmx)
tee -a 引數後為文字檔案,用於儲存測試時輸出summarize資料
若是為http的,Djavax.net.ssl.keyStore=*.pkcs12 -Djavax.net.ssl.keyStorePassword=* 直接省去
使用JMeter檢視資料
在GUI模式下
選擇報表
開啟Jmeter,右擊測試計劃,選擇“新增”→“監聽器”→“聚合報告”;“新增”→“監聽器”→“Response Times Over Time”;“新增”→“監聽器”→“Transactions per Second”(有其他圖表需要可以自行下載外掛安裝),如圖所示:
載入資料
選擇聚合報告,點選檔名欄後的瀏覽,選擇jtl檔案,載入資料(其餘監聽器類似),如圖所示:
其他:
http會產生cookie的,需要刪除或者其他操作的,需要新增cookie管理器。
預設jtl資料不儲存響應文字,需要儲存錯誤檔案的資訊,可以新增監聽器中的儲存響應到檔案,勾選Save Failed Responses only(不推薦有較多錯誤的情況去儲存文字,容易卡住)。
Bin目錄下有個templates資料夾,裡面有些JMeter用法的例子,可以看看。
NOGUI模式下可以使用jmeter -g result.jtl -o ./ResultReport生成一個html的報表(3.0版本以上)