JMeter經常使用組件

本文轉至http://blog.chinaunix.net/uid-26884465-id-3418212.html,我的以爲寫得很是不錯,適合初學者html

一、線程組正則表達式

程組是任何測試計劃的起點,全部的邏輯控制器和採樣器都必須放在線程組之下。其餘的測試元件(如監聽器)能夠被直接放在測試計劃之下,這些測試元件 對全部線程組都生效。線程組就像它的名字所描述的那樣,被用來管理執行性能測試所需的JMeter線程。用戶經過線程組的控制面板能夠:服務器

設置線程數量。多線程

設置線程啓動週期。併發

設置執行測試腳本的循環次數。ide

每個JMeter線程都會完整地執行測試計劃,並且它們之間是徹底獨立運行的。這種多線程機制被用來模擬服務器應用的併發鏈接。參數Ramp- Up Period告訴JMeter達到最大線程數須要多長時間。假定共有10個線程,Ramp-Up Period100秒,那麼JMeter就會在100秒內啓動全部10個線程,並讓它們運轉起來。每個測試線程都會在上一個線程啓動10秒以後纔開始 運行。假定共有30個線程,Ramp-Up Period120秒,那麼線程啓動的間隔就爲4秒。性能

Ramp-Up參數不能設定得過短,不然在測試的初始階段會給予服務器過大的壓力。Ramp-Up參數也不能設定得太長,不然就會發生第一個線程已經執行完畢,而最後一個線程尚未啓動的狀況(除非測試人員指望這種特殊狀況發生)。測試

如何找到一個合適的Ramp-Up參數值?做者建議初始值能夠設定爲Ramp-Up=總線程數,後續再根據實際狀況適當增減。ui

二、調度器spa

在調度器控制面板中,能夠設定測試運行的"啓動時間""結束時間"。測試啓動後會一直等待,直到用戶設定的啓動時間。測試運行期間,JMeter 會在每一次循環結束後,檢查是否已經達到結束時間。若是已經達到告終束時間,JMeter就會終止測試運行,不然JMeter會繼續下一個測試循環。

另外,用戶還能夠設定"持續時間""啓動延遲"兩項參數。須要注意的是,"啓動延遲"會使"啓動時間"無效,而"持續時間"會使"結束時間"無效。

三、控制器

JMeter有兩種類型的控制器:採樣器和邏輯控制器,兩者結合起來驅動了測試進程。採樣器被JMeter用來向服務器發送請求。例如,當測試人員想往服務器發送一個HTTP請求時,就加入一個HTTP請求採樣器。測試人員還能夠經過爲採樣器添加配置元件來定製化請求。

用戶可使用邏輯控制器來控制JMeter的測試邏輯,好比什麼時候發送請求。舉一個例子:測試人員能夠插入交替控制器來輪流發送多個請求。

1)採樣器

採樣器告訴JMeter發送一個請求到指定服務器,並等待服務器的請求。採樣器會按照其在測試樹中的順序去執行,還能夠用邏輯控制器來改變採樣器運行的重複次數。

每一種採樣器都有多種參數可供設置。測試人員還能夠經過在測試計劃中加入一個或者多個配置元件,來進一步定製化採樣器。

若是測試人員打算向同一個服務器發送同一類請求,能夠考慮使用默認配置元件。每一類採樣器都有一個或多個對應的默認配置元件。必定記住應爲測試計劃添加一個監聽器,以便查看和存儲(存儲到磁盤)請求的結果。

若是測試人員想檢查服務器響應的內容,能夠爲對應採樣器添加斷言。例如,當對Web應用作壓力測試時,服務器雖然成功返回了"HTTP Response"代碼,可是頁面上可能會有錯誤,或者丟失了部分頁面片斷。針對這種狀況,測試人員能夠添加斷言來檢查特定的HTML標籤,或者常見的錯 誤信息等。JMeter容許在斷言中使用正則表達式。

2)邏輯控制器

邏輯控制器能夠幫助用戶控制JMeter的測試邏輯,特別是什麼時候發送請求。邏輯控制器能夠改變其子測試元件的請求執行順序。

四、監聽器

監聽器提供了對JMeter在測試期間收集到的信息的訪問方法。"圖形結果"監聽器會將系統響應時長繪製在一張圖片之中。"查看結果樹"監聽器會展現採樣器請求和響應的細節,還能以HTMLXML格式展現系統響應的基礎部分。其餘監聽器經過總結或者聚合方式展現信息。

