您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源性能測(cè)試工具 > Jmeter
JMeter常用測(cè)試元件
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2016/11/11 10:36:47 ] 推薦標(biāo)簽:Jmeter 性能測(cè)試工具

  線程組
  程組是任何測(cè)試計(jì)劃的起點(diǎn),所有的邏輯控制器和采樣器都必須放在線程組之下。其他的測(cè)試元件(如監(jiān)聽(tīng)器)可以被直接放在測(cè)試計(jì)劃之下,這些測(cè)試元件 對(duì)所有線程組都生效。線程組像它的名字所描述的那樣,被用來(lái)管理執(zhí)行性能測(cè)試所需的JMeter線程。用戶通過(guò)線程組的控制面板可以:
  設(shè)置線程數(shù)量。
  設(shè)置線程啟動(dòng)周期。
  設(shè)置執(zhí)行測(cè)試腳本的循環(huán)次數(shù)。
  每一個(gè)JMeter線程都會(huì)完整地執(zhí)行測(cè)試計(jì)劃,而且它們之間是完全獨(dú)立運(yùn)行的。這種多線程機(jī)制被用來(lái)模擬服務(wù)器應(yīng)用的并發(fā)連接。參數(shù)Ramp- Up Period告訴JMeter達(dá)到大線程數(shù)需要多長(zhǎng)時(shí)間。假定共有10個(gè)線程,Ramp-Up Period為100秒,那么JMeter會(huì)在100秒內(nèi)啟動(dòng)所有10個(gè)線程,并讓它們運(yùn)轉(zhuǎn)起來(lái)。每一個(gè)測(cè)試線程都會(huì)在上一個(gè)線程啟動(dòng)10秒之后才開(kāi)始 運(yùn)行。假定共有30個(gè)線程,Ramp-Up Period為120秒,那么線程啟動(dòng)的間隔為4秒。
  Ramp-Up參數(shù)不能設(shè)定得太短,否則在測(cè)試的初始階段會(huì)給予服務(wù)器過(guò)大的壓力。Ramp-Up參數(shù)也不能設(shè)定得太長(zhǎng),否則會(huì)發(fā)生第一個(gè)線程已經(jīng)執(zhí)行完畢,而后一個(gè)線程還沒(méi)有啟動(dòng)的情況(除非測(cè)試人員期望這種特殊情況發(fā)生)。
  如何找到一個(gè)合適的Ramp-Up參數(shù)值?作者建議初始值可以設(shè)定為Ramp-Up=總線程數(shù),后續(xù)再根據(jù)實(shí)際情況適當(dāng)增減。
  調(diào)度器
  在調(diào)度器控制面板中,可以設(shè)定測(cè)試運(yùn)行的"啟動(dòng)時(shí)間"和"結(jié)束時(shí)間"。測(cè)試啟動(dòng)后會(huì)一直等待,直到用戶設(shè)定的啟動(dòng)時(shí)間。測(cè)試運(yùn)行期間,JMeter 會(huì)在每一次循環(huán)結(jié)束后,檢查是否已經(jīng)達(dá)到結(jié)束時(shí)間。如果已經(jīng)達(dá)到了結(jié)束時(shí)間,JMeter會(huì)終止測(cè)試運(yùn)行,否則JMeter會(huì)繼續(xù)下一個(gè)測(cè)試循環(huán)。
  另外,用戶還可以設(shè)定"持續(xù)時(shí)間"和"啟動(dòng)延遲"兩項(xiàng)參數(shù)。需要注意的是,"啟動(dòng)延遲"會(huì)使"啟動(dòng)時(shí)間"無(wú)效,而"持續(xù)時(shí)間"會(huì)使"結(jié)束時(shí)間"無(wú)效。
  控制器
  JMeter有兩種類型的控制器:采樣器和邏輯控制器,二者結(jié)合起來(lái)驅(qū)動(dòng)了測(cè)試進(jìn)程。采樣器被JMeter用來(lái)向服務(wù)器發(fā)送請(qǐng)求。例如,當(dāng)測(cè)試人員想往服務(wù)器發(fā)送一個(gè)HTTP請(qǐng)求時(shí),加入一個(gè)HTTP請(qǐng)求采樣器。測(cè)試人員還可以通過(guò)為采樣器添加配置元件來(lái)定制化請(qǐng)求。
  用戶可以使用邏輯控制器來(lái)控制JMeter的測(cè)試邏輯,比如何時(shí)發(fā)送請(qǐng)求。舉一個(gè)例子:測(cè)試人員可以插入交替控制器來(lái)輪流發(fā)送多個(gè)請(qǐng)求。
  1)采樣器
  采樣器告訴JMeter發(fā)送一個(gè)請(qǐng)求到指定服務(wù)器,并等待服務(wù)器的請(qǐng)求。采樣器會(huì)按照其在測(cè)試樹(shù)中的順序去執(zhí)行,還可以用邏輯控制器來(lái)改變采樣器運(yùn)行的重復(fù)次數(shù)。
  每一種采樣器都有多種參數(shù)可供設(shè)置。測(cè)試人員還可以通過(guò)在測(cè)試計(jì)劃中加入一個(gè)或者多個(gè)配置元件,來(lái)進(jìn)一步定制化采樣器。
  如果測(cè)試人員打算向同一個(gè)服務(wù)器發(fā)送同一類請(qǐng)求,可以考慮使用默認(rèn)配置元件。每一類采樣器都有一個(gè)或多個(gè)對(duì)應(yīng)的默認(rèn)配置元件。一定記住應(yīng)為測(cè)試計(jì)劃添加一個(gè)監(jiān)聽(tīng)器,以便查看和存儲(chǔ)(存儲(chǔ)到磁盤)請(qǐng)求的結(jié)果。
  如果測(cè)試人員想檢查服務(wù)器響應(yīng)的內(nèi)容,可以為對(duì)應(yīng)采樣器添加斷言。例如,當(dāng)對(duì)Web應(yīng)用做壓力測(cè)試時(shí),服務(wù)器雖然成功返回了"HTTP Response"代碼,但是頁(yè)面上可能會(huì)有錯(cuò)誤,或者丟失了部分頁(yè)面片段。針對(duì)這種情況,測(cè)試人員可以添加斷言來(lái)檢查特定的HTML標(biāo)簽,或者常見(jiàn)的錯(cuò) 誤信息等。JMeter允許在斷言中使用正則表達(dá)式。
  2)邏輯控制器
  邏輯控制器可以幫助用戶控制JMeter的測(cè)試邏輯,特別是何時(shí)發(fā)送請(qǐng)求。邏輯控制器可以改變其子測(cè)試元件的請(qǐng)求執(zhí)行順序。
  3.監(jiān)聽(tīng)器
  監(jiān)聽(tīng)器提供了對(duì)JMeter在測(cè)試期間收集到的信息的訪問(wèn)方法。"圖形結(jié)果"監(jiān)聽(tīng)器會(huì)將系統(tǒng)響應(yīng)時(shí)長(zhǎng)繪制在一張圖片之中。"查看結(jié)果樹(shù)"監(jiān)聽(tīng)器會(huì)展示采樣器請(qǐng)求和響應(yīng)的細(xì)節(jié),還能以HTML和XML格式展示系統(tǒng)響應(yīng)的基礎(chǔ)部分。其他監(jiān)聽(tīng)器通過(guò)總結(jié)或者聚合方式展示信息。
  另外,監(jiān)聽(tīng)器可以將測(cè)試數(shù)據(jù)導(dǎo)入到文件之中,以供后續(xù)分析。所有監(jiān)聽(tīng)器都會(huì)提供一個(gè)輸入域,以便于用戶指定存儲(chǔ)測(cè)試數(shù)據(jù)的文件。監(jiān)聽(tīng)器還會(huì)提供一個(gè) 配置按鈕,用來(lái)配置存儲(chǔ)測(cè)試數(shù)據(jù)的哪些字段,以及選用的存儲(chǔ)格式(CSV或者XML)。讀者朋友需要注意的是,所有監(jiān)聽(tīng)器都保存同樣的數(shù)據(jù),的區(qū)別是 它們?nèi)绾握故緮?shù)據(jù)。
  監(jiān)聽(tīng)器可以在測(cè)試的任何地方添加,包括直接放在測(cè)試計(jì)劃之下。它們僅收集測(cè)試樹(shù)中相同或者更低級(jí)別測(cè)試元件的數(shù)據(jù)。
  4.定時(shí)器
  默認(rèn)情況下,JMeter線程在發(fā)送請(qǐng)求之間沒(méi)有間歇。建議為線程組添加某種定時(shí)器,以便設(shè)定請(qǐng)求之間應(yīng)該間隔多長(zhǎng)時(shí)間。如果測(cè)試人員不設(shè)定這種延遲,JMeter可能會(huì)在短時(shí)間內(nèi)產(chǎn)生大量訪問(wèn)請(qǐng)求,導(dǎo)致服務(wù)器被大量請(qǐng)求所淹沒(méi)。
  定時(shí)器會(huì)讓作用域內(nèi)的每一個(gè)采樣器都在執(zhí)行前等待一個(gè)固定時(shí)長(zhǎng)。如果測(cè)試人員為線程組添加了多個(gè)定時(shí)器,那么JMeter會(huì)將這些定時(shí)器的時(shí)長(zhǎng)疊加起來(lái),共同影響作用域范圍內(nèi)的采樣器。定時(shí)器可以作為采樣器或者邏輯控制器的子項(xiàng),目的是只影響作用域內(nèi)的采樣器。
  要在測(cè)試計(jì)劃中的某個(gè)位置添加暫停,測(cè)試人員可以使用"Test Action"采樣器。
  5.?dāng)嘌?/strong>
  用戶可以使用斷言來(lái)檢查從服務(wù)器獲得的響應(yīng)內(nèi)容。通過(guò)斷言可以測(cè)試服務(wù)器返回的響應(yīng)與測(cè)試人員的期望是否相符。
  例如,測(cè)試人員可以斷言某個(gè)查詢的響應(yīng)中包含特定的文字信息。測(cè)試人員可以使用Perl格式的正則表達(dá)式來(lái)描述響應(yīng)中應(yīng)該包含的文字,或者它應(yīng)該與整個(gè)響應(yīng)相符。
  測(cè)試人員可以為任何采樣器添加斷言。例如,測(cè)試人員可以為HTTP請(qǐng)求添加斷言,用于檢查文本""。接下來(lái)JMeter會(huì)檢查該文本是否出現(xiàn)在HTTP響應(yīng)中。如果JMeter不能找到該文本,那么它會(huì)將請(qǐng)求標(biāo)記為失敗。
  需要注意的是,斷言會(huì)影響作用域內(nèi)的所有采樣器。如果要讓斷言只影響某個(gè)采樣器,需要將斷言作為該采樣器的子項(xiàng)。
  如果要查看斷言結(jié)果,可以為線程組添加"斷言結(jié)果"監(jiān)聽(tīng)器。失敗的斷言,也會(huì)在"查看結(jié)果樹(shù)"和"用表格查看結(jié)果"兩種監(jiān)聽(tīng)器中顯示。另外,在"Summary Report"和"聚合報(bào)告"中還會(huì)以錯(cuò)誤百分率的形式統(tǒng)計(jì)。
  6.配置元件
  配置元件與采樣器緊密關(guān)聯(lián)。雖然配置元件并不發(fā)送請(qǐng)求(除了HTTP代理服務(wù)器例外),但它可以添加或者修改請(qǐng)求。
  配置元件僅對(duì)其所在的測(cè)試樹(shù)分支有效。例如,假設(shè)測(cè)試人員在一個(gè)簡(jiǎn)單邏輯控制器中放置了一個(gè)HTTP Cookie管理器,那么該HTTP Cookie管理器只對(duì)放置在簡(jiǎn)單邏輯控制器內(nèi)的其他邏輯控制器生效
  另外,相比父分支的配置元件,子分支內(nèi)部的配置元件優(yōu)先級(jí)更高。配置元件 "用戶定義的參數(shù)"會(huì)在測(cè)試的初始階段執(zhí)行(無(wú)論它處于測(cè)試樹(shù)的哪個(gè)位置)。
  7.前置處理器
  前置處理器會(huì)在采樣器發(fā)出請(qǐng)求之前做一些特殊操作。如果前置處理器附著在某個(gè)采樣器之下,那么它只會(huì)在該采樣器運(yùn)行之前執(zhí)行。前置處理器通常用于在采樣器發(fā)出請(qǐng)求前修改采樣器的某些設(shè)置,或者更新某些變量的值(這些變量不在服務(wù)器響應(yīng)中獲取值)。
  8.后置處理器
  后置處理器會(huì)在采樣器發(fā)出請(qǐng)求之后做一些特殊操作。如果后置處理器附著在某個(gè)采樣器之下,那么它只會(huì)在該采樣器運(yùn)行之后執(zhí)行。后置處理器通常被用來(lái)處理服務(wù)器的響應(yīng)數(shù)據(jù),特別是服務(wù)器響應(yīng)中提取數(shù)據(jù)。
  后,對(duì)于這么多的部件,JMeter執(zhí)行順序規(guī)則如下:
  配置元件
  前置處理器
  定時(shí)器
  采樣器
  后置處理器(除非服務(wù)器響應(yīng)為空)
  斷言(除非服務(wù)器響應(yīng)為空)
  監(jiān)聽(tīng)器(除非服務(wù)器響應(yīng)為空)
  只有當(dāng)作用域內(nèi)存在采樣器時(shí),定時(shí)器、斷言、前置/后置處理器才會(huì)被執(zhí)行。邏輯控制器和采樣器按照在測(cè)試樹(shù)中出現(xiàn)的順序執(zhí)行。其他測(cè)試元件會(huì)依據(jù)自 身的作用域范圍來(lái)執(zhí)行,另外還與測(cè)試元件所屬的類型有關(guān)(歸屬于同一類型的測(cè)試元件,會(huì)按照它們?cè)跍y(cè)試樹(shù)中出現(xiàn)的順序來(lái)執(zhí)行)。

軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd