版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。JMeter主要是一個用于load/stress test的工具。由于它具有一套專門的術(shù)語和概念,對于我等不是專門做測試的人員來說初次使用它時確實有點(diǎn)無從下手的感覺。只有搞清楚了它的幾個基本概念,用起來才能做到心中有數(shù)。雖然JMeter的用戶文檔講得很詳細(xì), 但是那里畢竟沒有結(jié)合 JMeter所有概念講一個綜合應(yīng)用的例子 (實際測試中的 Test Plan往往需要綜合運(yùn)用很多概念的),不失為一個小小的遺憾。本文結(jié)合一個webapplication測試的例子介紹JMeter的完整概念。JMeter 使用的概念有:Thread ,Sampler
2、,LogicController, Config Element(配置元素),Timer ,Pre-/Post ProcessorAssertions, Listener 。從整體結(jié)構(gòu)上來講,首先一個測試就是一個Test Plan (測試計劃),每一個Test Plan 可以設(shè)定 Thread Group ,Thread Group下面的樹形結(jié)構(gòu)就是下面設(shè)置的測試配置信息。卜面是本實例的一個整體配置:G Test Flcn 中同2ad ,JrwjpLkk 口印育小城壯MtHTTPRecmeDefaiJtsV 1國 once only cortroller* Logri jettonHTTP C
3、d口Hr IVarwgia-RSimpls ControlierUser Defir sd Ver,iahlM/Mwi.scllanVCldi 1able( ertereled: F atoteaiax actior)ReE> sdraztor - tablcusedifCrateCrcerfdoOpsriGjcalTafclc-ap.oGticMi)J ddcy oxoourirg MotQdQfR由卻tn、匹莒上rti*n網(wǎng) Vew Results Tree肉 Graph Ffesuts1 WrKBench(圖1)一個Thread模擬單個測試用戶,例如下面的是ThreadGroup元
4、素中的配置信息,它表示模擬100個用戶的訪問,ramp-up表示100個用戶線程5秒鐘之內(nèi)才能全部啟動完成。Thread GroupNei畤 phrtai OioupCoiiirinents:Action Id be taken dFtei dSi3irn|jlei eiroiCoritniLie O Start Next Lcju|j O StcTTnead PropertiesNumlbor of Throacls Utter s):Rhi沖-Up Reiiod (in secoirKls): |5Loop Count: 口 Fer ever(圖2)*Sampler是核心概念:要通過htt
5、p訪問web server ,免不了需要使用 Sampler (對于這里的 Web測試是HttpRequest Sampler )。所謂 Sampler就是對Server的訪問,相當(dāng)于瀏覽器(但是不解析 html/css和JavaScript ),每一次訪問請求得到的響 應(yīng)在JMeter中作為一個 Sample保存并通過 Listener讓用戶察看 HTTP response 的結(jié)果和統(tǒng)計圖表。所以Sampler 是JMeter的核心概念。其他的概念都是圍繞著Sampler服務(wù)的,比如 Pre-processor(預(yù)處理器)可以在Sampler向Server發(fā)送請求之前定義一些變量或做處理(比
6、如本例圖1中的User Parameters );而Post-Processor可以在得到Response 之后作一些操作(比如本例圖1中的"RegEx extractor - tableuseid。圖1中包括的Sampler有四個:1) Login.action(在 Once Only Controller 下面)2) Main.action (位于 Simple Controller 下面)3) Click Table(afterSelectTable_ajax.action)( 位于 SimpleController 下面)4) CreateOrder(doOpenGuestT
7、able_ajax.action)( 位于 SimpleController 下面)卜面圍繞著以上四個 samplers介紹JMeter的其他概念。*如何設(shè)置多個 HTTP Requests 的缺省值: 首先在測試一個 web application 的時候,每個 Sampler都需要設(shè)定 web server的主機(jī)IP地址等信息,而這些信 息在每個Sampler中是相同的,因此可以通過一個 Config Element Http Request Defaults 將這些共同信息(比 如Web Server主機(jī)IP)提取出來保存,然后在上面四個 Samplers中就不需要再設(shè)置了。(圖3)*O
8、nce Only Controller:Login.action是web程序的login功能,每一個用戶(Thread)都需要單獨(dú)login ,但是在一個用戶的所有HTTPrequests中(即一個session )只需要login 一次。因此如果可以將這個Sampler放到Once Only Controller 下面,保證 login 只在一個 session 中執(zhí)行一次。Once Only Controller 是 JMeter 中的另一個概念-Logic Controller。Logic Controller類似于編程語言中的for循環(huán)那樣的控制結(jié)構(gòu),它可以控制樹形結(jié)構(gòu)下面包含的Sam
9、plers的執(zhí)行方式。常用的Logic Controller有Simple Controller(就是一個簡單的容器,將樹形結(jié)構(gòu)下面的Samplers放到一起,見圖1),這里的Once Only Controller ,還有Interleave Controller(上一次執(zhí)行下面的一個某個Sampler A ,下一次執(zhí)行下面的一個某個 Sampler B)等。下圖是Login.action這個Sampler的設(shè)置:f - Tesl Flan Ijs 2011 OQ守 E" Th柞d Grewuser Farameter?HTTP RrquuT DftfoiJk9 Ones nnly
10、CcnlEl區(qū)rLean actionT , 1 p Cookie ManagerT jfi ample controllerUs er ParametersName; user parametersCommeirtt:-Update Once PerHerartiai Paiamolor«'U;cf Scinch Vtfioblca«rtcnClck laHe(afterSdectTeblfr_ax.srtl.,與Keg±x eztracwr - tasieused'Ci ealeO der(du0fJ5n&jeEtTab e_a m南I
11、訝造aculing城eOrdmr門 F?Rsnmsfi AssrlinnName:UseciLsFUNCTP=2F Vew Results "ret(圖5)*Cookie 管理:幾乎所有的 Web Application者B需要cookie管理,JMeter可以模擬瀏覽器的做法管理cookie ,只需要添加一個 ConfigElement - HTTP Cookie Manager( 如上圖所示)。*如何定義變量: 另外在Simpler Controller 下面有一個 UserDefined Variables ,它也是一個 Config Element 。在本例中,由于其中一個S
12、ampler "ClickTable(afterSelectTable_ajax.action)需要一個參數(shù) tableId作為輸入,但是又不希望把這個參數(shù)值hard code進(jìn)去,因此設(shè)置一個用戶定義的變量TABLEID (注意圖中變量的作用域是Simpler Controller 下的三個Samplers,但是只有Main.action 中用到該變量):(圖6)*如何在Http Request Sampler 中使用變量:然后在 Sampler "Click Table(afterSelectTable_ajax.action)中可以按 $TABLEID的方式引用這個變
13、量:HTTP RequestNair»: | 亡 I e k Tab I自打解 rS 加配!Tq blj 飄 就t 口n)一Commarrte:Wd) S削/tserver Ndinv ui IRPutNuiriUtii:HTTP Rftquesthmplemenutioii: |Ptolocol Ittp:Metho 比POSTCcttetK «ncoifeiig:Pdlll: /l IU/aflBI Sb! Iz: L ITdU L d| cK. d Lil u lP«tlirKt Automatical F4lbowRadirectt J Uv4KMpr樂府
14、dataf«rPOST - BnSend Paramftters With the Reqi好4t心mmtable IdKTA3LCIDnocache$(_ime(圖7)*Regular Expression Extractor 提取 Http Response 信息并保存成變量:除了上面使用 User Defined Variables的方法定義變量之外,本例中還是用了Regular Expression Extractor 從HTTP response 的輸出結(jié)果中獲取一個字符串作為一個變量。Regular Expression Extractor 是JMeter中的另一個概念一
15、Post-processor ,它的作用是得到 HTTP響應(yīng)后,對結(jié)果(比如一個html標(biāo)簽頁面白內(nèi)容或json輸出數(shù)據(jù)等)進(jìn)行處理,通過 regular expression 抽取字符值,存成一個變量給后面的Sampler使用。例如在 Click Table(afterSelectTable_ajax.action) 這個 Sampler 執(zhí)行完一次 HTTP Request 之后得到如下的 HTTP Response( 一個json格式的輸出):"free":false,"hasError”:false,"singleEntry”:true,&quo
16、t;table_nr":"05","tableid":5,"tableuseid”:130現(xiàn)在要得到tableuseid 的值130,可以用這樣一個 regular expression:A.+?"tableuseid":( A ,+ ).*$上面括號中的內(nèi)容就是提取130的值,用括號的作用是可以把該值作為一個組,并存成一個變量以便在下一個Sampler-CreateOrder(doOpenGuestTable_ajax.action) 中使用。注:可以用下面的 perl命令行交互式測試正則表達(dá)式:perl -n
17、-e '/A.+?"tableuseid":(A ,+).*$/ && print "$1n"'¥ g Tett Ptan 4 201109HTiPReouesI Ce'aultJV “必 Once cmy Lmtntar *HTTP CisckiB Msnager9 / 占Kpg Ccrdle# User Defined V1 斜i刑聒Man.artiort,. QIlK TttillJU f:ul SultJulTaUe:_itia.t .aulkJ l)e5rac:or -tublcusWdA Cr
18、eaOrde(doOperySLBstIal3le=aj8&cactioniF<| Wfw TtftP冏 Graph Resets國 wtrkwnctiRegular Expression ExtractorUmtr出韭葉口加日武口口t曲I叫£idCctnrndtrts;Am* toe* sample 噂的 : Snb-iairp*B» o由 O Man buthjIc ond suH&sponse heldto clieckBu. C Bcdy umtsudped) HtRrfti elite NIciiwhReyuldr EKpression:Te
19、mpkarte:blotch Nk>. (Gfor g ndorm):DTatiR Valuer/bl白u(yù)$巨八+?"tao 總 u se id": (T) J+)*E$1S(圖8)*在另一個 Sampler中使用 RegEx提取的變量:按照上圖的設(shè)置,在CreateOrder(doOpenGuestTable_ajax.action)中如何引用該變量呢?根據(jù) JMeter的用戶參考文檔,應(yīng)該是 $tableuse_g1。1>川田知蹲2011P9» Thread Groiu,>* Jser parameters瞄- ITP Request Dcf
20、aUtsW 超 Once Dnly ContrQllsrrjh Rdicn傅 <TP Ccokie Mafia jerV *, sifiple LontRllerdjft l-er IDeJiried Varicbtes.M&in-sctoni9 /* Ufck 1>HI總詞1:=1月信壯丁號口怕_可呼¥ *Mi ,* f?8qe> e>dHflcicr - tatleuieb丫 f CrtatflOdertdoOpenGuKt I flbte_as壯 jKlay1 MULXillry CitsduOid七r /*? Res&cnse Asi
21、ertianF View R尋Tree司 Giftph R1羽11榜i/vort(BenchHTTP RequestName:rsateunderdiouperuueEtl aD15_a abaction)Comments:Web Scru«rServer Nsiiie or IR |Poii Nurnb<HI fP RequestImplernantatnri: | - Pratocoi pittp:| Method: |p0ST Pirth; |/ri sws b/dooj e no u a stTa b I e_ajaxcs onI ' Fbedirocl Aii
22、tofiilicalb FollOiW Re(irdct« / l>5自 K壟印 AImpUs& imltipartTen室and Paranielers Vl/tlh tlie Request:Nwnnq;Yalygtabis u se id況 ta bleu? e_3i)rppgchR 猊 JirnH下圖是該變量在 Sampler-CreateOrder(doOpenGuestTable_ajax.action) 中的使用。*JMeter 的函數(shù):在上圖中,還有一個 URL參數(shù)nocache ,它使用一個函數(shù)$_time獲取client中的當(dāng)前時間。*TimerA
23、Toft niang 孫 1DQ7 user ParametersHI , P K&tMesi Leiaulti.,:On=e Cnly Ccntdle-*/ Login.Kbon耕 HTTP Cbakifr Mmagtr?,又,Sirrplt Cnnfrol相 LserDeiiiedV4riitlt£ Man.actl£nt Click Tabiei; afla SelecfrabE_aJ?Vi ttlay er#cutlng CferttOc n褪如雎:,整建riton司 Viev RKutsTree|回 Grapn ResultWbrliBsTGlb在上圖的
24、Sampler-CreateOrder(doOpenGuestTable_ajax.action)下面有個 constant timer-delay executingCreateOrder,它的作用是在執(zhí)行完上一個 Sampler (這里的Click Table )之后,延時一個時間段,這樣不至于給服 務(wù)器造成過多的影響。*HTTP Response 的 html 內(nèi)容校驗:在CreateOrder(doOpenGuestTable_ajax.action) 的HTTP 響應(yīng)(一個 html標(biāo)簽頁面的內(nèi)容)中,我們需要檢測是 否包含一個單詞 “BeeN如果沒有這個單詞,說明HTTP響應(yīng)出錯。
25、這就是自動化的功能測試的思想??梢允褂肑Meter的另外一個概念 一Assertion完成這項工作,本例中使用ResponseAssertion ,如下圖所示:Response AssertionNam配|hei。eng電幺3電monCommpiffts:麗味H*且 Main sainpte only O Sub eaiiiplos orty O Mailand si也Response Field w restft1 Text Rjesporese UFL Sdmphecll O Responrse Code Re即ixhPatlern Mdtciiirng Rides® Coiit
26、fiinSi Matches .二 CqualsPiatlcrns te TestBe* er(圖 10)*測試結(jié)果的顯示:測試結(jié)果可以出每一個Sample的HTTP Request/Response 的內(nèi)容,也可以用圖表統(tǒng)計所有的Samples ,并保存到文件中。在JMeter中使用Listener這個概念,Listener的作用就在每個 Sample執(zhí)行之后根據(jù)設(shè)置做相應(yīng)的統(tǒng) 計處理。本例中使用到的Listener有兩個:View Results Tree 和Graph Results 。參考圖1 (為方便起見,重新貼在下面),總結(jié)一下本例Test Plan中用的元素和它們在 JMeter中的概念對應(yīng)關(guān)系:f & Men 特Use Pararirtrs加 HTTP Request. Defauts$ ' Oncjti Orilu CcNdrulbi!Logn.action* HTTP Ccoltie Manse|at中國 Srnplg Cortroler*Derireci Venables/* Maii.cdlDn學(xué)Cick IsblE (atter£eleDi*stole_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園小班科學(xué)活動方案實施方案(2篇)
- 尾礦庫焊工安全生產(chǎn)責(zé)任制范文(2篇)
- 2025年高中班主任工作心得體會樣本(3篇)
- 小學(xué)實驗教學(xué)管理制度(3篇)
- 2025年幼兒園安全工作計劃表(二篇)
- 2025年院機(jī)關(guān)車輛使用管理制度范文(2篇)
- 2025年護(hù)士長下半年工作計劃模版(2篇)
- 2025年家校共育發(fā)言稿(3篇)
- 沉降過濾式離心機(jī)安全技術(shù)操作規(guī)程(2篇)
- 2025年小學(xué)科學(xué)實驗室工作計劃范例(3篇)
- 項目工程安全管理責(zé)任區(qū)域劃分表
- 教育培訓(xùn)學(xué)校(機(jī)構(gòu))課堂教學(xué)反饋表
- 成功公司年度績效考核方案
- GB/T 17684-2008貴金屬及其合金術(shù)語
- 安全管理流程圖加強(qiáng)完善版
- 第一講-研發(fā)創(chuàng)新型企業(yè)需要IPD(下)徐驥課程-
- 2022年08月北京外交學(xué)院非事業(yè)編科研助理招聘14人高頻考點(diǎn)卷叁(3套)答案詳解篇
- 甲狀腺結(jié)節(jié)的超聲規(guī)范化診斷教學(xué)課件
- 職業(yè)健康監(jiān)護(hù)技術(shù)規(guī)范
- 安徽省白酒生產(chǎn)企業(yè)名錄395家
- 多媒體技術(shù)與應(yīng)用ppt課件(完整版)
評論
0/150
提交評論