歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> JMeter壓力測試入門教程[圖文]

JMeter壓力測試入門教程[圖文]

日期:2017/2/27 15:58:59   编辑:Linux教程

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

1. 下載JMeter
官方網站下載最新版本: http://jmeter.apache.org/download_jmeter.cgi ,目前最新版是Apache JMeter 2.9
使用JMeter依賴jdk,建議安裝jdk 1.6版本
Linux下安裝jdk參考文章:http://www.linuxeye.com/Linux/Linux-install-JDK.html
Windowns下安裝jdk同Linux下安裝類似,這裡就不介紹了。

2. 啟動JMeter
這裡就在win下進行,圖形界面較為方便
在目錄apache-jmeter-2.9\bin 下可以見到一個jmeter.bat文件,雙擊此文件,即看到JMeter控制面板

3. 運行預准備
現在來對LinuxEye進行壓力測試,壓力測試對象為隨機的幾個網頁鏈接,這幾個鏈接是寫在一個文本文件中的,在壓力測試的時候會隨機讀取。
1) 建立一個線程組,如下圖

為什麼要建立線程組?原因很簡單,因為我們要模擬多個線程(用戶)來訪問LinuxEye。
線程屬性部分中,線程數是啟動多少個線程,我這裡填寫的是10,Ramp-Up Period (in seconds)表示線程之間間隔多少時間允許,單位是秒,比如如果填寫10,那麼10/10=1表示10個線程間每隔1秒鐘請求網站。
循環次數:60個線程運行完畢算是一次,循環次數就是這樣的一個請求過程運行多少次,我這裡測試就填寫的是2.
每次修改一個設置後,別忘記了保存一下。

2) 設置請求服務器、壓力鏈接等信息
接下來很自然的是,我們要測試的網站地址是什麼?鏈接是什麼?所以現在我們就來設置這些信息。
右鍵點擊我們剛創建的線程組,在彈出的菜單中,選擇添加->Sampler->Http請求,彈出如下圖界面:

路徑:
假如你只是對一個鏈接進行壓力測試,直接填寫一個鏈接就ok,比如 http://www.linuxeye.com,但是大多數情況下都不是這樣的,我們這裡需要多個鏈接,就如同剛開始講到的那樣,我們要將多個鏈接保存到一個文本文件中,然後隨機讀取進行壓力測試。我們可以這麼做,如圖:

在選擇一個功能下拉列表中選擇_StringFromFile,然後在本機新建一個測試文件C:\Users\root\Desktop\apache-jmeter-2.9\test.txt,在第一行(你也可以不在第一行)的值中填寫測試文件的路徑,如下圖:

然後點擊“生成”按鈕,在生成按鈕的左邊文本框中將生成一個字符串如:
${__StringFromFile(C:\Users\root\Desktop\apache-jmeter-2.9\test.txt,,,)}
在test.txt測試文件中,我們每行寫一個URL鏈接,如下格式:
/command
/Linux
/program
/jianzhan
/command/cat.html
/command/chmod.html
/command/lsattr.html

注意,每行前面並沒有http://www.linuxeye.com這樣的信息,因為我們在前面已經填寫了服務器地址為www.linuxeye.com,這裡就沒必要再為每個url填寫這個相同前綴了;另外,上面的url格式也只是個例子,表示域名後的部分。

這樣一來,當我們並非請求的時候,就會從test.txt中隨機選擇url來進行壓力測試。
另外值得注意的一個地方是,如果參數中有中文的情況,運行的時候可能會出現亂碼,這個時候就需要注意你在Jmeter中的編碼設置與你要請求的網頁編碼是一致的。

路徑文本框下面的選項,可以按默認的就成,Use multipart/form-data for HTTP POST是當請求中有附件的情況,一般情況下都不用選中的。

3) 查看運行結果
鼠標右鍵點擊線程組,在彈出的菜單中選擇添加->監聽器->用表格查詢結果,如下圖:

4. 運行
當然,在運行前,請把所有修改都保存好
運行後的結果表格如下:

各屬性如下:
Sample:每個請求的序號
Start Time:每個請求開始時間
Thread Name:每個線程的名稱
Label:Http請求名稱
Sample Time:每個請求所花時間,單位毫秒
Status:請求狀態,如果為勾則表示成功,如果為叉表示失敗。
Bytes:請求的字節數
如果Status為叉,那很顯然請求是失敗了,但如果是勾,也並不能認為請求就一定完全成功了,因為還得看Bytes的字節數是否是所請求網頁的正常大小值,如果不是則說明發生了丟包現象,也不是完全成功。

在下面還有幾個參數:
樣本數目:也就是上面所說的請求個數,成功的情況下等於你設定的並發數目乘以循環次數。
平均:每個線程請求的平均時間
最新樣本:表示服務器響應最後一個請求的時間
偏離:服務器響應時間變化、離散程度測量值的大小,或者,換句話說,就是數據的分布(這個我不是很理解)。

術語:
1、線程組:測試裡每個任務都要線程去處理,所有我們後來的任務必須在線程組下面創建。可以在“Test Plan(鼠標右擊) -> 添加 ->Threads(Users) -> 線程組”來建立它,然後在線程組面板裡有幾個輸入欄:線程數、Ramp-Up Period(in seconds)、循環次數,其中Ramp-Up Period(in seconds)表示在這時間內創建完所有的線程。如有8個線程,Ramp-Up = 200秒,那麼線程的啟動時間間隔為200/8=25秒,這樣的好處是:一開始不會對服務器有太大的負載。
2、取樣器(Sampler):可以認為所有的測試任務都由取樣器承擔,有很多種,如:HTTP請求。
3、斷言:對取樣器返回的請求結果給出判斷是否正確。
4、monitor:它的功能是對取樣器的請求結果顯示、統計一些數據(吞吐量、KB/S……)等。

Copyright © Linux教程網 All Rights Reserved