前些天,領導讓我做接口的壓力測試。What??我從未接觸過這方面,什么都不知道,一臉蒙。於是我從學習jmeter開始入手。
現在記錄下來jmeter的使用步驟,希望能對大家有所幫助。
一、安裝Jmeter
1、電腦安裝Java,並配置環境變量,步驟見:鏈接
2、下載Jmeter,解壓到本地。
3、進入/Jmeter/bin,雙擊jmeter,打開軟件。

二、Jmeter工作原理
Jmeter可以作為Web服務器與瀏覽器之間的代理網關,以便捕獲瀏覽器的請求和Web服務器的響應,如此就可以很容易的生成性能測試腳本。有了性能測試腳本,Jmeter就可以通過線程組來模擬真實用戶對Web服務器的訪問壓力。這與LoadRunner的工作原理基本一致。

三、Jmeter操作步驟

1、測試計划
測試計划描述了Jmeter運行時將會執行的一系列步驟。一個完善的測試計划,會包含一個或多個線程組、邏輯控制器、采樣器、監聽器、定時器、斷言和配置元件
2、線程組
線程組是任何測試計划的起點,所有的邏輯控制器和采樣器都必須放在線程組之下。其他的測試元件可以被直接放在測試計划之下,這些測試元件對所有線程組都生效。線程組就像它的名稱所描述的,被用來管理執行性能測試所需的Jmeter線程。用戶通過線程組的控制面板可以:
· 設置線程數量
· 設置線程啟動周期Period
· 設置執行測試腳本的循環次數
· 設置持續時間
· 設置啟動延時時間
· 設置啟動時間和結束時間
參數Ramp-Up Period 告訴Jmeter 達到最大線程數所需的時間。假定共有10個線程,Ramp-Up Period為100秒,那么Jmeter就會在100秒內啟動這10個線程,並讓它們運轉起來。每一個測試線程都會在上一個線程啟動10秒之后才開始運行。
注意 ⚠️:
參數Ramp-Up Period不能設定的太短,否則在測試初始階段會給予服務器過大的壓力。
建議 ⚠️:
初始值可以設定為Ramp-Up Period=總線程數。后續在根據實際情況適當增減。
設定測試運行的“啟動時間”和“結束時間”,測試啟動后會一直等待,直到用戶設定的開始時間。測試運行期間,Jmeter會在每一次循環結束后,檢查是否已經達到結束時間。如果已經達到了結束時間,Jmeter就會終止測試運行,否則Jmeter會繼續下一個測試循環。(如需測試某個時間階段的性能指標,則進行設置該部分。)
注意 ⚠️:
設置“啟動延時”會使“啟動時間”無效,而“持續時間”會使“結束時間”無效。
3、HTTP請求

1)添加HTTP請求默認值
對於當前的測試計划,所有的請求都發往同一個服務器/IP,端口,路徑,Parameters,Body等。可在HTTP請求默認值中設置。
步驟:右擊鼠標-> 添加-> 配置元件-> HTTP請求默認值

2)添加HTTP信息頭管理器
對於當前的測試計划,所有的請求信息頭一致的。可在HTTP請求默認值中設置。
步驟:右擊鼠標-> 添加-> 配置元件-> HTTP信息頭管理器

3)添加HTTP請求
步驟:右擊鼠標-> 添加->Sampler->HTTP請求

添加HTTP請求后,點擊進行編輯,注意⚠️:若已經在HTTP請求默認值中設定了默認值,則此處不需要再次設定服務器名稱/IP。
注意⚠️:若該測試計划,設置多個HTTP請求,則J meter會按照它們在測試樹中出現的順序發送請求。

4、監聽器
1)查看結果樹
步驟:右擊鼠標-> 添加->監聽器->查看結果樹
查看結果樹以樹的方式來展示所有采樣響應結果,測試人員可以通過它來查看任何采樣的響應,除了展示響應結果之外,測試人員還能看到獲取響應所消耗的時間,以及一些響應代碼,需要注意⚠️:Request面板中顯示Jmeter添加的頭部,它不會展示由HTTP協議實現添加的頭部
查看響應由多種方式,用戶可以在左側面板底部的下拉框選擇

2)聚合報告
步驟:右擊鼠標-> 添加->監聽器->聚合報告
聚合報告會為測試中每一個不同采樣在表格中創建一行,針對每一個采樣,它都會統計服務器響應信息,並提供請求數目、Min,Max,Average,Error rate,Throughput(request/second)以及Thoughput(Kilobytes per second)等統計值。

Samples -- 本次場景中一共完成了多少個Transaction
Average -- 系列采樣結果的平均響應時長
Median -- 統計意義上面的響應時間的中間值
90% Line -- 所有transaction中90%的transaction的響應時間都小於xx
95%Line -- 所有transaction中95%的transaction的響應時間都小於xx
99%Line -- 所有transaction中99%的transaction的響應時間都小於xx
Min -- 最小響應時間
Max -- 最大響應時間
Error -- 發生錯誤的比例
Troughput -- 吞吐量,單位:transaction/second
Kb/sec -- 該吞吐量以每秒Kilobytes來衡量
注意⚠️: 響應時間的單位均為ms
5、響應斷言
斷言被用於采樣進行額外的檢查,它會對相同作用域內的每個采樣進行處理,為確保斷言僅用於特定的采樣。可針對主采樣,子采樣,二者同時施加特定的斷言或者JMeter變量選項。
步驟:右擊鼠標-> 添加->斷言>響應斷言
模式字符串包括:
· Contains,Matches --Perl5風格的正則表達式。
· Equals,Substring --純文本,區分大小寫。

四、壓力測試
1)壓力測試分兩種場景:
一種是單場景,壓一個接口的;
第二種是混合場景,多個有關聯的接口。
壓測時間,一般場景都運行10-15分鍾。如果是疲勞測試,可以壓一天或一周,根據實際情況來定。
2)壓測設置:
線程數:並發數量,具體說是一次存在多少用戶同時訪問。可呈遞增狀態添加,並找到最大值。
Rame-Up Period(in seconds):表示JMeter每隔多少秒發動並發。初始值可以設定為Ramp-Up Period=總線程數。后續在根據實際情況適當增減。
循環次數:這個設置不會改變並發數,可以延長並發時間。總請求數=線程數*循環次數
調度器:設置壓測的啟動時間、結束時間、持續時間和啟動延遲時間。
運行網絡:最好設置與服務器在同一網絡,降低因網速問題導致的結果不准確。
3)壓測結果查看:
運行完后,聚合報告會顯示壓測的結果。主要觀察Samples、Average、error、Throughput。
Samples:表示一共發出的請求數
Average:平均響應時間,默認情況下是單個Request的平均響應時間(ms)
Error%:測試出現的錯誤請求數量百分比。若出現錯誤就要看服務端的日志,配合開發查找定位原因
Throughput:簡稱tps,吞吐量,默認情況下表示每秒處理的請求數,也就是指服務器處理能力,tps越高說明服務器處理能力越好。
4)壓測結果的分析
1、壓測結束,登陸相應的web服務器查看CPU等性能指標,進行數據的分析;
2、不斷的增加並發數,加到tps達到一定值開始出現下降,那么那個值就是最大的tps;
3、不斷增加並發數,達到一個值后,服務器不斷出現請求超時,則可認為該值為最大的並發數;
4、確定允許錯誤率的范圍,與當前的錯誤率進行比較;
以上
如果幫到你了,就點個贊吧~~😄