1.元件的做用域正則表達式
JMeter中共有8類可被執行的元件(測試計劃與線程組不屬於元件),這些元件中,取樣器是典型的不與其它元件發生交互做用的元件,邏輯控制器只對其子節點的取樣器有效,而其它元件(config elements 、timers 、post-processors、assertions、listeners、)須要與取樣器(sampler)等元件交互。服務器
1)採樣器post
採樣器告訴JMeter發送一個請求到指定服務器,並等待服務器的請求。採樣器會按照其在測試樹中的順序去執行,還能夠用邏輯控制器來改變採樣器運行的重複次數。測試
每一種採樣器都有多種參數可供設置。測試人員還能夠經過在測試計劃中加入一個或者多個配置元件,來進一步定製化採樣器。線程
若是測試人員打算向同一個服務器發送同一類請求,能夠考慮使用默認配置元件。每一類採樣器都有一個或多個對應的默認配置元件。必定記住應爲測試計劃添加一個監聽器,以便查看和存儲(存儲到磁盤)請求的結果。代理
若是測試人員想檢查服務器響應的內容,能夠爲對應採樣器添加斷言。例如,當對Web應用作壓力測試時,服務器雖然成功返回了"HTTP Response"代碼,可是頁面上可能會有錯誤,或者丟失了部分頁面片斷。針對這種狀況,測試人員能夠添加斷言來檢查特定的HTML標籤,或者常見的錯 誤信息等。JMeter容許在斷言中使用正則表達式。blog
2)邏輯控制器圖片
邏輯控制器能夠幫助用戶控制JMeter的測試邏輯,特別是什麼時候發送請求。邏輯控制器能夠改變其子測試元件的請求執行順序。element
3)監聽器作用域
監聽器提供了對JMeter在測試期間收集到的信息的訪問方法。"圖形結果"監聽器會將系統響應時長繪製在一張圖片之中。"查看結果樹"監聽器會展現採樣器請求和響應的細節,還能以HTML和XML格式展現系統響應的基礎部分。其餘監聽器經過總結或者聚合方式展現信息。
另外,監聽器能夠將測試數據導入到文件之中,以供後續分析。全部監聽器都會提供一個輸入域,以便於用戶指定存儲測試數據的文件。監聽器還會提供一個 配置按鈕,用來配置存儲測試數據的哪些字段,以及選用的存儲格式(CSV或者XML)。讀者朋友須要注意的是,全部監聽器都保存一樣的數據,惟一的區別是 它們如何展現數據。
監聽器能夠在測試的任何地方添加,包括直接放在測試計劃之下。它們僅收集測試樹中相同或者更低級別測試元件的數據。
4)定時器
默認狀況下,JMeter線程在發送請求之間沒有間歇。建議爲線程組添加某種定時器,以便設定請求之間應該間隔多長時間。若是測試人員不設定這種延遲,JMeter可能會在短期內產生大量訪問請求,致使服務器被大量請求所淹沒。
定時器會讓做用域內的每個採樣器都在執行前等待一個固定時長。若是測試人員爲線程組添加了多個定時器,那麼JMeter會將這些定時器的時長疊加起來,共同影響做用域範圍內的採樣器。定時器能夠做爲採樣器或者邏輯控制器的子項,目的是隻影響做用域內的採樣器。
5)斷言
用戶可使用斷言來檢查從服務器得到的響應內容。經過斷言能夠測試服務器返回的響應與測試人員的指望是否相符。
須要注意的是,斷言會影響做用域內的全部採樣器。若是要讓斷言隻影響某個採樣器,須要將斷言做爲該採樣器的子項。
若是要查看斷言結果,能夠爲線程組添加"斷言結果"監聽器。失敗的斷言,也會在"查看結果樹"和"用表格查看結果"兩種監聽器中顯示。另外,在"Summary Report"和"聚合報告"中還會以錯誤百分率的形式統計。
6)配置元件
配置元件與採樣器緊密關聯。雖然配置元件並不發送請求(除了HTTP代理服務器例外),但它能夠添加或者修改請求。
配置元件僅對其所在的測試樹分支有效。例如,假設測試人員在一個簡單邏輯控制器中放置了一個HTTP Cookie管理器,那麼該HTTP Cookie管理器只對放置在簡單邏輯控制器內的其餘邏輯控制器生效
7)前置處理器
前置處理器會在採樣器發出請求以前作一些特殊操做。若是前置處理器附着在某個採樣器之下,那麼它只會在該採樣器運行以前執行。前置處理器一般用於在採樣器發出請求前修改採樣器的某些設置,或者更新某些變量的值(這些變量不在服務器響應中獲取值)。
8)後置處理器
後置處理器會在採樣器發出請求以後作一些特殊操做。若是後置處理器附着在某個採樣器之下,那麼它只會在該採樣器運行以後執行。後置處理器一般被用來處理服務器的響應數據,特別是服務器響應中提取數據。
2.元件的執行順序
瞭解了元件有做用域以後,來看看元件的執行順序,元件執行順序的規則很簡單,在同一做用域名範圍內,測試計劃中的元件按照以下順序執行。
(1)配置元件(config elements )
(2)前置處理程序(Per-processors)
(3)定時器(timers )
(4)取樣器(Sampler)
(5)後置處理程序(Post-processors) (除非Sampler 獲得的返回結果爲空)。
(6)斷言(Assertions)(除非Sampler 獲得的返回結果爲空)。
(7)監聽器(Listeners)(除非Sampler 獲得的返回結果爲空)。
咳咳~敲黑板,看重點啦~
關於執行順序,有三點須要注意:
* 前置處理器、後置處理器和斷言等元件只能對 取樣器做用,所以,若是在它們的做用域內沒有任何取樣器,則不會被執行。
* 若是在同一做用域範圍內有多個同一類型的元件,則這些元件按照它們在測試計劃中的上下順序一次執行。
* 一個斷言在測試樹中是分等級的。若是它的父元件是請求,它就被應用於那個請求。若是它的父元件是控制器,它就影響全部那個控制器下的全部請求