天天看點

JMeter學習之元件的作用域與執行順序

1.元件的作用域

JMeter中共有8類可被執行的元件(測試計劃與線程組不屬于元件),這些元件中,取樣器是典型的不與其它元件發生互動作用的元件,邏輯控制器隻對其子節點的取樣器有效,而其它元件(config elements 、timers 、post-processors、assertions、listeners、)需要與取樣器(sampler)等元件互動。

1)采樣器

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

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

如果測試人員打算向同一個伺服器發送同一類請求,可以考慮使用預設配置元件。每一類采樣器都有一個或多個對應的預設配置元件。一定記住應為測試計劃添加一個監聽器,以便檢視和存儲(存儲到磁盤)請求的結果。

如果測試人員想檢查伺服器響應的内容,可以為對應采樣器添加斷言。例如,當對Web應用做壓力測試時,伺服器雖然成功傳回了"HTTP Response"代碼,但是頁面上可能會有錯誤,或者丢失了部分頁面片段。針對這種情況,測試人員可以添加斷言來檢查特定的HTML标簽,或者常見的錯 誤資訊等。JMeter允許在斷言中使用正規表達式。

2)邏輯控制器

邏輯控制器可以幫助使用者控制JMeter的測試邏輯,特别是何時發送請求。邏輯控制器可以改變其子測試元件的請求執行順序。

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 得到的傳回結果為空)。

JMeter學習之元件的作用域與執行順序

咳咳~敲黑闆,看重點啦~

JMeter學習之元件的作用域與執行順序

關于執行順序,有三點需要注意:

* 前置處理器、後置處理器和斷言等元件隻能對 取樣器作用,是以,如果在它們的作用域内沒有任何取樣器,則不會被執行。

* 如果在同一作用域範圍内有多個同一類型的元件,則這些元件按照它們在測試計劃中的上下順序一次執行。

* 一個斷言在測試樹中是分等級的。如果它的父元件是請求,它就被應用于那個請求。如果它的父元件是控制器,它就影響所有那個控制器下的所有請求

版權聲明:本文為CSDN部落客「weixin_34101229」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。

原文連結:https://blog.csdn.net/weixin_34101229/article/details/92391890