天天看點

jMeter Transaction Controller 學習筆記

JMeter 的事務控制器是一個非常友善的工具,用于組織測試的不同部分并确定這些部分将如何出現在報告中。正如 Apache JMeter 的文檔中所述:“事務控制器生成一個額外的樣本,用于測量執行嵌套測試元素所花費的總時間。”

但這意味着什麼?這個“額外樣本”對您的 BlazeMeter 報告有什麼影響?

如果您還不是非常熟悉這些功能,那麼僅僅因為它是一個抽象的概念,可能會讓人有點困惑。為了揭開這個話題的神秘面紗,我們将通過展示結果的各種示例來詳細了解此功能,以準确了解它在不同場景中的行為。

這裡讨論的所有内容都将圍繞這個“生成父樣本”的小複選框:

jMeter Transaction Controller 學習筆記

Creating a Basic JMeter Script

為了示範事務控制器及其父示例如何工作,讓我們首先建立一個非常基本的 JMeter 腳本。 我們需要這個腳本包含在這個實驗中的是:

A single Thread Group

A single Transaction Controller

Two HTTP Request samplers

A View Results Tree listener

将兩個 HTTP 請求采樣器放在事務控制器中,給每個采樣器一個唯一的名稱(我的是“标簽 1”和“标簽 2”),如下所示:

jMeter Transaction Controller 學習筆記

事務控制器将為我們提供其中所有内容(我們的兩個采樣器)的執行時間,合并為一個“事務”。

讓我們看看我們如何調整這個事務控制器來從測試報告中獲得我們想要的。

Scenario 1: No Parent Sample

對于我們的第一個實驗,我們将設定我們的事務控制器,以便通過確定“生成父樣本”框未選中(禁用)來生成任何父樣本:

jMeter Transaction Controller 學習筆記

我們看到了兩個采樣器,但有三個标簽。 第三個标簽是我們的“父樣本”,即事務控制器本身。

不可避免的下一個問題當然是:我們不是禁用了生成父樣本嗎? 我們确實這樣做了,是以父樣本顯示為附加的正常采樣器,而不是實際的父樣本。 别擔心——當你看到第二個場景時,這會更有意義!

接下來,讓我們在 BlazeMeter 中運作此測試,然後檢視請求統計報告以了解标簽的顯示方式:

jMeter Transaction Controller 學習筆記

就像檢視結果樹一樣,我們有三個标簽,第三個代表事務控制器本身。

這是什麼意思?

讓我們回到 JMeter 文檔的描述:“事務控制器生成一個額外的樣本,用于測量執行嵌套測試元素所花費的總時間。”

換句話說,測試為兩者生成了名額(平均響應、平均命中數/秒等):

事務控制器的各個内容(“标簽 1”和“标簽 2”)。

兩個标簽的組合;換句話說,從頭到尾的完整“交易”,顯示為第三項。

這很友善,因為它告訴我們事務控制器内所有内容的名額(包裝起來就像是一個采樣器),以及每個所述内容的名額。

結論:如果我們不啟用父樣本,則會報告整個交易和交易内容(子項)的名額。

Scenario 2: Generate Parent Sample

如果我們勾上:

jMeter Transaction Controller 學習筆記

啟用“生成父樣本”選項現在隻給我們一個标簽而不是三個,它本身有兩個子标簽——我們的兩個采樣器。

父采樣器現在顯示為包含子采樣器的父采樣器,而不是單獨顯示為普通采樣器。 是以,如果我們通過選中該框“生成父樣本”,則意味着父樣本将作為父樣本出現在報告中,而不是作為第三個單獨的項目。

将複選框視為“将父級視為報告中的實際父級”。 現在讓我們看看請求統計報告是如何變化的:

jMeter Transaction Controller 學習筆記

一個标簽——就是這樣!

生成父樣本意味着,出于報告目的,JMeter 将僅報告組合事務的名額; 它不會報告有關内容的詳細資訊。

結論:生成父樣本将確定僅針對事務控制器的組合内容報告名額,而不針對其中的單個内容報告名額。

Advantages and Disadvantages of Generating a Parent Sample

您是否要生成父樣本取決于您要為報告包含或排除的内容。考慮時請記住以下幾點:

如果您的腳本有許多事務控制器,每個事務控制器中都有許多采樣器,則生成父樣本可以幫助整理報告。

生成父樣本會使故障排除/調試變得不必要地困難。考慮到,在測試報告中,如果一個采樣器失敗,則整個事務控制器都将失敗,因為所有内容都報告為一個标簽。該報告不會指出哪個特定項目失敗。是以,禁用父樣本有助于識别故障點。

如果生成父采樣器,測試報告會将事務控制器的内容視為“嵌入式資源”。 (這不僅适用于 BlazeMeter,而且适用于 JMeter 本身。)這是可以了解的誤導。例如,如果您的測試遇到錯誤,您可能會發現由于事務控制器内的采樣器失敗而實際上發生的嵌入式資源的錯誤顯示。這再次阻礙了故障排除,是以在檢視任何此類錯誤時禁用生成父樣本。

不生成父樣本可能會扭曲某些名額的報告。

事務控制器生成一個額外的樣本,用于測量執行嵌套測試元素所花費的總時間。

注意:選中“在生成的樣本中包括定時器和前後處理器的持續時間”複選框時,時間包括控制器範圍内的所有處理,而不僅僅是樣本。

有兩種操作模式:

(1) 在嵌套樣本之後添加額外樣本

(2) 附加樣本被添加為嵌套樣本的父級

生成的采樣時間包括嵌套采樣器的所有時間,不包括預設(自版本 2.11 起)計時器和前/後處理器的處理時間,除非選中複選框“在生成的示例中包含計時器和前後處理器的持續時間”。根據時鐘分辨率,它可能比單個采樣器加定時器的總和稍長。時鐘可能會在控制器記錄開始時間之後但在第一個樣本開始之前滴答作響。最後同樣如此。

生成的樣本隻有在它的所有子樣本都成功時才被認為是成功的。

在父模式下,單個樣本仍然可以在樹視圖偵聽器中看到,但不再作為單獨的條目出現在其他偵聽器中。此外,子樣本不會出現在 CSV 日志檔案中,但可以儲存到 XML 檔案中。

在父模式下,可以将斷言(等)添加到事務控制器。但是,預設情況下,它們将應用于單個樣本和整個交易樣本。要限制斷言的範圍,請使用簡單控制器來包含示例,并将斷言添加到簡單控制器。父模式控制器目前不正确支援任一類型的嵌套事務控制器。