1. 程式人生 > >壓力測試jmeter入門教程

壓力測試jmeter入門教程

Apache JMeter是Apache組織開發的基於Java的壓力測試工具。用於對軟體做壓力測試,它最初被設計用於Web應用測試,但後來擴充套件到其他測試領域。 它可以用於測試靜態和動態資源,例如靜態檔案、Java 小服務程式、CGI 指令碼、Java 物件、資料庫、FTP 伺服器, 等等。JMeter 可以用於對伺服器、網路或物件模擬巨大的負載,來自不同壓力類別下測試它們的強度和分析整體效能。另外,JMeter能夠對應用程式做功能/迴歸測試,通過建立帶有斷言的指令碼來驗證你的程式返回了你期望的結果。為了最大限度的靈活性,JMeter允許使用正則表示式建立斷言。

總而言之,jmeter就是一款壓力測試的軟體。

1.下載/安裝 jmeter

首先下載jdk,下載網站:http://www.oracle.com/technetwork/java/javase/downloads/index.html ,這裡我選擇的是Java Platform (JDK) 8u111 / 8u112,下載完成安裝。

然後下載jmeter http://jmeter.apache.org/download_jmeter.cgi

下載完成解壓,開啟解壓資料夾下進入bin,雙擊ApacheJMeter.jar就可以開啟jmeter

2.開始壓測

(1)新建執行緒組,即新建一個壓測專案,右擊測試計劃,操作如圖:


執行緒組的引數設定:執行緒數指的是使用者數,Ramp-Up單位是秒,如果執行緒數是100,Ramp-Up設定為1,迴圈設定2(表示每個使用者請求多少次),則100/1=0.01秒,即執行緒與執行緒的切換時間的0.01秒,表示使用者A(A執行緒)訪問2次必需在0.01秒內發出請求,0.01秒後換使用者B(執行緒)請求。引數設定如圖:


(2)新建http請求

右擊執行緒組,依次選擇:新增-》Sampler-》HTTP請求,引數設定:伺服器名稱或IP,直接輸入域名;埠號不需要設定;路徑填寫訪問的路徑,不填寫表示直接訪問域名,如果是get請求引數可以直接寫到路徑,比如open/index/shop?name=test&age=22,如果是post,則點選Parameters選項卡下面的“新增”進行引數的新增,記得任何填寫完都記得點選儲存,操作如圖:


(3)新增結果監控

右擊執行緒組,依次選擇:新增-》監聽器-》用表格察看結果,再新增:新增-》監聽器-》察看結果樹,再新增:新增-》監聽器-》聚合報告,一般看這3個,其他可以按個人新增。新增完畢,可以開始壓測,點選綠色的三角形開始壓測按鈕,或者右擊執行緒組-》start。執行完畢,察看聚合報告,引數說明:

label:請求說明,如果是請求不同的路由,這裡會顯示路由的地址

samples:請求的次數

average:平均請求時間(毫秒)

median:請求時間小到大排序,排在中間的那個時間

90%Line:請求時間小到大排序,排在90%的那個時間(一般以這個為指標,比如要求這個數不能超過1000,即一秒,90%的請求不能超過1秒)

min:最小的請求時間

max:最大的請求時間

error:請求失敗的比率

throughput:吞吐量

引數如圖:


(4)隨機測試多個url

一般我們不會只是壓測一個url,希望隨機壓測多個url,這是我們可以使用jmeter的StringFromFile函式,在jmeter工具欄依次點選:選項-》函式助手對話方塊-》選擇_StringFromFile,然後在輸入檔案路徑後面輸入我們本地一個記錄多個需要壓測url的檔案,必須是bat結尾,這裡我的檔案在F:url.bat,路徑可自定義,我這裡填寫F:url.bat。然後編輯F:url.bat檔案,填寫需要壓測的url,不需要填寫域名,因為域名已經在HTTP請求那裡設定了,以換行作為分隔符,StringFromFile的設定如圖:


url.bat編輯的內容如下:

/open/index/shop?zb_id=1Zmjqt7FZ5k
/open/index/goods_list?zb_id=1Zmjqt7FZ5k
/open/index/detail2/52708/375778?zb_id=1Zmjqt7FZ5k
儲存url.bat,然後再按上圖所示,在函式助手點選生成,會生成一個函式字串,複製函式字串,在HTTP請求中的路徑填寫複製的函式字串,如圖:


點選儲存,再點選上圖所示的清除按鈕,清除上一次的監聽結果,然後點選開始就可以發現是隨機壓測不同的url了。

(5)晉級隨機壓測url

上面說的隨機壓測url,侷限是隻能壓測get請求的url,不能壓測post請求,因為post請求需要的引數上面的方法設定不了,還有實際的情況是:有時候還需要壓測需要登入的頁面。

首先解決需要登入的問題。

設定cookie。右擊執行緒組,依次選擇:新增-》配置元件-》HTTP Cookie管理器,在管理器新增登入狀態的cookie就可以了。

解決post請求。這時就不能用上面的方法,但是需要壓測多個頁面,建立多個執行緒組也不合理,這時需要使用jmeter的錄製功能。即你用時瀏覽器訪問你需要壓測的多個url,jmeter錄製下來,包括請求url時的所有引數,自動新增到執行緒組下面,這時點選開始壓測就會隨機壓測剛才錄製下來的url。

錄製準備。右擊工作臺。依次選擇:新增-》非測試元件-》HTTP代理伺服器,設定引數:埠=8888(不和其他程式衝突),目標控制器=執行緒組,設定如圖:


設定完成點選啟動,然後去瀏覽器設定代理,IP:127.0.0.1,埠:8888,然後訪問需要壓測的url,jmeter就會錄製下來,如圖:


會發現很多css、js、圖片也錄製進來了,需要手動把他們刪除,然後點選開始壓測,就會發現可以壓測得到post請求的url