另外,監聽器能夠將測試數據導入到文件之中,以供後續分析。全部監聽器都會提供一個輸入域,以便於用戶指定存儲測試數據的文件。監聽器還會提供一個 配置按鈕,用來配置存儲測試數據的哪些字段,以及選用的存儲格式(CSV或者XML)。讀者朋友須要注意的是,全部監聽器都保存一樣的數據,惟一的區別是 它們如何展現數據。

監聽器能夠在測試的任何地方添加,包括直接放在測試計劃之下。它們僅收集測試樹中相同或者更低級別測試元件的數據。

五、定時器

默認狀況下,JMeter線程在發送請求之間沒有間歇。建議爲線程組添加某種定時器,以便設定請求之間應該間隔多長時間。若是測試人員不設定這種延遲,JMeter可能會在短期內產生大量訪問請求,致使服務器被大量請求所淹沒。

定時器會讓做用域內的每個採樣器都在執行前等待一個固定時長。若是測試人員爲線程組添加了多個定時器,那麼JMeter會將這些定時器的時長疊加起來,共同影響做用域範圍內的採樣器。定時器能夠做爲採樣器或者邏輯控制器的子項,目的是隻影響做用域內的採樣器。

要在測試計劃中的某個位置添加暫停,測試人員可使用"Test Action"採樣器。

六、斷言

用戶可使用斷言來檢查從服務器得到的響應內容。經過斷言能夠測試服務器返回的響應與測試人員的指望是否相符。

例如,測試人員能夠斷言某個查詢的響應中包含特定的文字信息。測試人員可使用Perl格式的正則表達式來描述響應中應該包含的文字,或者它應該與整個響應相符。

測試人員能夠爲任何採樣器添加斷言。例如,測試人員能夠爲HTTP請求添加斷言,用於檢查文本""。接下來JMeter就會檢查該文本是否出如今HTTP響應中。若是JMeter不能找到該文本,那麼它就會將請求標記爲失敗。

須要注意的是,斷言會影響做用域內的全部採樣器。若是要讓斷言隻影響某個採樣器,須要將斷言做爲該採樣器的子項。

若是要查看斷言結果,能夠爲線程組添加"斷言結果"監聽器。失敗的斷言,也會在"查看結果樹""用表格查看結果"兩種監聽器中顯示。另外,在"Summary Report""聚合報告"中還會以錯誤百分率的形式統計。

七、配置元件

配置元件與採樣器緊密關聯。雖然配置元件並不發送請求(除了HTTP代理服務器例外),但它能夠添加或者修改請求。

配置元件僅對其所在的測試樹分支有效。例如,假設測試人員在一個簡單邏輯控制器中放置了一個HTTP Cookie管理器,那麼該HTTP Cookie管理器只對放置在簡單邏輯控制器內的其餘邏輯控制器生效

另外,相比父分支的配置元件,子分支內部的配置元件優先級更高。配置元件 "用戶定義的參數"會在測試的初始階段執行(不管它處於測試樹的哪一個位置)。

八、前置處理器

前置處理器會在採樣器發出請求以前作一些特殊操做。若是前置處理器附着在某個採樣器之下,那麼它只會在該採樣器運行以前執行。前置處理器一般用於在採樣器發出請求前修改採樣器的某些設置,或者更新某些變量的值(這些變量不在服務器響應中獲取值)。

九、後置處理器

後置處理器會在採樣器發出請求以後作一些特殊操做。若是後置處理器附着在某個採樣器之下,那麼它只會在該採樣器運行以後執行。後置處理器一般被用來處理服務器的響應數據,特別是服務器響應中提取數據。

 

最後,對於這麼多的部件,JMeter執行順序規則以下:

配置元件

前置處理器

定時器

採樣器

後置處理器(除非服務器響應爲空)

斷言(除非服務器響應爲空)

監聽器(除非服務器響應爲空)

只有看成用域內存在採樣器時,定時器、斷言、前置/後置處理器纔會被執行。邏輯控制器和採樣器按照在測試樹中出現的順序執行。其餘測試元件會依據自 身的做用域範圍來執行,另外還與測試元件所屬的類型有關(歸屬於同一類型的測試元件,會按照它們在測試樹中出現的順序來執行)。

相關文章
相關標籤/搜索