一、Jmeter重要組件:
1)配置元件---Config Element:
用於初始化默認值和變量,以便后續采樣器使用。配置元件大其作用域的初始階段處理,配置元件僅對其所在的測試樹分支有效,如,在同一個作用域的任何采樣器前。
2)前置處理器--- Pre Processors:
前置處理器會在采樣器發出請求之前做一些特殊操作。如果前置處理器附着在某個采樣器之下,那么它只會在該采樣器運行之前執行。前置處理器通常用於在采樣器發出請求前修改采樣器的某些設置,或者更新某些變量的值(這些變量不在服務器響應中獲取值)。
3) 計時器---Timer:
定時器會讓作用域內的每一個采樣器都在執行前等待一個固定時長,如果不設定這種延遲,JMeter可能會在短時間內產生大量訪問請求,導致服務器被大量請求所淹沒。如果為線程組添加了多個定時器,那么JMeter會將這些定時器的時長疊加起來,共同影響作用域范圍內的采樣器。定時器可以作為采樣器或者邏輯控制器的子項,目的是只影響作用域內的采樣器。
4) 采樣器---sampler:
采樣器告訴JMeter發送一個請求到指定服務器,並等待服務器的請求。采樣器會按照其在測試樹中的順序去執行,還可以用邏輯控制器來改變采樣器運行的重復次數。
5)后置處理器---Post Processors:
后置處理器會在采樣器發出請求之后做一些特殊操作。如果后置處理器附着在某個采樣器之下,那么它只會在該采樣器運行之后執行。后置處理器通常被用來處理服務器的響應數據,特別是服務器響應中提取數據。
6)斷言---Assertions:
用戶可以使用斷言來檢查從服務器獲得的響應內容。通過斷言可以測試服務器返回的響應與測試人員的期望是否相符
7)監聽器---Listener:
監聽器提供了對JMeter在測試期間收集到的信息的訪問方法。"圖形結果"監聽器會將系統響應時長繪制在一張圖片之中。"查看結果樹"監聽器會展示采樣器請求和響應的細節,還可以將測試數據導入到文件之中,以供后續分析。
8) 邏輯控制器---Controller:
邏輯控制器可以幫助用戶控制JMeter的測試邏輯,特別是何時發送請求。邏輯控制器可以改變其子測試元件的請求執行順序。
二、組件執行順序:
測試計划的元素執行是有序的,通過以下方式執行:
1–配置元件(Config Element)
2–前置處理器(Pre Processors)
3–定時器(Timer)
4–取樣器(sampler)
5–后置處理器(Post Processors,只在有結果可用情況下執行)
6–斷言(Assertions,只在有結果可用情況下執行)
7–監聽器(Listener,只在有結果可用情況下執行)
三、組件作用域:
元件收集其作用范圍的每一個sampler元件的信息並呈現,在jmeter中,元件的作用域是靠測試計划的的樹型結構中元件的父子關系來確定的,作用域的原則是:
- 采樣器(sampler):元件不和其它元件相互作用,因此不存在作用域的問題。
- 邏輯控制器(Logic Controller):元件只對其子節點中的取樣器 和 邏輯控制器作用。
- 除采樣器 和 邏輯控制器 元件外,其他6類元件,如果是某個sampler的子節點,則該元件只對其父子節點起作用。
- 除采樣器和邏輯控制器元件外的其他6類元件,如果其父節點不是sampler ,則其作用域是該元件父節點下的其他所有后代節點(包括子節點,子節點的子節點等)。
四、特殊說明:
配置元件(Config Elemnet)-->用戶自定義變量組件(User Defined Variables):這個組件不管放在哪個位置,它定義的變量都會被整個線程所共享。
例如:
下面這個例子,測試計划定義如下:
1、定義了三個sampler:one、Debug Sampler、two
2、在one下面定義了一個用戶自定義變量:在這里添加了一個變量,名為hello,值為world
3、一個監聽器:查看結果樹
目的:測試在sampler one下定義的變量是否能被sampler two和debug sampler所引用
one:
User Defined Variables:
two:
運行結果:
由上可知:在one下面定義的用戶變量,在debug sampler和two處都能正常使用。
參考:
http://www.cnblogs.com/fnng/archive/2012/12/27/2836506.html