菜鳥的性能測試之路(三)——關于Jmeter壓測

在第一篇性能測試的時候說過,由于公司高速發展,最近開始重溫專項測試。此前已經親測過Apache Bench,接下來我會利用Apache Jmeter來進行壓力測試,且包括服務器的狀態監控。

那么接下來我要對我們的測試服務器進行壓力測試,包括登錄前的頁面和登錄后的頁面,主要目的是測試負載均衡的實現效果。在網上也參考了不少資料,我把能踩的坑都踩了一遍,也算是能從坑里爬出來了,至少是能實現了當初的目標。

安裝Jmeter

我用的版本是3.0版本,在這里建議大家和我一樣,不要輕易使用最新版本,次新版本就可以了,因為最新版本有可能和其他插件和環境還不能很好兼容。至于怎么安裝就不一一闡述了,網上有大把的教程。要注意的是,由于Jmeter是用Java語言編寫的,所以同時也要把java環境部署好。安裝好了之后,Jmeter的bin目錄下有個Jmeter.bat文件,雙擊就能運行了。


首次打開Jmeter頁面

未登錄測試

運行軟件之后,我們右擊“測試計劃”——“添加”——“Threads(Users)——線程組”,這樣就建好了一個線程組了,作用當然是用來跑線程。有了線程組之后,我們再右擊線程組,“添加”——“配置元件”——“http請求默認值”,在這里面可以設置一些常用的默認的設置,這里我輸入我們的測試服務器的IP或域名,這里我輸入“10.1.xx.xx”,端口號則輸入“6502”,(因為我要測試的地址是:10.1.xx.xx:6502)協議是“http”,如果要測試的網址是https開頭那就填“https”,其他則默認,這時候點擊左上角保存會彈出一個保存框,這是讓你保存你現在所做的測試配置,以后需要再測試的話的直接打開保存的jmx文件就行了。保存完了之后,我們再右擊“線程組”——“添加”——“Sampler”——“http請求”。咦,這里和剛才的“http請求默認值”不是一樣的嗎?剛剛那個只是默認值,只是用來設置一些默認配置。真正發起請求的是“http請求”,在http請求里面我們在“路徑”里面輸入斜杠“/”就ok了,表示默認路徑,IP那一欄就不用輸入了。這是因為在http請求默認值里面已經輸過IP地址,以后可以新建多個http請求,只要修改路徑就行了,這樣就可以訪問同一個網站的不同頁面,這就是“http請求默認值”的意義所在,把一些共用的設置寫一遍就好了。接著,我們再右擊“線程組”——“添加”——“監聽器”——“察看結果數”,在這里可以查看到http請求和結果。每次新建組件和修改配置信息都要點擊保存,頁面配置圖如下所示:


http請求默認值


http請求

接下來點擊工具欄的綠色運行按鈕,就可以在“察看結果樹”中看到結果了。


察看結果樹的結果

我們新建的“http請求”返回結果200,表明請求成功,從綠色打鉤也能看出,上圖中的下拉列表框可以選擇顯示格式,我們選擇HTML,切換到“響應數據”就可以看到返回的頁面。

設置線程并發數

接下來點擊“線程組”可以看到線程組的設置頁面,默認設置是1個線程,1秒啟動,循環1次。線程數表示啟動多少個線程,Ramp-Up Period表示花多長時間啟動所有線程,循環次數表示每個線程的執行次數。例如,我設置線程數為3,Ramp-Up Period為6,循環次數3,表示軟件將在6秒內啟動3個線程,也就是2秒啟動1個線程,每個線程執行3次請求。

線程并發設置

此外還可以勾選“調度器”,比如我填入持續時間50,啟動延遲0,將循環次數勾選“永遠”,表示線程立即啟動,執行50秒后停止。要注意,如果設置了持續時間和啟動延遲,那么下面的啟動時間和結束時間就不起作用了,就不用管了,點擊運行即可。

設置其他監聽器

之前僅僅設置了“察看結果樹”這個監聽器,這時候可以右擊“線程組”——“添加”——“監聽器”,里面有很多監聽器可供選擇,比如圖形結果,用表格查看結果,聚合報告等等,這些都是反映測試過程的指標數據。圖形結果以圖形的形式顯示吞吐量、偏移、平均值等信息,表格結果顯示每一次請求的時間,返回,發送字節數,連接時間等等,聚合報告里面顯示總體請求的吞吐量,錯誤率等等。下圖為表格結果的樣式。

用表格察看結果

可以看出,圖中顯示了9個Http請求,分別由3個線程執行,每個線程執行3次,正好符合我們對于線程組的設置。圖中每一列的含義分別表示請求序號,開始時間,線程序號,請求名,請求所花的時間,請求狀態,請求字節數,發送字節數,等待時長,連接時間。

聚合報告如下圖所示,每一列的含義分別表示請求名稱,請求總數,請求的平均響應時間(毫秒),50%的請求的響應時間,90%的請求的響應時間,95%的請求的響應時間,99%的請求的響應時間,最小的響應時間,最大的響應時間,錯誤的請求率(錯誤請求數/總的請求數),吞吐量(每秒處理的請求數),接收的字節速率,發送的字節速率。


聚合報告

登錄測試

