JMeter & JDK 下載、安裝、配置(windows 10)
1. 啓動
- 打開JMeter文件夾,bin文件→jmeter.bat(Windows執行文件)文件,就可以啓動jmeter了
- tips:爲了後續使用方便,可右擊jmeter.bat,發送桌面快捷方式
2. 新建測試計劃(test plan)
-
測試計劃(test plan):描述一個性能測試,包含本次測試所有相關功能
-
啓動JMeter,默認有一個測試計劃,修改測試計劃名稱,儘量使其變得有意義,容易看懂
3. 新建一個線程組 threads(users)
-
右擊測試計劃 - Add - Threads - Thread Group
-
線程數設置爲1,方便演示
-
Setup thread group:
一種特殊類型的線程,可用於執行預測試操作。即執行測試前進行定期線程組的執行 -
Teardown thread group:
一種特殊類型的線程,可用於執行測試後動作。即執行測試結束後執行定期的線程組 -
以上兩個線程組,舉個例子:loadrunner的腳本除了action裏是真正的腳本核心內容,還有初始化“環境”的初始化腳本和測試完畢後對應的清除信息的腳本塊,與其對應
-
Thread group:
通常添加使用的線程,一般一個線程組可看做一個虛擬用戶組,其中每個線程爲一個虛擬用戶
4. 添加http信息頭管理器
- 右擊線程組 - Add - Config Element - HTTP Header Manager
- http信息頭管理器添加好之後,需要填入信息頭的名稱以及對應的值,例:
- 解釋一下爲什麼添加http信息頭管理器:
JMeter不是瀏覽器,其行爲並不和瀏覽器完全一致。這些JMeter提供的配置元件中的HTTP屬性管理器用於儘可能模擬瀏覽器行爲,在HTTP協議層上發送給被測應用http請求。
-
HTTP Request Defaults(請求默認值)
用於設置其作用範圍內的所有HTTP的默認值,可被設置的內容包括HTTP請求的host、端口、協議等
-
HTTP Authorization Manager(授權管理器)
用於設置自動對一些需要NTLM驗證的頁面進行認證和登錄
-
HTTP Cache Manager
用於模擬瀏覽器的Cache行爲。爲Test Plan增加該屬性管理器後,Test Plan運行過程中會使用Last-Modified、ETag和Expired等決定是否從Cache中獲取相應的元素
-
HTTP Cookie Manager(cookie管理器)
用於管理Test Plan運行時的所有Cookie。HTTP Cookie Manager可以自動儲存服務器發送給客戶端的所有Cookie,並在發送請求時附加上合適的Cookie
同時,用戶也可以在HTTP Cookie Manager中手工添加一些Cookie,這些被手工添加的Cookie會在發送請求時被自動附加到請求
-
HTTP Header Manager(信息頭管理器)
用於定製Sampler發出的HTTP請求的請求頭的內容。不同的瀏覽器發出的HTTP請求具有不同的Agent
訪問某些有防盜鏈的頁面時需要正確的Refer…這些情況下都需要通過HTTP Header Manager來保證發送的HTTP請求是正確的
5. 添加Sampler(取樣器)→ http請求
-
取樣器(Sampler):是性能測試中向服務器發送請求,記錄響應信息,記錄響應時間的最小單元,JMeter 原生支持多種不同的sampler
-
右擊線程組 - Add - Sampler - HTTP Request
-
按照截圖所示,填入測試的服務器地址、端口、所用的協議、方法、路徑、參數
關於http請求的的屬性參數說明:
-
名稱:用於標識一個sample。建議使用一個有意義的名稱
-
註釋:對於測試沒任何影響,僅用來記錄用戶可讀的註釋信息
-
服務器名稱或IP:http請求發送的目標服務器名稱或者IP地址,比如www.baidu.com
-
端口號:目標服務器的端口號,默認值爲80,可不填
-
協議:向目標服務器發送http請求時的協議,http/https,大小寫不敏感,默認http
-
方法:發送http請求的方法: http協議幾種數據傳輸方式
-
Content encoding:內容的編碼方式(ContentType=application/json;charset=utf-8)
-
路徑:目標的URL路徑(不包括服務器地址和端口)
-
自動重定向:如果選中該項,發出的http請求得到響應是301/302,jmeter會重定向到新的界面
-
Use keep Alive:jmeter 和目標服務器之間使用 Keep-Alive方式進行HTTP通信(默認選中)
-
Use multipart/from-data for HTTP POST :當發送HTTP POST 請求時,使用
-
Parameters、Body Data以及Files Upload的區別:
-
parameter是指函數定義中參數,而argument指的是函數調用時的實際參數
-
簡略描述爲:parameter=形參(formal parameter), argument=實參(actual parameter)
-
在不很嚴格的情況下,現在二者可以混用,一般用argument,而parameter則比較少用
-
While defining method, variables passed in the method are called parameters.
-
當定義方法時,傳遞到方法中的變量稱爲參數.
-
While using those methods, values passed to those variables are called arguments.
-
當調用方法時,傳給變量的值稱爲引數.(有時argument被翻譯爲“引數“)
4、Body Data指的是實體數據,就是請求報文裏面主體實體的內容,一般我們向服務器發送請求,攜帶的實體主體參數,可以寫入這裏
5、Files Upload指的是:從HTML文件獲取所有有內含的資源:被選中時,發出HTTP請求並獲得響應的HTML文件內容後還對該HTML
進行Parse 並獲取HTML中包含的所有資源(圖片、flash等):(默認不選中)
如果用戶只希望獲取特定資源,可以在下方的Embedded URLs must match 文本框中填入需要下載的特定資源表達式,只有能匹配指定正則表達式的URL指向資源會被下載
-
6. 添加監視器(Listener)
-
監視器:對測試結果進行處理和可視化展示的一系列組件,常用的有圖形結果、查看結果樹、聚合報告等
-
添加好監視器,點擊運行,開始測試
-
如上,測試結束後,如果我們的請求成功發送給服務器,那麼結果樹裏面的模擬請求會顯示爲綠色,可以通過取樣器結果裏面的響應狀態碼信息來判斷
-
也可以點擊請求模塊,查看我們發送的請求
-
裏面有我們發送的請求的方法、協議、地址以及實體主體數據,以及數據類型,大小,發送時間,客戶端版本等信息
-
響應數據:裏面包含服務器返回給我們的響應數據實體,如下圖