JMeter--測(cè)試計(jì)劃的要素

這篇文章接上一篇(即 JMeter 第2篇)

文章里的每一句話都是我斟酌過的冀泻,我認(rèn)為需要有注釋或者插圖的地方都會(huì)有相應(yīng)的說明,因?yàn)樗侥芰栴}依然不能保證每一句話的正確性。更多的是作為參考。

3. 測(cè)試計(jì)劃的要素(Elements of a Test Plan)


本節(jié)描述測(cè)試計(jì)劃的不同部分躁劣。

最小測(cè)試將包括測(cè)試計(jì)劃、線程組和一個(gè)或多個(gè)采樣器(Samplers)库菲。


線程組和采樣器

?

3.0 測(cè)試計(jì)劃(Test Plan)


測(cè)試計(jì)劃對(duì)象有一個(gè)名為“函數(shù)測(cè)試模式(Functional Testing)”的復(fù)選框账忘。如果被選中,它將導(dǎo)致JMeter記錄每個(gè)示例從服務(wù)器返回的數(shù)據(jù)蝙昙。如果您在測(cè)試監(jiān)聽器中選擇了一個(gè)文件闪萄,那么該數(shù)據(jù)將被寫到文件中。如果您正在進(jìn)行一個(gè)小的運(yùn)行奇颠,以確保JMeter的配置正確败去,并且您的服務(wù)器正在返回預(yù)期的結(jié)果,那么這將非常有用烈拒。其結(jié)果是文件將迅速增長(zhǎng)圆裕,JMeter的性能將受到影響广鳍。如果你正在做壓力測(cè)試,這個(gè)選項(xiàng)應(yīng)該是關(guān)閉的(默認(rèn)是關(guān)閉的)吓妆。

如果您沒有將數(shù)據(jù)記錄到文件中赊时,這個(gè)選項(xiàng)沒有作用。

您還可以使用監(jiān)聽器(listener)上的Configuration按鈕來決定保存哪些字段行拢。

?

3.1 線程組(Thread Group)


線程組元素是任何測(cè)試計(jì)劃的起點(diǎn)祖秒。所有的控制器和采樣器都必須在一個(gè)線程組之下。其他元素舟奠,例如監(jiān)聽器竭缝,可以直接放在測(cè)試計(jì)劃下,在這種情況下沼瘫,它們將應(yīng)用于所有線程組抬纸。顧名思義,線程組元素控制JMeter用于執(zhí)行測(cè)試的線程數(shù)耿戚。線程組的控件允許您:

  • 設(shè)置線程數(shù)
  • 設(shè)置過渡時(shí)期(Ramp-Up Period)
  • 設(shè)置執(zhí)行測(cè)試的次數(shù)湿故。

每個(gè)線程將完全獨(dú)立于其他測(cè)試線程執(zhí)行測(cè)試計(jì)劃。多個(gè)線程用于模擬與服務(wù)器應(yīng)用程序的并發(fā)連接膜蛔。

過渡期間告訴JMeter要花多長(zhǎng)時(shí)間來“過渡”到所選線程的總數(shù)坛猪。如果使用了10個(gè)線程,并且加速周期是100秒飞几,那么JMeter將花費(fèi)100秒來啟動(dòng)和運(yùn)行所有10個(gè)線程砚哆。在前面的線程開始之后欢际,每個(gè)線程將啟動(dòng)10(100/10)秒蝗罗。如果有30個(gè)線程棺滞,并且加速周期為120秒,那么每個(gè)后續(xù)線程將被延遲4秒卵史。

在測(cè)試開始時(shí),需要足夠長(zhǎng)的時(shí)間來避免過大的工作負(fù)載搜立,并且足夠短以躯,最后的線程在第一個(gè)線程完成之前就開始運(yùn)行(除非一個(gè)線程想要這樣做)。

Ramp-up =線程的數(shù)量做上下調(diào)整啄踊。

默認(rèn)情況下忧设,線程組被配置為在其元素中循環(huán)一次。