前面我測試的頁面是不需要登錄的,現在來測試一下登錄的操作。關于登錄需要的參數,一般來說就是用戶名和密碼,但是往往還需要其他參數,我們可以通過抓包工具Fiddler進行抓包,我們在網站中進行一次正常登錄,可以在Fiddler中看到登錄需要的post參數。例如我這里的Fiddler中顯示我的測試頁面登錄操作post參數有txtUserName, txtUsePws, 那么需要在“http請求”或“http請求默認值”里面填入,下圖所示。


點擊“添加”按鈕就可以添加參數了,保存好后,我們點擊運行,就可以在察看結果樹中看到登錄成功后的頁面了,具體的操作和前面一樣的。

會話保持


進入登錄后的頁面后,還想訪問例如“個人信息”,“個人設置”等模塊,這些網頁需要登錄成功后才能訪問到,這里就需要進行會話的保持,我們右擊“線程組”——“添加”——“配置元件”——“http cookie管理器”,要添加的內容我們可以在察看結果樹的“請求”選項卡里面看到,里面可以看到登錄需要的cookie,如果沒有找到cookie或cookie為空,就不用填,無須再手動配置。如圖所示。


Cookie管理器

此時,我們在http請求里面輸入登錄后的頁面網址就可以請求成功了。

利用文件讀取訪問多個網頁


我在“http請求”的路徑里面填入的是我要訪問的網頁,每次只能填一個。假如我想訪問好幾個網頁,例如首頁,通知頁,介紹頁等等,除了新建http請求外,我們還可以將這些網頁的地址存儲在TXT文件里。例如在我的測試服務器上,想要訪問Preloan/xxx, LoanManage/xxx, AfterLoan/xxx等頁面,如下:


TXT存放多個地址

網址填入后,我們在Jmeter里面的“選項”——“函數助手對話框”——“StringFromFile”,將TXT的完整路徑貼到圖中位置,點擊生成,可以在框里生成TXT文件的讀取路徑。

函數助手

??? 我們將$開頭的那串路徑貼到“http請求”的路徑里面,就可以訪問到TXT里面的所有網頁了,如圖所示。

服務器狀態實時監聽


上面介紹了幾個Jmeter自帶的監聽器,但是我發現,里面顯示的指標好像都不是我特別需要的。目前我更關心我的請求執行過程中服務器狀態的改變,例如CPU,內存,磁盤,網絡,TPS,響應時間圖等等,因為這才是壓力測試的目的所在,服務器狀態隨著請求增加的變化曲線才是我們更加需要看到的。想看到服務器變化的曲線圖,需要下載JMeterPlugins-Extras.jar和JMeterPlugins-Standard.jar,將這兩個jar包放入Jmeter的安裝路徑下的lib/ext/下面,重啟Jmeter后,右擊“線程組”——“添加”——“監聽器”,這時候可以看到多了好多監聽器,大多數以“jp@gc”開頭的監聽器。這里選擇“PerfMon Metrics Collector”,里面將會顯示服務器的狀態信息,現在還看不到,因為要測試的服務器需要安裝一個包,叫ServerAgent.zip,譬如我的服務器是Windows的,我將ServerAgent在服務器中解壓,運行里面的StartAgent批處理文件就可以了。到這里也要注意一點,因為這個文件是屬于Jmeter的插件,所以測試服務器也要裝上Java的jdk文件才可以運行起來。啟動起來后如下所示:


服務器端的服務啟動

ServerAgent的默認端口是4444,按下圖填入服務器的地址和端口號,以及需要監控的硬件,如CPU,內存,磁盤,網絡等等。


PerfMon Metrics Collector

OK,接下來點擊運行,可以在chart下看到服務器的狀態變化曲線如下:


Chart

其實監聽器里面還有很多其他的曲線,比如TPS曲線,響應時間曲線等等,都可以自己添加。到這里,基本已經實現了當初想要的指標和目的了。


題外話:

其實我發現如果是單臺服務器測試的話,用我們測試服務器自帶的性能監視器會更好用,數據也更全面一些。不過不同公司的測試環境不一樣,按自己的需求來走就好。

性能監視器



讀更多的好書,拍更美的照片,寫更酷的代碼,遇見更有趣的人,愿望是實現從IT菜鳥到全棧工程師的蛻變。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 主要文體來自 CDNS:https://www.cnblogs.com/ceshisanren/p/5639895...
    Amano閱讀 11,066評論 3 27
  • 轉載:http://www.51testing.com/html/10/n-3725610.html? ?測試計劃...
    測試大頭兵閱讀 970評論 0 1
  • 有個和尚與書生同船,書生高談闊論,顯得自己很有文化,和尚自卑膽怯,蜷縮在角落,只有聽的份,聽著聽著,覺得書生的言...
    一匹馬來了閱讀 527評論 0 0
  • 早上,伍辰在群里發了一張照片。北京嚴重霧霾,叫童鞋們安心在家寫作。 我回應:你們應該感覺到優越感的,這是帝都特產,...
    微語素心閱讀 279評論 4 1
  • 我是小青琴,今天是我參加“每天一篇文章”連續寫作的第96天,每天一篇文章,皆與“大學生讀書創業”有關。希望我的每篇...
    小青琴閱讀 957評論 0 1