内部邀請碼:C8E245J (不寫邀請碼,沒有現金送)
國内私募機構九鼎控股打造,九鼎投資是在全國股份轉讓系統挂牌的公衆公司,股票代碼為430719,為“中國PE第一股”,市值超1000億元。
------------------------------------------------------------------------------------------------------------------------------------------------------------------
原文位址:http://www.cnblogs.com/cotty/archive/2012/08/30/2663562.html
在我使用Jmeter的過程中,我發現我周圍有之前使用過Jmeter的同僚,但即使如此,他們對如何将多個連結寫入到文本檔案中并随機讀取進行壓力測試也不清楚,故我打算還是在有空的時候寫一篇這樣的文章,以友善使用者。
一、 官方網址
<a href="http://jakarta.apache.org/jmeter/">http://jakarta.apache.org/jmeter/</a>
二、 運作
下載下傳解壓後,在目錄jakarta-jmeter-2.4\bin下可以見到一個jmeter.bat檔案,輕按兩下此檔案,打開初始界面如下圖:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcucTZyIDM3QWN5I2NwEGMyATM3UGZ5QGZ0kzM4kjZ0QGNfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
注意的是上面顯示的是中文,如果你想使用其他語言,比如英文,那麼通過菜單選項->選擇語言->英文即可,當然轉為中文也是同樣操作。
三、 運作預準備
我們現在要對子猴部落格來進行一番壓力測試,壓力測試對象為随機的幾個網頁連結,這幾個連結是寫在一個文本檔案中的,在壓力測試的時候會随機讀取。
1、 建立一個線程組,如下圖
為什麼要建立線程組?原因很簡單,因為我們要模拟多個線程(使用者)來通路網站。
線程組建立界面如下圖:
名稱可以随意填寫,預設選中“繼續”即可。
線程屬性部分中,線程數是啟動多少個線程,我這裡填寫的是60,Ramp-Up Period (in seconds)表示線程之間間隔多少時間允許,機關是秒,比如如果填寫120,那麼120/60=2表示60個線程間每隔2秒鐘請求網站。
循環次數:60個線程運作完畢算是一次,循環次數就是這樣的一個請求過程運作多少次,我這裡填寫的是1000.
每次修改一個設定後,别忘記了儲存一下。
2、 設定請求伺服器、壓力連結等資訊
接下來很自然的是,我們要測試的網站位址是什麼?連結是什麼?是以現在我們就來設定這些資訊。
右鍵點選我們剛建立的線程組,在彈出的菜單中,選擇添加->Sampler->Http請求,彈出如下圖界面:
名稱:随意填寫
注釋:可有可無
伺服器名稱或IP:我這裡填寫 zihou.me
端口号:我這裡填寫80
Timesout部分可以不填
HTTP請求部分的協定:http,方法我選擇的是GET,Content encoding我填的是UTF-8.
路徑:
這裡值得一提的就是這個路徑,假如你隻是對一個連結進行壓力測試,那麼這裡就非常簡單了,你就直接填寫一個連結就夠了,比如http://www.zihou.me,但很多情況下都不是這樣的,我們這裡需要多個連結,就如同剛開始講到的那樣,我們要将多個連結儲存到一個文本檔案中,然後随機讀取進行壓力測試。我們可以這麼幹,如圖:
打開界面如下圖:
在選擇一個功能下拉清單中選擇_StringFromFile,然後在本機建立一個測試檔案text.txt,在第一行(你也可以不在第一行)的值中填寫測試檔案的路徑,如下圖:
然後點選“生成”按鈕,在生成按鈕的左邊文本框中将生成一個字元串如:
${__StringFromFile(E:\test\test.txt,,,)}
在測試檔案中,我們每行寫一個URL連結,如下格式:
2011/03/26/3054
2011/03/26/3052
2011/03/26/3042
2011/03/25/3040
2011/03/25/3034
2011/03/24/3027
注意,每行前面并沒有http://www.zihou.me這樣的資訊,因為我們在前面已經填寫了伺服器位址為zihou.me,這裡就沒必要再為每個url填寫這個相同字首了;另外,上面的url格式也隻是個例子,表示域名後的部分,但很多時候url後面跟的都是各參數,比如http://www.zihou.me/p?a=1&b=3,如果是這種情況,則上面的連結可以寫為:
a=1&b=3這樣的形式。
現在我們可以來填寫前面所說的路徑了,如下:
/ ${__StringFromFile(E:\test\test.txt,,,)}
這樣一來,當我們并非請求的時候,就會從test.txt中随機選擇url來進行壓力測試。
另外值得注意的一個地方是,如果參數中有中文的情況,運作的時候可能會出現亂碼,這個時候就需要注意你在Jmeter中的編碼設定與你要請求的網頁編碼是一緻的。
路徑文本框下面的選項,可以按預設的就成,Use multipart/form-data for HTTP POST是當請求中有附件的情況,一般情況下都不用選中的。
同請求一起發送參數部分:
如果你僅僅是對某一個固定的頁面進行壓力測試,那你就可以不用進行上面所說的在文本檔案中設定URL的過程了,直接在這裡設定就行了,這裡的名稱就是參數名,值就是參數值,在這裡添加就OK了,但你如果是壓力多個連結,那這裡你可以不用填。
3、檢視運作結果
上面設定好後,接下來很自然的想到如何檢視運作結果呢?Jmeter在這方面提供了好些個檢視方式,有表格形式,有曲線形式等等,我個人認為檢視表格形式就足夠了!
滑鼠右鍵點選線程組,在彈出的菜單中選擇添加->監聽器->用表格查詢結果,如下圖:
彈出界面如下圖:
當然,你也可以選擇其他檢視方式,你也可以看到在監聽器菜單中,有好多種方式。
四、 運作
好了,現在我們終于可以運作了!
選擇菜單項運作->啟動,如下圖:
當然,在運作前,你得把所有修改都儲存了。
運作後的結果表格如下:
各屬性如下:
Sample:每個請求的序号
Start Time:每個請求開始時間
Thread Name:每個線程的名稱
Label:Http請求名稱
Sample Time:每個請求所花時間,機關毫秒
Status:請求狀态,如果為勾則表示成功,如果為叉表示失敗。
Bytes:請求的位元組數
如果Status為叉,那很顯然請求是失敗了,但如果是勾,也并不能認為請求就一定完全成功了,因為還得看Bytes的位元組數是否是所請求網頁的正常大小值,如果不是則說明發生了丢包現象,也不是完全成功。
在下面還有幾個參數
樣本數目:也就是上面所說的請求個數,成功的情況下等于你設定的并發數目乘以循環次數。
平均:每個線程請求的平均時間
最新樣本:表示伺服器響應最後一個請求的時間
偏離:伺服器響應時間變化、離散程度測量值的大小,或者,換句話說,就是資料的分布(這個我不是很了解)。
在上面的參數中,我個人認為隻要看Status和Bytes這兩個就夠了。
好了,主要的就介紹這麼多了,其實Jmeter做壓力測試的範圍遠遠不止于對Web,它還可以用于Java小服務程式、CGI 腳本、Java 對象、資料庫, FTP 伺服器等等,更多的使用可以根據自己的需要去研究掌握。
最後還提到的一點是:你一定注意到了,HTTP請求和結果檢視都是線上程組這一節點下建立的,其實,你也可以不用一定要線上程組下建立,你在測試計劃下建立也可以,但建立線上程組下面可以使得我們的測試意圖一目了然,也就是我們的HTTP請求和結果檢視都是基于我們設定的線程組的。