![jmeter節(jié)選第11章進階知識_第1頁](http://file4.renrendoc.com/view/2187fbed62c0df2b7828ff4f86a30d6e/2187fbed62c0df2b7828ff4f86a30d6e1.gif)
![jmeter節(jié)選第11章進階知識_第2頁](http://file4.renrendoc.com/view/2187fbed62c0df2b7828ff4f86a30d6e/2187fbed62c0df2b7828ff4f86a30d6e2.gif)
![jmeter節(jié)選第11章進階知識_第3頁](http://file4.renrendoc.com/view/2187fbed62c0df2b7828ff4f86a30d6e/2187fbed62c0df2b7828ff4f86a30d6e3.gif)
![jmeter節(jié)選第11章進階知識_第4頁](http://file4.renrendoc.com/view/2187fbed62c0df2b7828ff4f86a30d6e/2187fbed62c0df2b7828ff4f86a30d6e4.gif)
![jmeter節(jié)選第11章進階知識_第5頁](http://file4.renrendoc.com/view/2187fbed62c0df2b7828ff4f86a30d6e/2187fbed62c0df2b7828ff4f86a30d6e5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
詳解JMeterJMeter函數(shù)可以被認為是某種特殊的變量,它們可以被采樣器或者其他測試元件所引用。${其中,functionName匹配被調(diào)用的函數(shù)名稱。用圓括號包含函數(shù)的形參,例如${time(YMD)}JMeter函數(shù)不要求參數(shù),則可以不使用圓括號,例如${threadNum}。${time(EEE\,dMMM用返回的值就是引用自身。例如,假設字符串UNDEF沒有被定義為變量,那么${UNDEF}返回的值就是${UNDEF}。變量、函數(shù)(包括屬性)都是大小寫敏感的。JMeter2.3.1及其后續(xù)版本會剔除參數(shù)名中的空格,例如,${Random(1,63LOTTERY)}中的“LOTTERY”會被貼 屬性不同于變量。變量對線程而言是局部的,所有線程都可以訪問屬性,就使用P或貼 property函數(shù)11-1JMetergetthreadgetthelocalmachinereturncurrenttimeinvariouslog(ordisplay)amessage(andreturnthelog(ordisplay)amessage(emptyreturnreadalinefromareadanentirereadfromCSVdelimitedUseanXPathexpressiontoreadfromagenerateanincrementingaddintaddlonggeneratearandomrunaBeanShellevaluateaCommonsJexlreadaPreadaproperty(shorthandsetaJMeterSplitastringintoVevaluateavariableevaluateavariableevaluateanexpressionstoredinaparsepreviousresponseusingaregulargenerateUnicodecharvaluesfromalistofProcessstringscontainingJavaescapes(e.g.\n&EncodestringsusingHTML求的DOMAIN域,例如,做出輕微改動,就可以讓同一個測試腳本適配多個服務器。V(ar${N})}本中可以使用${BeanShell(vars.get("Var${N}")}。小 士將函數(shù)用于測試計劃(TestPlan)的設置時,會受到一些限制。此種情況下,JMeter線程會生效。如此一來,split()、regex()及變量賦值函數(shù)就都不能正常工作。函數(shù)threadNum()同樣不能正常工作,該函數(shù)在測試計劃層沒有意義。在測試計劃中,函數(shù)intSum、longSum、machineName、BeanShell、javaScript、jexl、random、time、propertyfunctions、logfunctions應如在UDV被處理前是不能使用的。小 士SELECTitemfromtablewhereSELECTitemfromtablewhere函數(shù)使用相同的辦法加以引用,但是依據(jù)慣例,函數(shù)名以“”開頭,以區(qū)別于變量名。${SCRIPT${SCRIPT變量的內(nèi)容進行轉義,因為函數(shù)的調(diào)用先于變量被其值所替換。該方法適合于BSF或者BeanShell采樣器,這兩種采樣器可以用于測試JavaScript、Jexl和BeanShell腳本。函數(shù)可以引用變量及其他函數(shù),例如${XPath(${P(xpathfile),${XPATH“xpathfile”作為文件名,變量XPATH的內(nèi)容作為搜索表達式。小貼“,”或者“\”之前的反斜線會被移除。這個操作對于嵌套函數(shù)(士用戶可以使用logn()函數(shù)來報告變量或者函數(shù)的值。logn()函數(shù)可以在測試計劃中的任何地方被引用,前提條件是被報告的值已經(jīng)被定義。另外,Java請求采樣器可以被用來產(chǎn)生一個DebugSampler,可以使用它來展示變量的值(如在查看結果樹中展示。小士貼士“Function如圖11-1所示。11-1函數(shù)助手(FunctionHelper)11-1regexFunction6個參數(shù)中,測試人值。例如,如果測試人員輸入“refName”作為第6個參數(shù),那么測試人員可以使用:${refName}2個參數(shù)(Templateforthereplacementstring)的計算結果,這依參數(shù)如表11-2所示。11-21個參數(shù)是用于解析服務器響應數(shù)據(jù)的正則表達式。它會找到所有一定記得為其加上圓括號。例如,<ahref="(.*)">。這樣就會將鏈接的值存放到第一個匹配組合中(這里只有一個匹配組合)。又如,<input是是3個參數(shù)告訴JMeter使用第幾次匹配。測試人員的正則表達式可能會找到多個匹配項。對此,測試人員有4種選擇:否否否否11。計數(shù)器既可以被配置成針對目前計數(shù)器函數(shù)實例是獨立實現(xiàn)的(JMeter2.1.1及其以前版本,使用一個固定的線程變量11-3是引用它的值(JMeter2.1.1及其以前版本,這個參數(shù)是必需的)否函數(shù)threadNum只是簡單地返回當前線程的編號。線程編號不依賴于線程組,這就意味小這一函數(shù)不能用在任何配置元件中(如用戶定義的變量)貼士立線程運行的。另外在測試計劃(TestPlan)函數(shù)intSum可以被用來計算兩個或者更多整數(shù)值的合。參數(shù)如表11-4所示。11-4是是否否 JMeter2.3.1及其以前版本,要求必須有引用名參數(shù)。后續(xù)JMeter版本中,引用名是可士 士函數(shù)longSum可以被用來計算兩個或者更多長整型值的合。參數(shù)如表11-5所示。11-5是是否否CSVDataSetConfig,也能達到相同的目的,而且方法更簡單。但是該配置**ERR**參數(shù)如表11-6所示。11-6是否否否pin#'.'dat->pin1.dat,...pin9.dat,pin10.dat,...pin000'.'dat->pin001.dat...pin099.dat...pin999.dat...pin9999.datpin'.'dat#->pin.dat1,...pin.dat9...pin.dat999,函數(shù)machineName返回本機的主機名。參數(shù)如表11-7所示。11-7否函數(shù)Java_javaScriptJavaScript解釋器。JavaScript會作為腳本語言使用,因此測試人Rhinoscript小 士11-8待執(zhí)行的JavaScriptMath.floor(Mathrandom()*(${maxRandom}+1)):在0和變量om}+1)):在變量minRandom和maxRandom之間的隨機數(shù)是否 貼 如,${javaScript('${sp}'.slice(7\,99999))},對7之后的逗號進行了轉義函數(shù)Random會返回指定最大值和最小值之間的隨機數(shù)。參數(shù)如表11-9所示。11-9是是否 JMeter1.9.1以前的版本僅支持從單個文件中讀取,JMeter1.9.1及其以后版本支持從多貼 用很重要,哪怕操作系統(tǒng)不區(qū)分大小寫,CSVRead(abc.txt,0)和CSVRead(aBc.txt,0)會引用不同貼 貼士11-10是=是COL1a${COL1b${CSVRead(random.txt,0)}COL2b${CSVRead(random.txt,1)}${ 貼 文件,請使用配置元件CSVDataSet或者StringFromFile函數(shù)propertyJMeter屬性的值。如果函數(shù)找不到屬性值,而又沒有提供默認${property(user.dir)}user.dir{ ${property(abcd,ABCD,atod)}:返回屬性abcd的值(如果屬性沒有定義,返回“atod”),并保存在變量ABCD中。11-11是否否函數(shù)_Pjmeter-Jgroup1.threads=7-${P(group1.loops)}group1.loops${P(hostname,)}hostname的值,如果沒有定義該屬性則返回值。(除非這些屬性在其他地方有定義。11-12是否函數(shù)log會記錄一條日志,并返回函數(shù)的輸入字符串。參數(shù)如表11-13所示。11-13是或者否否否OUTERRSystem.outSystem.err中。在這種${log(Message)}:寫入日志文件,形如“...threadNameMessage${log(Message,OUT)}${log(${VAR},,,VAR=)}:寫入日志文件,形如“...threadNameVAR=value”。14)logn函數(shù)logn會記錄一條日志,并返回空字符串。參數(shù)如表11-14所示。11-14是OUT,ERR,DEBUGINFO(默認),WARN否否OUTERRSystem.outSystem.err中。在這種函數(shù)BeanShellBeanShellBeanShellWeb站點:/。單個函數(shù)實例可以從多個線程調(diào)用。另外,該函數(shù)的execute()方法是同步的。:函數(shù)11-15一個BeanShell腳本(不是文件名是否${BeanShell(123*456)}56088小 請記得為文本字符串及代表文本字符串的JMeter變量添加必要的引號士函數(shù)split會通過分隔符來拆分傳遞給它的字符串,并返回原始的字符串。如果分隔符緊一個變量,會返回“ForEachsplit會刪除第一個不${前版本、VAR_1=a、VAR_2=?、VAR_3=c、VAR_4=?(null,JMeter2.1.1及其以前版本11-16是否否小
${XPath(/path/to/build.xml,參數(shù)如表11-17所示。11-17是是函數(shù)setPropertyJMeter屬性的值。函數(shù)的默認返回值是空字符串,因此該函數(shù)屬性對于JMeter是全局的,因此可以被用來在線程和線程組之間通信。參數(shù)如表11-18所示。11-18是是否函數(shù)time可以通過多種格式返回當前時間。參數(shù)如表11-19所示。11-19否否兩個網(wǎng)頁鏈接獲取更多關于JEXL的信息。11-20是否OUTSystem.outOUT.println("message")。JEXL可以基于它們來創(chuàng)建類,或者調(diào)用方法,例如: JMeter2.3.2以后的版本允許在表達式中包含多個聲明。JMeter2.3.2及其以前的版本只貼 V函數(shù),函數(shù)參數(shù)如表11-21所示。11-21是函數(shù)customers11-22是函數(shù)name='${name}',那么通過${eval(${SQL})},就能執(zhí)行“selectagefrombirthdayswhere11-23是函數(shù)charUnicode字符,另外還請參考下面unescape()函數(shù)。參數(shù)如表11-24所示。11-24Unicode字符編碼(是${char(0xC,0xA)}=${char(165)}=???參數(shù)如表11-25所示。11-25是${unescape(\r\n)}=${unescape(1\t2)}=函數(shù)“<Franais>11-26是函數(shù)escapeHtml用于轉義字符串中的字符(HTML實體HTML4.0實體。例如,"bread"&"butter"變?yōu)?quot;bread"&"butter"。11-27是函數(shù)FileToString可以被用來讀取整個文件。每次對該函數(shù)的調(diào)用,都會讀取整個文件。**ERR**11-28是否否戶擁有對變量名的完整控制權。但是有些變量是JMeter內(nèi)置的。例如,START變量(參見后續(xù)內(nèi)容)JMeterJMeterJMeterJMeter請注意:START變量/JMeter啟動時間,而非測試的啟動時間。它們主要用詳解JMeterJMeter中包含范本匹配軟件ApacheJakartaOROJakarta網(wǎng)站上有一些關于它的文檔,例如asummaryofthepatternmatchingcharacters:OROMatcherUser'sguide,也許會有一些幫助。URL地址:/oro/docs/OROMatcher/indexhtml。表達式的文檔(perlrequick、perlretut、perlre、perlreref。包含(Contains)意味著正則表達式至少部分匹配目標,例如,'alphabet'ph.b.',在這一情況下,它等同于使用^和$封裝正則表達式,即'^al.*t$'。但是事情并不總是這樣。小
不同于假設測試人員期望匹配Web頁面的如下部分:name="file"value="readme.txt">并提取name="file"value="(.+?)">。() 小 士盡管上面的表達式可以達到目的,但是使用如下表達式更有效率:name="file"value="([^"]+)">,其中[^"]-意味著匹配任何東西(除了。在這種情況下,匹配引擎在找到第假設測試人員期望匹配Web頁面的如下部分:name="file"value="readme.txt">,并提取filename和="([^"]+)" 小 不要用//封裝正則表達式士+?^$:字符串或行的起始和結尾。注意,ORO不支持\Q和\E關鍵字。存在一個BUG,修改器不能放在正則表達式的末尾。盡管修改器在這里不生效。MatchExActcaseor(?i)ArBiTrARY(?-i)模式下,“”還匹配換行。詳解JMeterJMeter,測試人員可以跨越多臺低端計算機復制測試,這樣就可以模擬一個并通過它們收集測試數(shù)據(jù),如圖11-3所示。這樣一來,就有了如下特性: 貼 1.4GHz~3GHzCPU、1GBJMeter100~300。但是器產(chǎn)生,網(wǎng)卡和交換機端口都可能產(chǎn)生瓶頸,所以一個JMeter客戶端線程數(shù)不應超過100。用大量的JMeter遠程服務器,可能會導致客戶端過載,或者網(wǎng)絡連接發(fā)生擁塞。11-3JMeterJMeter遠程測試的基本步驟:步驟1:配置節(jié)點有操作系統(tǒng)上使用相同的Java版本。JMeterperties或者試計劃之中,從而影響測試執(zhí)行(例如,與其他遠程服務器發(fā)生交互。另外,不同的JMeterJMeterJMETER_HOME/bin/jmeter-server(UNIX)或者JMETER_HOME/bin/jmeter-server.bat(Windows)腳本。JMeterRMI端注冊。假設測試人員一定要單獨啟動RMI注冊,可以在遠程節(jié)點上定義JMeter屬性reote_hostsJMeterIPIP地址,以逗號作為請注意測試人員還可以使用-R命令行選項來指明將會使用的遠程服務器。這與使用-r-后就會退出。-Z標志也有同樣的效果,參見后面的內(nèi)容。4(aJMeterGUIMS-Windows環(huán)境下運行“bin/jmeter.bat”腳本,UNIX環(huán)境下運行“bin/jmeter”腳本。測試人員會發(fā)現(xiàn)在運行(Run)菜單下,包含兩個子JMeterIPJMeter jmeter-n-tscript.jmx-jmeter-n-tscript.jmx-R開發(fā)者預期的范圍內(nèi))JMeter遠程服務器(2),其中包2(aJMeter2.3.1開始,JMeterRMI注冊,因此這里的內(nèi)容不適用于普通情況。如果要采用歷史版本的操作方法,首先在JMeter遠程服務器上定義JMeter屬性JMeterRemoteMethodInvocation(RMI)作為遠程通信機制。因此,測試人員需要用rRmiregistry如下jar存在于測試人員的系統(tǒng)claspath中:端口1099。JMeter/RMI要求建立一個從客戶端到遠程服務器的連接。這就會用到測試人員所選擇的端JMeterSuseLinux上,下面這些技巧對測試人員可能會有幫助。默認的安裝可debuggingJMeter2.3.1版本開始,RMIJMeter遠程服務器JMeterjmeters-Dsun.rmi.loader.logLevel=verbose”(省略了-J。另外這些屬性還可以被定義在(Loopback`dirname$0`/jmeter-s`dirname$0`/jmeter$HOST-sJMeter2.1.1版本開始,jmeter-server腳本支持改變端口號。例如,假設測試人員希望使用端口號1664(可能因為1099端口已經(jīng)被其他應用程序占用了。Windows(DOS窗口中C:\JMETER>SETC:\JMETER>JMETER-SERVER[other$SERVER_PORT=1664jmeter-server[otheroptions][N.B.useuppercasefortheenvironmentvariable]Rmiregistry,接著以遠程服務器模式啟動和JMeter客戶端產(chǎn)生很大的壓力。用戶可以通過設置一些屬性,來改變默認操作。(Mode(線程組(ThreadGroup)名稱和采樣標簽(SampleLabel)進行概要統(tǒng)計。積累的數(shù)據(jù)域包括:elapsedtime、latency、bytes、samplecount、errorcount,其他數(shù)據(jù)域?qū)粊GCustomimplementation:將模式參數(shù)設置為測試人員的客戶化采樣發(fā)送器的類名。該類必須實現(xiàn)接口SampleSender,并且類的構造函數(shù)只有一個RemoteSampleListener型詳解JMeterJMeter有效線程數(shù)目。另外這還依賴于待測服務器的性能(JMeter的負擔,因為它響應請求的速度更快JMeter線程越多,統(tǒng)計得到的時間信息就越不準確。JMeter負擔越重,每一個線程等待CPU的時間就越在多臺機器上運行多個非GUIJMeter實例。11-5CSVDataSet(CSVDataSet)AccessLogSampler(在這里不能IncludeController,因為它會將指定文件中的所有測試元件直接添加到測試計劃中Mode到數(shù)據(jù)文件中,以CSVDataset方式讀取。這樣就能避免在測試運行階段浪費資源。試計劃中改變變量LOOPS的值。不存在,就使用默認值10。屬性“l(fā)oops”接下來可以在JMeter命令行中定義:jmeter...-Jloops=12...。如果有很多屬性需要一起改變,那么解決辦法就是使用一組屬性文件。用戶可以使用命令行-q選項,以便將合適的屬性文件傳遞給JMeter。貼 這里沒有安全機制。任何人只要能連接上對應端口,就能執(zhí)行任何BeanShell命令。這些貼士在上面的例子中,BeanShell900090019000將HTTP9001Telnet訪問。startup.bshBeanShell服務器處startup中定義了設置/JMeter及系統(tǒng)屬性的各種方法。測試人員可以在JMeter控制臺中看到如下內(nèi)容:StartupscriptrunningStartupscriptcompletedHttpdstartedonport:9000Sessiondstartedonport:9001以屬性的形式定義的,形如${P(throughput)}BeanShell命令可以被用于改變測試://Startvalueinc=Integer.decode(args[1]);//Incrementend=Integer.decode(args[2]);//Finalvaluesecs=Integer.decode(args[3]);//Waitbetweenchangeswhile(curr<=end){setprop("throughput",curr.toString());//Needstobeastringherecurr+=}troughpt.bhjava-jar../lib/bshclient.jarlocalhost9000throughput.bsh705100BeanShell測試元件都有獨立的解釋器備份(針對每個線程。如果測試元件被重復調(diào)用,例如,被放在循環(huán)之中,那么在多次調(diào)用間解釋器將被保留,除非選中了“Resetbsh.Interpreterbeforeeachcall”復選框,如圖11-6所示。11-6BeanShell$java-cpbsh-xxx.jar[;otherjarsasneeded]bsh.Interperterfile.bsh$java–cpbsh-xxx.jarbsh.Interperterbsh%source("file.bsh");bsh%exit();//oruseEOFkey(e.g.^Zorstartup(初始化)腳本中。它們將會被一直保留下來,跨越測試元件的多次調(diào)用,除非使用到了reset選項。腳本同樣可以訪問JMeter變量,只需使用“vars”變量的get()和put()方法,例如,vars.get("HOST");vars.put("MSG","Successful");。get()put()方法只支持字符串類型的變量,getObject()putObject()方法可
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 食品質(zhì)量與安全控制工程作業(yè)指導書
- 食品質(zhì)量與安全檢測技術作業(yè)指導書
- 醫(yī)院醫(yī)療器械質(zhì)量保證協(xié)議書
- 2025年沈陽貨運從業(yè)資格證模擬試題答案
- 2025年吐魯番貨運資格證考試答案
- 小學二年級下冊口算驗收練習題
- 2025年鎮(zhèn)江年貨運從業(yè)資格證考試題大全
- 部編版歷史七年級下冊《12課 宋元時期的都市和文化》聽課評課記錄
- 2024-2025學年九年級科學上冊第3章能量的轉化與守恒第6節(jié)電能作業(yè)設計新版浙教版
- 湘教版數(shù)學八年級下冊《1.4 角平分線的性質(zhì)》聽評課記錄
- 在線心理健康咨詢行業(yè)現(xiàn)狀分析及未來三至五年行業(yè)發(fā)展報告
- 電動三輪車購銷合同
- 淋巴瘤的免疫靶向治療
- 校園駐校教官培訓
- 炎癥性腸病的自我管理
- 自然辯證法論述題146題帶答案(可打印版)
- 儲運部部長年終總結
- 物業(yè)管理裝修管理規(guī)定(5篇)
- (新版)工業(yè)機器人系統(tǒng)操作員(三級)職業(yè)鑒定理論考試題庫(含答案)
- 中國銀行(香港)有限公司招聘筆試真題2023
- 教育環(huán)境分析報告
評論
0/150
提交評論