本文將對 JMeter 主要組件(主要涉及 Threads(Users)、Test Fragment、邏輯控制器、配置元件、定時器、前置處理器、Sampler、后置處理器、斷言、監聽器 十大組件)進行概要介紹,詳細使用方法會在后續文章中陸續介紹,敬請惠顧參閱。組件如下所示:
零、測試計划
測試計划是測試的起點,同時也是其他所有組件的容器。
一、Threads(Users)-線程組
每個測試需求的必備組件,是用來模擬用戶並發的組件。JMeter 的每個任務都是用線程來處理的。線程組界面如下所示:
線程數:請求並發的數量
Ramp-Up Period(in seconds):在多少秒內創建線程數中定義的所有線程。每秒並發數 = 線程數/RUP
循環次數:當前線程組中的測試腳本循環運行次數
PS:Threads(Users)下還有兩個線程組:setUp Thread Group(線程組運行前執行,主要用於初始化操作,類似於JUnit/TestNG的setUp)、tearDown Thread Group(線程組運行后執行,主要用於數據清理,類似於JUnit/TestNG的tearDown),此兩個線程組在后續實例中再詳細介紹。
二、Test Fragment
界面如下所示。暫時沒有用過(^_^),后續介紹。
三、邏輯控制器
邏輯控制器可以組織取樣器,做出復雜的測試用的HTTP請求,以此滿足測試需要。邏輯控制器如下所示:
四、配置元件
配置元件,同其名字一樣,只是配置一些默認的屬性和信息,供取樣器獲取所需要的各種配置信息,它不向服務器發送任何的請求。配置元件僅對其所在的測試樹分支有效。例如,HTTP請求默認值設置了服務器的名稱,那么它所在的測試分支內的HTTP請求的服務器名稱都是這個服務器,HTTP請求僅設置路徑就可以訪問網頁了。常用的配置如下圖框中所示元件:
PS:在執行順序方面有個例外,配置元件"用戶定義的變量"無論它處於測試樹的哪個位置,總是在測試的初始階段執行。所以個人建議把它放在線程組的開始部分。
五、定時器
定時器設置請求間的時間間隔。定時器類型如下所示:
六、前置處理器
前置處理器一般用來在發出請求(Request)前進行特殊的處理。例如:HTTP URL重寫修復符則可以實現URL重寫,當RUL中有sessionID 一類的session信息時,可以通過該處理器填充發出請求的實際的sessionID 。
七、Sampler
Sampler(取樣器)主要的執行組件。每一個取樣器都可以被監聽器監聽,並生成測試結果。采樣器也就是發送一個具體的請求到指定服務器,等待服務器的請求。通常情況下,采樣器會按照其在測試樹中的順序去執行,但是也會根據邏輯控制器來改變運行的次數和順序。取樣器列表如下所示:
八、后置處理器
后置處理器一般用來對采樣器發出請求后得到的服務器響應(Response)進行處理,一般用來提取響應中的特定數據。例如,XPath Extractor:可以提取響應數據中通過給定XPath 值獲得的數據;正則表達式提取器:可以利用正則表達式方便的提取測試時所需的數據,用以參數傳遞和斷言等。后置處理器列表如下:
九、斷言
斷言,判斷取樣器是否正常工作,判斷請求響應是否正確,判斷結果是否符合預期。
十、監聽器
監聽器主要用於收集整理測試結果,並將測試結果數據進行處理並展示出來,可以指定格式生成XML、CSV等形式的文件。查看結果樹,用表格查看結果,圖形結果...聚合報告等,都是我們經常會用到的元件。
組件執行順序(此順序參考網上的資料,若有錯誤之處,敬請大神指正,非常感謝):
在同一作用域名范圍內(不考慮邏輯控制器),測試計划中的元件按照如下順序執行。
(1)配置元件(config elements )
(2)前置處理程序(Per-processors)
(3)定時器(timers )
(4)取樣器(Sampler)
(5)后置處理程序(Post-processors) (除非Sampler 得到的返回結果為空)
(6)斷言(Assertions)(除非Sampler 得到的返回結果為空)
(7)監聽器(Listeners)(除非Sampler 得到的返回結果為空)