Jmeter壓力測試入門操作 Jmeter壓力測試入門 阿新 • • 發佈:2019-01-05 Jmeter壓力測試入門 1. 前言 Jmeter 是Apache組織開發的基於Java的 壓力測試工具,開源並且支援多個 作業系統,是一款很好的HTTP測試工具。本篇 文章主要的目的是幫助沒有接觸過Jmeter的人快速上手,迅速掌握Jmeter的基本工程配置流程,並可以使用GUI介面進行基礎的測試工作。 Jmeter是由Java開發的,所以在執行之前需要安裝Jre,具體的安裝過程可以參考這篇文章的內容。接下來直接進入正題,假設後端開發了一個IP地址查詢庫,想做一下基本的 效能測試 ,使用Jmeter如何做? 2. 基本測試 首先開啟Jmeter軟體。 jmeter_gui 2.1 新增執行緒組 所有的測試工作都是從新建一個執行緒組開始的。 它的作用其實是為了模擬使用者,所以也叫Users。一個執行緒組模組可以包含多個執行緒,每個執行緒代表一個使用者,這樣可以模擬高併發下的請求,並根據網站的響應資訊來判斷網站的相關效能。 執行緒組包含很多屬性,目前我們只關注執行緒屬性那一塊。其中執行緒數代表訪問的併發數,預設是1。Ramp-Up Period 表示多長時間內容啟動所有執行緒,如果時間很短,會造成網站的瞬間高併發,預設值是1秒。迴圈次數是表示執行多少次,預設值為1,表示執行一次結束,這裡可以勾選永遠,讓其一直執行下去。 這些屬性暫時不用動,因為還沒有將工程配置好,測試工程配置的時候使用單次測試容易排查問題,以後壓力測試直接修改該面板的值即可。 2.2 新增HTTP請求 因為是HTTP介面,這裡新增一個HTTP請求,用來訪問網站的API介面。 HTTP請求面板主要的目的是設定測試時候HTTP請求的相關資訊,模擬 瀏覽器訪問或者其他程式訪問後臺的相關配置。 該面板主要的配置包括協議、伺服器IP、埠、方法、路徑和引數等內容,接下來可以將測試樣例的相關資訊填入。 這裡測試使用的是淘寶IP地址庫,首頁有Rest API介面的測試介面說明: 1. 請求介面(GET): /service/getIpInfo.php?ip=[ip地址字串] 2. 響應資訊: (json格式的)國家 、省(自治區或直轄市)、市(縣)、運營商 3. 返回資料格式: {"code":0,"data":{"ip":"210.75.225.254","country":"\u4e2d\u56fd","area":"\u534e\u5317", "region":"\u5317\u4eac\u5e02","city":"\u5317\u4eac\u5e02","county":"","isp":"\u7535\u4fe1", "country_id":"86","area_id":"100000","region_id":"110000","city_id":"110000", "county_id":"-1","isp_id":"100017"}} 其中code的值的含義為,0:成功,1:失敗。 因為是GET請求,所以具體內容填寫如下: 該介面的引數比較簡單,只有一個ip引數,如果複雜的可以新增多個或者直接在路徑後面新增也可,例如:/service/getIpInfo.php?ip=xxx.xxx.xxx.xxx。 2.3 新增結果樹 現在基本配置已經OK,但是這樣執行後返回的結果卻沒有地方檢視。為了方便檢視結果,這裡新增View Results Tree面板,有很多其它的結果檢視面板,大家可以自己嘗試一下。 結果樹主要是觀察伺服器響應資訊,並支援將結果寫入檔案。 2.4 新增HTTP映象伺服器 在執行測試之前,如何驗證我們傳送的資訊是否有誤?如何可以理直氣壯的告訴別人自己傳送的測試請求沒有問題?這裡推薦新增HTTP映象伺服器進行校驗測試。 HTTP映象伺服器並不是測試元件,而是用來用來校驗的非測試元件,具體新增位置在工作臺。 新增後,預設埠為8081,如果和你電腦上的埠不衝突,直接開啟即可。 接著回到HTTP請求面板修改IP地址和埠。 點選執行按鈕進行測試。 如果你之前沒有儲存過測試方案,會提示你儲存,這裡直接選擇一個位置儲存。 在結果樹面板可以檢視映象伺服器返回的結果,該結果資訊就是你傳送的請求配置資訊。 因為該演示傳送的引數比較簡單,所以感覺該操作沒有必要的樣子,但對於複雜的測試來說,測試之前保證自身請求的正確性是很很必要的。 2.5 開始測試 接下來再將HTTP請求面板改回原來的樣子。點選清除按鈕,清除當前無用的測試結果,然後點選開始按鈕進行新的測試。 小技巧:這裡請求面板改來改去感覺很麻煩,有一個簡單的辦法就是改之前將面板拷貝到工作臺,測試後,再將其拷貝回去,這樣就節省再次更改的時間了。當然複製/禁用的效果也是類似的。 檢視測試面板: 結果有些和想象的不一樣,我們非常確定請求傳送的沒有問題,原因可能是淘寶的服務端做了HTTP頭判斷,防止其他的應用程式進行濫用,一般公司內部測試不會遇見這種情況,大多數這種手段貌似都是防爬蟲之類的。 解決方法很簡單,就是再披一層皮。增加HTTP資訊頭管理面板: 這裡新增User-Agent頭部,讓請求看起來是瀏覽器本身訪問一樣。 再次測試,這回返回正常。 接下來壓力測試只需要修改執行緒組面板,就可以嘗試大批量進行請求了。不過大批量測試還需要幾個地方需要學習。 3. 批量測試 批量測試要想做好有三個最基本的問題。第一個如何做到批量輸入,測試肯定越偏向于越真實越好,很多都是拿線上資料進行測試,在Jmeter中最簡單的批量匯入的手段就是使用CSV Data Set Config面板。第二個是如何校驗返回結果,批量測試不像單個測試可以人眼掃描,大批量的資料返回肯定是看不過來的,在Jmeter中可以使用斷言,類似於程式設計中的斷言,可以校驗返回結果是否正確。第三個是如何統計資料,這個最方便,因為基本的統計Jmeter有很多原生的模組。 3.1 CSV Data Set Config 該模組主要是從外部載入資料使用,可以按照規定的格式讀取並將文字解析成對應的變數,可以供其它模組使用。 這裡拿IP地址為案例。首先準備一個檔案,每行一個IP。 然後,在CSV Data Set Config面板中如下配置: 這裡的配置很簡單,Filename代表解析的檔案,這裡選擇剛剛建立的Ip列表檔案。File encoding 代表檔案編碼,使用預設配置。Variable Names 代表賦值的變數,這裡可以填寫多個變數,但是目前每行只有一個ip地址。Ignore first line 是否忽略首行,主要是對那些有標題頭的檔案格式,接下來Delimiter 代表每行的分隔符,這裡每行一個變數,填什麼都無所謂,保持預設即可。 Recycle on EOF/Stop thread on EOF/Sharing mode 這三個設定一般用於測試檔案資料的使用策略。如果你想只測試檔案中的資料,測試完成後終止,那麼需要將Recycle on EOF和 Stop thread on EOF 分別設定為false和true。Sharing mode這裡保持預設即可。 有了資料的輸入,接下來修改HTTP請求,讓每次請求的引數不同。 將ip的值改為${ip},大括號包含的ip代表CSV Data Set Config中定義的變數,這樣每次請求的ip引數將和檔案中的順序一一對映。 提示:大家測試時候不要使用淘寶介面測試,該介面對批量請求做的限制。 3.2 斷言 上面的結果好像全部沒有問題,其實不然,檢視第二個請求,你會發現,雖然請求本身沒問題,但是資料返回的資訊卻表示輸入的ip地址無效,我們卻無法感知。 如何校驗返回結果?Jmeter支援新增斷言模組。 斷言的種類非常豐富,這裡使用最簡單常用的響應斷言。斷言面板支援很多匹配規則,甚至支援正則表示式。這裡只是簡單的使用包括來進行校驗。 接著可以執行檢視結果。 3.3 聚合報告 就剩下最後一個問題了,如何檢視所有請求的綜合情況。最常用的就是聚合報告模組。 該模組可以詳細的展示所有請求的綜合水平。包括請求個數,平均響應時間,最大響應時間、吞吐量等等。 下面是我測試四個請求的報告: 4. 總結 到這裡基本的常用模組就介紹完了,通過本文可以掌握基本的測試元件,主要是對HTTP請求的相關測試,非常簡單的過程,適合入門觀看。 注:轉載至 http://www.51testing.com/html/56/n-3723356.html 1. 前言 Jmeter 是Apache組織開發的基於Java的 壓力測試工具,開源並且支援多個 作業系統,是一款很好的HTTP測試工具。本篇 文章主要的目的是幫助沒有接觸過Jmeter的人快速上手,迅速掌握Jmeter的基本工程配置流程,並可以使用GUI介面進行基礎的測試工作。 Jmeter是由Java開發的,所以在執行之前需要安裝Jre,具體的安裝過程可以參考這篇文章的內容。接下來直接進入正題,假設後端開發了一個IP地址查詢庫,想做一下基本的 效能測試,使用Jmeter如何做? 2. 基本測試 首先開啟Jmeter軟體。 jmeter_gui 2.1 新增執行緒組 所有的測試工作都是從新建一個執行緒組開始的。 它的作用其實是為了模擬使用者,所以也叫Users。一個執行緒組模組可以包含多個執行緒,每個執行緒代表一個使用者,這樣可以模擬高併發下的請求,並根據網站的響應資訊來判斷網站的相關效能。 執行緒組包含很多屬性,目前我們只關注執行緒屬性那一塊。其中執行緒數代表訪問的併發數,預設是1。Ramp-Up Period 表示多長時間內容啟動所有執行緒,如果時間很短,會造成網站的瞬間高併發,預設值是1秒。迴圈次數是表示執行多少次,預設值為1,表示執行一次結束,這裡可以勾選永遠,讓其一直執行下去。 這些屬性暫時不用動,因為還沒有將工程配置好,測試工程配置的時候使用單次測試容易排查問題,以後壓力測試直接修改該面板的值即可。 2.2 新增HTTP請求 因為是HTTP介面,這裡新增一個HTTP請求,用來訪問網站的API介面。 HTTP請求面板主要的目的是設定測試時候HTTP請求的相關資訊,模擬 瀏覽器訪問或者其他程式訪問後臺的相關配置。 該面板主要的配置包括協議、伺服器IP、埠、方法、路徑和引數等內容,接下來可以將測試樣例的相關資訊填入。 這裡測試使用的是淘寶IP地址庫,首頁有Rest API介面的測試介面說明: 1. 請求介面(GET): /service/getIpInfo.php?ip=[ip地址字串] 2. 響應資訊: (json格式的)國家 、省(自治區或直轄市)、市(縣)、運營商 3. 返回資料格式: {"code":0,"data":{"ip":"210.75.225.254","country":"\u4e2d\u56fd","area":"\u534e\u5317", "region":"\u5317\u4eac\u5e02","city":"\u5317\u4eac\u5e02","county":"","isp":"\u7535\u4fe1", "country_id":"86","area_id":"100000","region_id":"110000","city_id":"110000", "county_id":"-1","isp_id":"100017"}} 其中code的值的含義為,0:成功,1:失敗。 因為是GET請求,所以具體內容填寫如下: 該介面的引數比較簡單,只有一個ip引數,如果複雜的可以新增多個或者直接在路徑後面新增也可,例如:/service/getIpInfo.php?ip=xxx.xxx.xxx.xxx。 2.3 新增結果樹 現在基本配置已經OK,但是這樣執行後返回的結果卻沒有地方檢視。為了方便檢視結果,這裡新增View Results Tree面板,有很多其它的結果檢視面板,大家可以自己嘗試一下。 結果樹主要是觀察伺服器響應資訊,並支援將結果寫入檔案。 2.4 新增HTTP映象伺服器 在執行測試之前,如何驗證我們傳送的資訊是否有誤?如何可以理直氣壯的告訴別人自己傳送的測試請求沒有問題?這裡推薦新增HTTP映象伺服器進行校驗測試。 HTTP映象伺服器並不是測試元件,而是用來用來校驗的非測試元件,具體新增位置在工作臺。 新增後,預設埠為8081,如果和你電腦上的埠不衝突,直接開啟即可。 接著回到HTTP請求面板修改IP地址和埠。 點選執行按鈕進行測試。 如果你之前沒有儲存過測試方案,會提示你儲存,這裡直接選擇一個位置儲存。 在結果樹面板可以檢視映象伺服器返回的結果,該結果資訊就是你傳送的請求配置資訊。 因為該演示傳送的引數比較簡單,所以感覺該操作沒有必要的樣子,但對於複雜的測試來說,測試之前保證自身請求的正確性是很很必要的。 2.5 開始測試 接下來再將HTTP請求面板改回原來的樣子。點選清除按鈕,清除當前無用的測試結果,然後點選開始按鈕進行新的測試。 小技巧:這裡請求面板改來改去感覺很麻煩,有一個簡單的辦法就是改之前將面板拷貝到工作臺,測試後,再將其拷貝回去,這樣就節省再次更改的時間了。當然複製/禁用的效果也是類似的。 檢視測試面板: 結果有些和想象的不一樣,我們非常確定請求傳送的沒有問題,原因可能是淘寶的服務端做了HTTP頭判斷,防止其他的應用程式進行濫用,一般公司內部測試不會遇見這種情況,大多數這種手段貌似都是防爬蟲之類的。 解決方法很簡單,就是再披一層皮。增加HTTP資訊頭管理面板: 這裡新增User-Agent頭部,讓請求看起來是瀏覽器本身訪問一樣。 再次測試,這回返回正常。 接下來壓力測試只需要修改執行緒組面板,就可以嘗試大批量進行請求了。不過大批量測試還需要幾個地方需要學習。 3. 批量測試 批量測試要想做好有三個最基本的問題。第一個如何做到批量輸入,測試肯定越偏向于越真實越好,很多都是拿線上資料進行測試,在Jmeter中最簡單的批量匯入的手段就是使用CSV Data Set Config面板。第二個是如何校驗返回結果,批量測試不像單個測試可以人眼掃描,大批量的資料返回肯定是看不過來的,在Jmeter中可以使用斷言,類似於程式設計中的斷言,可以校驗返回結果是否正確。第三個是如何統計資料,這個最方便,因為基本的統計Jmeter有很多原生的模組。 3.1 CSV Data Set Config 該模組主要是從外部載入資料使用,可以按照規定的格式讀取並將文字解析成對應的變數,可以供其它模組使用。 這裡拿IP地址為案例。首先準備一個檔案,每行一個IP。 然後,在CSV Data Set Config面板中如下配置: 這裡的配置很簡單,Filename代表解析的檔案,這裡選擇剛剛建立的Ip列表檔案。File encoding 代表檔案編碼,使用預設配置。Variable Names 代表賦值的變數,這裡可以填寫多個變數,但是目前每行只有一個ip地址。Ignore first line 是否忽略首行,主要是對那些有標題頭的檔案格式,接下來Delimiter 代表每行的分隔符,這裡每行一個變數,填什麼都無所謂,保持預設即可。 Recycle on EOF/Stop thread on EOF/Sharing mode 這三個設定一般用於測試檔案資料的使用策略。如果你想只測試檔案中的資料,測試完成後終止,那麼需要將Recycle on EOF和 Stop thread on EOF 分別設定為false和true。Sharing mode這裡保持預設即可。 有了資料的輸入,接下來修改HTTP請求,讓每次請求的引數不同。 將ip的值改為${ip},大括號包含的ip代表CSV Data Set Config中定義的變數,這樣每次請求的ip引數將和檔案中的順序一一對映。 提示:大家測試時候不要使用淘寶介面測試,該介面對批量請求做的限制。 3.2 斷言 上面的結果好像全部沒有問題,其實不然,檢視第二個請求,你會發現,雖然請求本身沒問題,但是資料返回的資訊卻表示輸入的ip地址無效,我們卻無法感知。 如何校驗返回結果?Jmeter支援新增斷言模組。 斷言的種類非常豐富,這裡使用最簡單常用的響應斷言。斷言面板支援很多匹配規則,甚至支援正則表示式。這裡只是簡單的使用包括來進行校驗。 接著可以執行檢視結果。 3.3 聚合報告 就剩下最後一個問題了,如何檢視所有請求的綜合情況。最常用的就是聚合報告模組。 該模組可以詳細的展示所有請求的綜合水平。包括請求個數,平均響應時間,最大響應時間、吞吐量等等。 下面是我測試四個請求的報告: 4. 總結 到這裡基本的常用模組就介紹完了,通過本文可以掌握基本的測試元件,主要是對HTTP請求的相關測試,非常簡單的過程,適合入門觀看。 注:轉載至 http://www.51testing.com/html/56/n-3723356.html