線程組還提供一個(gè)調(diào)度器(scheduler)颠通。單擊線程組面板底部的復(fù)選框址晕,以啟用/禁用額外字段,您可以在其中輸入測(cè)試持續(xù)時(shí)間顿锰、啟動(dòng)延遲谨垃、運(yùn)行的開始和結(jié)束時(shí)間启搂。您可以配置持續(xù)時(shí)間(秒)(Duration (seconds))啟動(dòng)延遲(秒)(Startup Delay (seconds))來控制每個(gè)線程組的持續(xù)時(shí)間以及它開始的秒數(shù)。當(dāng)測(cè)試啟動(dòng)時(shí)刘陶,JMeter將在啟動(dòng)線程組的線程之前等待啟動(dòng)延遲(秒)胳赌,并運(yùn)行配置的持續(xù)時(shí)間(秒)。注意這兩個(gè)選項(xiàng)覆蓋了啟動(dòng)時(shí)間結(jié)束時(shí)間匙隔。

另外(盡管不推薦疑苫,因?yàn)椴惶`活)您可以使用另外兩個(gè)字段啟動(dòng)時(shí)間結(jié)束時(shí)間。當(dāng)測(cè)試開始時(shí)纷责,JMeter將在必要時(shí)等待缀匕,直到達(dá)到啟動(dòng)時(shí)間。在每個(gè)周期結(jié)束時(shí)碰逸,JMeter檢查是否達(dá)到了結(jié)束時(shí)間乡小,如果達(dá)到了,則停止運(yùn)行饵史,否則測(cè)試將繼續(xù)進(jìn)行直到循環(huán)結(jié)束满钟。

線程組

?

3.2 控制器(Controllers)


JMeter有兩種類型的控制器:采樣器和邏輯控制器。這些驅(qū)動(dòng)了測(cè)試的處理胳喷。

采樣器告訴JMeter向服務(wù)器發(fā)送請(qǐng)求湃番。例如,如果您想要JMeter發(fā)送一個(gè)HTTP請(qǐng)求吭露,請(qǐng)?zhí)砑右粋€(gè)HTTP請(qǐng)求采樣器吠撮。您還可以通過向采樣器添加一個(gè)或多個(gè)配置元素來定制一個(gè)請(qǐng)求。有關(guān)更多信息讲竿,請(qǐng)參見Samplers泥兰。

邏輯控制器允許您定制JMeter用來決定何時(shí)發(fā)送請(qǐng)求的邏輯。例如题禀,您可以添加一個(gè)Interleave邏輯控制器來在兩個(gè)HTTP請(qǐng)求采樣器之間進(jìn)行切換鞋诗。有關(guān)更多信息,請(qǐng)參見邏輯控制器迈嘹。

?

3.2.1 采樣器(Samplers)

采樣器告訴JMeter向服務(wù)器發(fā)送請(qǐng)求并等待響應(yīng)削彬。它們按照出現(xiàn)在樹中的順序進(jìn)行處理⌒阒伲控制器可用于修改一個(gè)采樣器的重復(fù)次數(shù)融痛。

jmeter的樣本器包含:

  • FTP Request
  • HTTP Request (can be used for SOAP or REST Webservice also)
  • JDBC Request
  • Java object request
  • JMS request
  • JUnit Test request
  • LDAP Request
  • Mail request
  • OS Process request
  • TCP request
Samplers

每個(gè)采樣器都有幾個(gè)屬性可以設(shè)置。您可以通過在測(cè)試計(jì)劃中添加一個(gè)或多個(gè)配置元素來進(jìn)一步定制一個(gè)采樣器神僵。
如果要向同一服務(wù)器發(fā)送同一類型的多個(gè)請(qǐng)求(例如雁刷,HTTP請(qǐng)求),請(qǐng)考慮使用缺省配置元素挑豌。每個(gè)控制器都有一個(gè)或多個(gè)默認(rèn)元素(參見下面)安券。

請(qǐng)記住在測(cè)試計(jì)劃中添加監(jiān)聽器墩崩,以便查看測(cè)試結(jié)果。

如果您想讓JMeter對(duì)您的請(qǐng)求的響應(yīng)執(zhí)行基本驗(yàn)證侯勉,請(qǐng)向采樣器添加一個(gè)斷言(Assertion)鹦筹。例如,在壓力測(cè)試web應(yīng)用程序時(shí)址貌,服務(wù)器可能返回一個(gè)成功的“HTTP響應(yīng)”代碼铐拐,但是頁(yè)面可能有錯(cuò)誤,或者可能缺少部分练对。您可以添加斷言來檢查某些HTML標(biāo)記遍蟋、常見錯(cuò)誤字符串等。JMeter允許您使用正則表達(dá)式創(chuàng)建這些斷言螟凭。

內(nèi)置邏輯控制器的列表(JMeter's built-in samplers)

?

3.2.2邏輯控制器(Logic Controllers)

邏輯控制器允許您定制JMeter用來決定何時(shí)發(fā)送請(qǐng)求的邏輯虚青。邏輯控制器可以更改來自其子元素的請(qǐng)求的順序。他們可以自己修改請(qǐng)求螺男,導(dǎo)致JMeter重復(fù)請(qǐng)求棒厘,等等。

要理解邏輯控制器對(duì)測(cè)試計(jì)劃的影響下隧,請(qǐng)考慮以下測(cè)試樹:

  • Test Plan
    ??* Thread Group
    ????* Once Only Controller
    ???????* Login Request (an HTTP Request)
    ????* Load Search Page (HTTP Sampler)
    ????* Interleave Controller
    ???????* Search "A" (HTTP Sampler)
    ???????* Search "B" (HTTP Sampler)
    ???????* HTTP default request (Configuration Element)
    ????* HTTP default request (Configuration Element)
    ????* Cookie Manager (Configuration Element)
    該測(cè)試樹在 JMeter 的顯示如下:
    test tree

關(guān)于這個(gè)測(cè)試的第一件事是登錄請(qǐng)求將只在第一次執(zhí)行奢人。后續(xù)的迭代將跳過它。這是由于僅一次控制器的影響淆院。

登錄后何乎,下一個(gè)取樣器將加載搜索頁(yè)面--Load Search Page(想象一個(gè)用戶登錄的web應(yīng)用程序,然后進(jìn)入搜索頁(yè)面進(jìn)行搜索)土辩。這只是一個(gè)簡(jiǎn)單的請(qǐng)求支救,沒有經(jīng)過任何邏輯控制器的過濾。
注意:Load Search Page在這里就是一個(gè) HTTP 請(qǐng)求脯燃。

加載搜索頁(yè)面之后搂妻,我們要進(jìn)行搜索蒙保。實(shí)際上辕棚,我們想做兩個(gè)不同的搜索。但是邓厕,我們希望在每次搜索之間重新加載搜索頁(yè)面本身逝嚎。我們可以通過4個(gè)簡(jiǎn)單的HTTP請(qǐng)求元素(加載搜索、搜索“A”详恼、加載搜索补君、搜索“B”)來實(shí)現(xiàn)這一點(diǎn)。相反昧互,我們使用Interleave Controller(交替控制器)挽铁,它在每次測(cè)試中傳遞一個(gè)子請(qǐng)求伟桅。它保持排序(也就是說,它不是隨機(jī)傳遞一個(gè)叽掘,而是“記住”它的子元素的位置)楣铁。交叉兩個(gè)子請(qǐng)求可能有點(diǎn)過了頭,但是很可能有8個(gè)或20個(gè)子請(qǐng)求更扁。

注意屬于Interleave控制器的HTTP請(qǐng)求默認(rèn)值盖腕。假設(shè)“Search A”和“Search B”共享相同的路徑信息(HTTP請(qǐng)求規(guī)范包括域、端口浓镜、方法溃列、協(xié)議、路徑和參數(shù)膛薛,以及其他可選項(xiàng))听隐。這是有意義的——這兩個(gè)都是搜索請(qǐng)求,攻擊相同的后端搜索引擎(比方說servlet或cgi-script)哄啄。我們可以將這些信息抽象為單個(gè)配置元素遵绰,而不是在路徑字段中使用相同的信息配置兩個(gè)HTTP Samplers。當(dāng)Interleave控制器“傳遞”來自“Search A”或“Search B”的請(qǐng)求時(shí)增淹,它將用HTTP默認(rèn)請(qǐng)求配置元素的值填充空格椿访。因此,我們?yōu)檫@些請(qǐng)求保留PATH字段為空虑润,并將這些信息放入Configuration元素中成玫。在這種情況下,這充其量只是一個(gè)小好處拳喻,但它展示了這個(gè)特性哭当。

樹中的下一個(gè)元素是另一個(gè)HTTP默認(rèn)請(qǐng)求(HTTP default request),這次添加到線程組本身冗澈。線程組有一個(gè)內(nèi)置的邏輯控制器钦勘,因此,它使用的配置元素與上面描述的完全一樣亚亲。它填入任何經(jīng)過的請(qǐng)求的空格彻采。在web測(cè)試中,在所有HTTP取樣器(HTTP Sampler )元素中保留域字段為空是非常有用的捌归,而不是肛响,將這些信息放到一個(gè)HTTP默認(rèn)請(qǐng)求元素中,并添加到線程組中惜索。通過這樣做特笋,您可以通過更改測(cè)試計(jì)劃中的一個(gè)字段,在不同的服務(wù)器上測(cè)試應(yīng)用程序巾兆。否則猎物,你必須編輯每一個(gè)采樣器虎囚。

最后一個(gè)元素是HTTP Cookie管理器。應(yīng)該將Cookie管理器添加到所有web測(cè)試中——否則JMeter將忽略Cookie蔫磨。通過在線程組級(jí)別添加它溜宽,我們確保所有HTTP請(qǐng)求將共享相同的cookie。

可以將邏輯控制器組合起來以實(shí)現(xiàn)各種結(jié)果质帅。請(qǐng)參閱內(nèi)置邏輯控制器的列表适揉。

?

3.2.3 測(cè)試片段(Test Fragments)

Test Fragment元素是存在于與Thread Group元素相同級(jí)別的測(cè)試計(jì)劃樹上的一種特殊類型的控制器。它與線程組的區(qū)別在于煤惩,它不會(huì)執(zhí)行嫉嘀,除非模塊控制器Include_Controller引用它。

這個(gè)元素純粹用于測(cè)試計(jì)劃中的代碼重用


Test Fragment

?

3.3 監(jiān)聽器(Listeners)


監(jiān)聽器提供對(duì)JMeter運(yùn)行時(shí)收集的有關(guān)測(cè)試用例的信息的訪問魄揉。圖結(jié)果監(jiān)聽器在圖上繪制響應(yīng)時(shí)間剪侮。“查看結(jié)果樹”監(jiān)聽器顯示采樣請(qǐng)求和響應(yīng)的細(xì)節(jié)洛退,并可以顯示響應(yīng)的基本HTML和XML表示瓣俯。其他監(jiān)聽器提供匯總信息或聚合信息。

此外兵怯,監(jiān)聽器可以將數(shù)據(jù)定向到文件彩匕,以便以后使用。JMeter中的每個(gè)監(jiān)聽器都提供一個(gè)字段媒区,用于指示要存儲(chǔ)數(shù)據(jù)的文件驼仪。還有一個(gè)配置按鈕,可用于選擇保存哪些字段袜漩,以及使用CSV還是XML格式绪爸。

監(jiān)聽器查看結(jié)果

注意,所有監(jiān)聽器都保存相同的數(shù)據(jù);唯一的區(qū)別在于數(shù)據(jù)在屏幕上顯示的方式宙攻。

監(jiān)聽器可以添加到測(cè)試中的任何地方奠货,包括直接在測(cè)試計(jì)劃下。他們將只從其同級(jí)和子級(jí)的元素收集數(shù)據(jù)座掘。

有幾個(gè)監(jiān)聽器與JMeter一起出現(xiàn)递惋。

?

3.4 定時(shí)器(Timers)


默認(rèn)情況下,JMeter線程按順序執(zhí)行采樣雹顺,不會(huì)暫停丹墨。我們建議您通過向線程組添加一個(gè)可用的計(jì)時(shí)器來指定延遲。如果不添加延遲嬉愧,JMeter可能會(huì)在很短的時(shí)間內(nèi)發(fā)出太多請(qǐng)求,從而使服務(wù)器不堪重負(fù)喉前。

計(jì)時(shí)器將導(dǎo)致JMeter在其范圍(scope)內(nèi)的每個(gè)采樣器之前延遲一定的時(shí)間没酣。

如果您選擇向一個(gè)線程組添加多個(gè)定時(shí)器王财,JMeter會(huì)在執(zhí)行計(jì)時(shí)器應(yīng)用程序的采樣器之前,將計(jì)時(shí)器暫停的時(shí)間加起來裕便。計(jì)時(shí)器可以作為采樣器或控制器的子級(jí)添加绒净,以限制應(yīng)用它們的采樣器。

要在測(cè)試計(jì)劃中的單個(gè)位置提供暫停偿衰,可以使用測(cè)試動(dòng)作(Test Action)采樣器挂疆。

scope: 3.10節(jié)
?

3.5 斷言(Assertions)


斷言允許您斷言從被測(cè)試的服務(wù)器接收的響應(yīng)的事實(shí)。使用斷言下翎,您實(shí)際上可以“測(cè)試”應(yīng)用程序正在返回預(yù)期的結(jié)果缤言。

例如,您可以斷言對(duì)查詢的響應(yīng)將包含某些特定的文本视事。您指定的文本可以是一個(gè)perl樣式的正則表達(dá)式胆萧,您可以指出響應(yīng)是包含文本,或者它應(yīng)該與整個(gè)響應(yīng)相匹配俐东。

您可以向任何采樣器(Sampler)添加斷言跌穗。例如,可以向HTTP請(qǐng)求添加一個(gè)斷言虏辫,該請(qǐng)求檢查文本“</HTML>”蚌吸。然后,JMeter將檢查該文本是否存在于HTTP響應(yīng)中砌庄。如果JMeter找不到文本套利,那么它將把它標(biāo)記為失敗的請(qǐng)求。

注意鹤耍,斷言適用于所有在其范圍內(nèi)(scope)的采樣器肉迫。若要將斷言限制為單個(gè)采樣器,請(qǐng)將斷言添加為采樣器的子級(jí)稿黄。

要查看斷言結(jié)果喊衫,請(qǐng)向線程組添加斷監(jiān)聽器。失敗的斷言也將出現(xiàn)在樹視圖和表監(jiān)聽器中杆怕,并將計(jì)數(shù)到錯(cuò)誤%年齡族购,例如在聚合和摘要報(bào)告中。

?

3.6 配置元件/素(Configuration Elements)


配置元件

配置元件與采樣器緊密配合陵珍。盡管它不發(fā)送請(qǐng)求(除了 HTTP(S) Test Script Recorder)寝杖,但它可以添加或修改請(qǐng)求。

配置元件只能從放置元素的樹分支中訪問互纯。例如,如果你把一個(gè)HTTP Cookie Manager放在一個(gè)簡(jiǎn)單的邏輯控制器,Cookie Manager只會(huì)訪問HTTP請(qǐng)求控制器將在簡(jiǎn)單的邏輯控制器(見圖1)瑟幕。Cookie管理器都可以訪問HTTP請(qǐng)求“Web Page 1”和“Web Page 2”,而不是“Web Page 3”。

此外,樹分支中的配置元素比“父”分支中的相同元素具有更高的優(yōu)先級(jí)只盹。例如辣往,我們定義了兩個(gè)HTTP請(qǐng)求默認(rèn)元素“Web Defaults 1”和“Web Defaults 2”。由于我們?cè)谘h(huán)控制器中放置了“Web Defaults 1”殖卑,因此只有“Web Page 2”可以訪問它站削。其他HTTP請(qǐng)求將使用“Web Defaults 2”,因?yàn)槲覀儗⑺旁诰€程組(所有其他分支的“父”)中孵稽。


配置元件

?

3.7 前置處理器元素(Pre-Processor Elements)


前置處理器

前置處理器在發(fā)出采樣請(qǐng)求之前執(zhí)行一些操作许起。如果前置處理器附加到采樣器元素,那么它將在采樣器元素運(yùn)行之前執(zhí)行菩鲜。前置處理器通常用于在示例請(qǐng)求運(yùn)行之前修改其設(shè)置园细,或者更新未從響應(yīng)文本中提取的變量。有關(guān)何時(shí)執(zhí)行前置處理器的詳細(xì)信息睦袖,請(qǐng)參閱scoping rules(3.10節(jié))珊肃。

?

3.8 后置處理器元素(Post-Processor Elements)


后置處理器在采樣請(qǐng)求完成后執(zhí)行一些操作。如果后置處理程序附加到采樣器元素馅笙,那么它將在采樣器元素運(yùn)行之后執(zhí)行伦乔。后置處理器通常用于處理響應(yīng)數(shù)據(jù),通常用于從中提取值董习。有關(guān)何時(shí)執(zhí)行后置處理器的詳細(xì)信息烈和,請(qǐng)參閱scoping rules(3.10節(jié))。

?

3.9 執(zhí)行順序(Execution order)


  • 配置元件/素(Configuration elements)
  • 前置處理器(Pre-Processors)
  • 定時(shí)器(Timers)
  • 采樣器(Sampler)
  • 后置處理器(Post-Processors (unless SampleResult is null))
  • 斷言(Assertions (unless SampleResult is null))
  • 監(jiān)聽器(Listeners (unless SampleResult is null))

請(qǐng)注意皿淋,定時(shí)器招刹、斷言、預(yù)處理器和后處理器只有在應(yīng)用它們的采樣器時(shí)才被處理窝趣。邏輯控制器和采樣器按照它們出現(xiàn)在樹中的順序進(jìn)行處理疯暑。其他測(cè)試元素根據(jù)找到它們的范圍和測(cè)試元素的類型進(jìn)行處理。[在類型中哑舒,元素按照它們出現(xiàn)在樹中的順序進(jìn)行處理]妇拯。

例如,在下面的測(cè)試計(jì)劃中:

  • Controller
    ?Post-Processor 1
    ?
    Sampler 1
    ?Sampler 2
    ?
    Timer 1
    ?Assertion 1
    ?
    Pre-Processor 1
    ?Timer 2
    ?
    Post-Processor 2

執(zhí)行的順序是:

Pre-Processor 1
Timer 1
Timer 2
Sampler 1
Post-Processor 1
Post-Processor 2
Assertion 1

Pre-Processor 1
Timer 1
Timer 2
Sampler 2
Post-Processor 1
Post-Processor 2
Assertion 1

?

3.10 范圍規(guī)則(Scoping Rules)


JMeter測(cè)試樹包含分層和有序的元素洗鸵。測(cè)試樹中的一些元素是嚴(yán)格的層次結(jié)構(gòu)(偵聽器越锈、配置元素、后處理器膘滨、前處理器甘凭、斷言、計(jì)時(shí)器)火邓,而一些元素主要是有序的(控制器丹弱、采樣器)德撬。當(dāng)您創(chuàng)建測(cè)試計(jì)劃時(shí),您將創(chuàng)建一個(gè)有序的示例請(qǐng)求列表(通過Samplers)蹈矮,它表示要執(zhí)行的一系列步驟砰逻。這些請(qǐng)求通常是在控制器中組織的鸣驱,這些控制器也是有序的泛鸟。給定以下測(cè)試樹:


test tree

請(qǐng)求的順序是,1踊东、2北滥、3、4闸翅。

有些控制器影響子元素的順序再芋,您可以在組件引用中閱讀這些特定的控制器

其他元素層次坚冀。例如济赎,斷言在測(cè)試樹中是分層的。如果它的父類是請(qǐng)求记某,那么它將被應(yīng)用到該請(qǐng)求司训。如果它的父類是控制器,那么它將影響該控制器的所有后代請(qǐng)求液南。在下面的測(cè)試樹中:

層次結(jié)構(gòu)示例

Assertion#1只應(yīng)用于請(qǐng)求1壳猜,Assertion#2應(yīng)用于請(qǐng)求2和3。

另一個(gè)例子滑凉,這次使用計(jì)時(shí)器:


復(fù)雜的示例

在本例中统扳,請(qǐng)求被命名為反映執(zhí)行它們的順序。計(jì)時(shí)器#1將應(yīng)用于請(qǐng)求2畅姊、3和4(注意咒钟,對(duì)于分層元素,順序是不相關(guān)的)若未。斷言#1只適用于請(qǐng)求3朱嘴。計(jì)時(shí)器#2將影響所有請(qǐng)求。

希望這些示例能夠清楚地說明配置(分層)元素是如何應(yīng)用的陨瘩。如果您想象每個(gè)請(qǐng)求都被傳遞到樹分支上腕够,傳遞給它的父分支,然后傳遞給它的父分支舌劳,等等帚湘,并且每次收集父分支的所有配置元素,那么您將看到它是如何工作的甚淡。

配置元素頭管理器大诸、Cookie管理器和授權(quán)管理器與配置默認(rèn)元素不同捅厂。配置默認(rèn)元素的設(shè)置被合并到采樣器可以訪問的一組值中。但是资柔,管理器的設(shè)置沒有合并焙贷。如果在采樣器的范圍內(nèi)有多個(gè)管理器,則只使用一個(gè)管理器贿堰,但是目前沒有辦法指定使用哪個(gè)管理器辙芍。

?

3.11 屬性和變量 (Properties and Variables)


JMeter屬性在JMeter.properties中定義(請(qǐng)參閱我的JMeter 第一篇文章第1.5節(jié)以了解更多細(xì)節(jié))。

屬性對(duì)于jmeter是全局的羹与,并且主要用于定義一些默認(rèn)的jmeter使用故硅。例如,屬性remote_hosts定義了JMeter遠(yuǎn)程運(yùn)行的服務(wù)器纵搁。屬性可以在測(cè)試計(jì)劃中引用——參見Functions——read a property——但是不能用于特定于線程的值吃衅。

JMeter變量對(duì)每個(gè)線程都是本地的。每個(gè)線程的值可能相同腾誉,也可能不同徘层。

如果一個(gè)變量被一個(gè)線程更新,那么只有該變量的線程副本被更改利职。例如趣效,正則表達(dá)式提取器后置處理器將根據(jù)其線程讀取的示例設(shè)置其變量,這些變量稍后可以被相同的線程使用眼耀。有關(guān)如何引用變量和函數(shù)的詳細(xì)信息英支,請(qǐng)參見函數(shù)和變量

注意哮伟,測(cè)試計(jì)劃(Test Plan)用戶定義的變量配置元素定義的值在啟動(dòng)時(shí)對(duì)整個(gè)測(cè)試計(jì)劃可用干花。如果同一個(gè)變量由多個(gè)UDV元素定義,那么最后一個(gè)變量將生效楞黄。一旦一個(gè)線程啟動(dòng)池凄,初始的變量集將被復(fù)制到每個(gè)線程。其他元素如用戶參數(shù)前置處理器或正則表達(dá)式提取器后置處理器可用于重新定義相同的變量(或創(chuàng)建新的變量)鬼廓。這些重新定義只適用于當(dāng)前線程肿仑。

setProperty函數(shù)可用于定義JMeter屬性。這些是測(cè)試計(jì)劃的全局變量碎税,因此可以用來在線程之間傳遞信息——這是需要的尤慰。

變量和屬性都是區(qū)分大小寫的。

?

3.12 使用變量來參數(shù)化測(cè)試 (Using Variables to parameterise tests)


變量不需要改變——它們可以定義一次雷蹂,如果不改變伟端,就不會(huì)改變值。因此匪煌,您可以將它們作為在測(cè)試計(jì)劃中經(jīng)常出現(xiàn)的表達(dá)式的縮寫责蝠〉辰恚或者對(duì)于在運(yùn)行過程中是常量的項(xiàng),但是在運(yùn)行之間可能會(huì)有所不同霜医。例如齿拂,主機(jī)名或線程組中的線程數(shù)。

在決定如何構(gòu)建測(cè)試計(jì)劃時(shí)肴敛,請(qǐng)注意哪些項(xiàng)目在運(yùn)行中是常量署海,但是在運(yùn)行之間可能會(huì)發(fā)生變化。為這些變量確定一些變量名——可能使用命名約定值朋,比如用C_K_前綴叹侄,或者只使用大寫字母巩搏,以區(qū)別于測(cè)試期間需要更改的變量昨登。還要考慮哪些項(xiàng)需要在線程中是本地的——例如計(jì)數(shù)器或使用正則表達(dá)式后處理器提取的值。您可能希望對(duì)它們使用不同的命名約定贯底。

例如丰辣,您可以在測(cè)試計(jì)劃中定義以下內(nèi)容:

HOST             www.example.com
THREADS          10
LOOPS            20

您可以將這些在測(cè)試計(jì)劃中引用為${HOST}${THREADS}等。如果以后想要更改主機(jī)禽捆,只需更改HOST變量的值笙什。對(duì)于少量的測(cè)試來說,這樣做很好胚想,但是在測(cè)試很多不同的組合時(shí)就變得單調(diào)乏味了琐凭。一種解決辦法是使用屬性來定義變量的值,例如:

HOST             ${__P(host,www.example.com)}
THREADS          ${__P(threads,10)}
LOOPS            ${__P(loops,20)}

然后浊服,您可以更改命令行上的一些或所有值统屈,如下所示:

jmeter … -Jhost=www3.example.org -Jloops=13

本文的原文出處

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末牙躺,一起剝皮案震驚了整個(gè)濱河市愁憔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌孽拷,老刑警劉巖吨掌,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異脓恕,居然都是意外死亡膜宋,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門炼幔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來秋茫,“玉大人,你說我怎么就攤上這事江掩⊙瑁” “怎么了乘瓤?”我有些...
    開封第一講書人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)策泣。 經(jīng)常有香客問我衙傀,道長(zhǎng),這世上最難降的妖魔是什么萨咕? 我笑而不...
    開封第一講書人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任统抬,我火速辦了婚禮,結(jié)果婚禮上危队,老公的妹妹穿的比我還像新娘聪建。我一直安慰自己,他們只是感情好茫陆,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開白布金麸。 她就那樣靜靜地躺著,像睡著了一般簿盅。 火紅的嫁衣襯著肌膚如雪挥下。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評(píng)論 1 308
  • 那天桨醋,我揣著相機(jī)與錄音棚瘟,去河邊找鬼。 笑死喜最,一個(gè)胖子當(dāng)著我的面吹牛偎蘸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瞬内,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼迷雪,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了遂鹊?” 一聲冷哼從身側(cè)響起振乏,我...
    開封第一講書人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎秉扑,沒想到半個(gè)月后慧邮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡舟陆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年误澳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秦躯。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡忆谓,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出踱承,到底是詐尸還是另有隱情倡缠,我是刑警寧澤哨免,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站昙沦,受9級(jí)特大地震影響琢唾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜盾饮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一采桃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧丘损,春花似錦普办、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至吏饿,卻和暖如春踪危,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背猪落。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留畴博,地道東北人笨忌。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像俱病,于是被迫代替她去往敵國(guó)和親官疲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容