jMeter Transaction Controller 学习笔记
JMeter 的事務(wù)控制器是一個(gè)非常方便的工具,用于組織測試的不同部分并確定這些部分將如何出現(xiàn)在報(bào)告中。正如 Apache JMeter 的文檔中所述:“事務(wù)控制器生成一個(gè)額外的樣本,用于測量執(zhí)行嵌套測試元素所花費(fèi)的總時(shí)間。”
但這意味著什么?這個(gè)“額外樣本”對(duì)您的 BlazeMeter 報(bào)告有什么影響?
如果您還不是非常熟悉這些功能,那么僅僅因?yàn)樗且粋€(gè)抽象的概念,可能會(huì)讓人有點(diǎn)困惑。為了揭開這個(gè)話題的神秘面紗,我們將通過展示結(jié)果的各種示例來詳細(xì)了解此功能,以準(zhǔn)確了解它在不同場景中的行為。
這里討論的所有內(nèi)容都將圍繞這個(gè)“生成父樣本”的小復(fù)選框:
Creating a Basic JMeter Script
為了演示事務(wù)控制器及其父示例如何工作,讓我們首先創(chuàng)建一個(gè)非常基本的 JMeter 腳本。 我們需要這個(gè)腳本包含在這個(gè)實(shí)驗(yàn)中的是:
- A single Thread Group
- A single Transaction Controller
- Two HTTP Request samplers
- A View Results Tree listener
將兩個(gè) HTTP 請(qǐng)求采樣器放在事務(wù)控制器中,給每個(gè)采樣器一個(gè)唯一的名稱(我的是“標(biāo)簽 1”和“標(biāo)簽 2”),如下所示:
接下來,將每個(gè)采樣器配置為只需點(diǎn)擊 blazedemo.com:
事務(wù)控制器將為我們提供其中所有內(nèi)容(我們的兩個(gè)采樣器)的執(zhí)行時(shí)間,合并為一個(gè)“事務(wù)”。
讓我們看看我們?nèi)绾握{(diào)整這個(gè)事務(wù)控制器來從測試報(bào)告中獲得我們想要的。
Scenario 1: No Parent Sample
對(duì)于我們的第一個(gè)實(shí)驗(yàn),我們將設(shè)置我們的事務(wù)控制器,以便通過確保“生成父樣本”框未選中(禁用)來生成任何父樣本:
保存測試計(jì)劃,然后在執(zhí)行測試時(shí)觀察查看結(jié)果樹偵聽器。 注意我們的兩個(gè)采樣器是如何顯示的:
我們看到了兩個(gè)采樣器,但有三個(gè)標(biāo)簽。 第三個(gè)標(biāo)簽是我們的“父樣本”,即事務(wù)控制器本身。
不可避免的下一個(gè)問題當(dāng)然是:我們不是禁用了生成父樣本嗎? 我們確實(shí)這樣做了,因此父樣本顯示為附加的正常采樣器,而不是實(shí)際的父樣本。 別擔(dān)心——當(dāng)你看到第二個(gè)場景時(shí),這會(huì)更有意義!
接下來,讓我們?cè)?BlazeMeter 中運(yùn)行此測試,然后查看請(qǐng)求統(tǒng)計(jì)報(bào)告以了解標(biāo)簽的顯示方式:
就像查看結(jié)果樹一樣,我們有三個(gè)標(biāo)簽,第三個(gè)代表事務(wù)控制器本身。
這是什么意思?
讓我們回到 JMeter 文檔的描述:“事務(wù)控制器生成一個(gè)額外的樣本,用于測量執(zhí)行嵌套測試元素所花費(fèi)的總時(shí)間。”
換句話說,測試為兩者生成了指標(biāo)(平均響應(yīng)、平均命中數(shù)/秒等):
事務(wù)控制器的各個(gè)內(nèi)容(“標(biāo)簽 1”和“標(biāo)簽 2”)。
兩個(gè)標(biāo)簽的組合;換句話說,從頭到尾的完整“交易”,顯示為第三項(xiàng)。
這很方便,因?yàn)樗嬖V我們事務(wù)控制器內(nèi)所有內(nèi)容的指標(biāo)(包裝起來就像是一個(gè)采樣器),以及每個(gè)所述內(nèi)容的指標(biāo)。
結(jié)論:如果我們不啟用父樣本,則會(huì)報(bào)告整個(gè)交易和交易內(nèi)容(子項(xiàng))的指標(biāo)。
Scenario 2: Generate Parent Sample
如果我們勾上:
腳本在其他方面保持不變; 我們只檢查框,僅此而已。 再次保存測試計(jì)劃,運(yùn)行測試,并觀察查看結(jié)果樹監(jiān)聽器:
看看它是如何改變的? 我們現(xiàn)在只看到一個(gè)標(biāo)簽,我們可以點(diǎn)擊它展開如下:
啟用“生成父樣本”選項(xiàng)現(xiàn)在只給我們一個(gè)標(biāo)簽而不是三個(gè),它本身有兩個(gè)子標(biāo)簽——我們的兩個(gè)采樣器。
父采樣器現(xiàn)在顯示為包含子采樣器的父采樣器,而不是單獨(dú)顯示為普通采樣器。 因此,如果我們通過選中該框“生成父樣本”,則意味著父樣本將作為父樣本出現(xiàn)在報(bào)告中,而不是作為第三個(gè)單獨(dú)的項(xiàng)目。
將復(fù)選框視為“將父級(jí)視為報(bào)告中的實(shí)際父級(jí)”。 現(xiàn)在讓我們看看請(qǐng)求統(tǒng)計(jì)報(bào)告是如何變化的:
一個(gè)標(biāo)簽——就是這樣!
生成父樣本意味著,出于報(bào)告目的,JMeter 將僅報(bào)告組合事務(wù)的指標(biāo); 它不會(huì)報(bào)告有關(guān)內(nèi)容的詳細(xì)信息。
結(jié)論:生成父樣本將確保僅針對(duì)事務(wù)控制器的組合內(nèi)容報(bào)告指標(biāo),而不針對(duì)其中的單個(gè)內(nèi)容報(bào)告指標(biāo)。
Advantages and Disadvantages of Generating a Parent Sample
您是否要生成父樣本取決于您要為報(bào)告包含或排除的內(nèi)容。考慮時(shí)請(qǐng)記住以下幾點(diǎn):
如果您的腳本有許多事務(wù)控制器,每個(gè)事務(wù)控制器中都有許多采樣器,則生成父樣本可以幫助整理報(bào)告。
生成父樣本會(huì)使故障排除/調(diào)試變得不必要地困難。考慮到,在測試報(bào)告中,如果一個(gè)采樣器失敗,則整個(gè)事務(wù)控制器都將失敗,因?yàn)樗袃?nèi)容都報(bào)告為一個(gè)標(biāo)簽。該報(bào)告不會(huì)指出哪個(gè)特定項(xiàng)目失敗。因此,禁用父樣本有助于識(shí)別故障點(diǎn)。
如果生成父采樣器,測試報(bào)告會(huì)將事務(wù)控制器的內(nèi)容視為“嵌入式資源”。 (這不僅適用于 BlazeMeter,而且適用于 JMeter 本身。)這是可以理解的誤導(dǎo)。例如,如果您的測試遇到錯(cuò)誤,您可能會(huì)發(fā)現(xiàn)由于事務(wù)控制器內(nèi)的采樣器失敗而實(shí)際上發(fā)生的嵌入式資源的錯(cuò)誤顯示。這再次阻礙了故障排除,因此在查看任何此類錯(cuò)誤時(shí)禁用生成父樣本。
不生成父樣本可能會(huì)扭曲某些指標(biāo)的報(bào)告。
事務(wù)控制器生成一個(gè)額外的樣本,用于測量執(zhí)行嵌套測試元素所花費(fèi)的總時(shí)間。
注意:選中“在生成的樣本中包括定時(shí)器和前后處理器的持續(xù)時(shí)間”復(fù)選框時(shí),時(shí)間包括控制器范圍內(nèi)的所有處理,而不僅僅是樣本。
有兩種操作模式:
(1) 在嵌套樣本之后添加額外樣本
(2) 附加樣本被添加為嵌套樣本的父級(jí)
生成的采樣時(shí)間包括嵌套采樣器的所有時(shí)間,不包括默認(rèn)(自版本 2.11 起)計(jì)時(shí)器和前/后處理器的處理時(shí)間,除非選中復(fù)選框“在生成的示例中包含計(jì)時(shí)器和前后處理器的持續(xù)時(shí)間”。根據(jù)時(shí)鐘分辨率,它可能比單個(gè)采樣器加定時(shí)器的總和稍長。時(shí)鐘可能會(huì)在控制器記錄開始時(shí)間之后但在第一個(gè)樣本開始之前滴答作響。最后同樣如此。
生成的樣本只有在它的所有子樣本都成功時(shí)才被認(rèn)為是成功的。
在父模式下,單個(gè)樣本仍然可以在樹視圖偵聽器中看到,但不再作為單獨(dú)的條目出現(xiàn)在其他偵聽器中。此外,子樣本不會(huì)出現(xiàn)在 CSV 日志文件中,但可以保存到 XML 文件中。
在父模式下,可以將斷言(等)添加到事務(wù)控制器。但是,默認(rèn)情況下,它們將應(yīng)用于單個(gè)樣本和整個(gè)交易樣本。要限制斷言的范圍,請(qǐng)使用簡單控制器來包含示例,并將斷言添加到簡單控制器。父模式控制器當(dāng)前不正確支持任一類型的嵌套事務(wù)控制器。
更多Jerry的原創(chuàng)文章,盡在:“汪子熙”:
總結(jié)
以上是生活随笔為你收集整理的jMeter Transaction Controller 学习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三国杀张让好不好用?三国杀张让攻略
- 下一篇: jMeter 用户自定义变量的存储方式