




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
TOC\o"1-5"\h\z\o"CurrentDocument"1工具介紹 3工具組成 3測(cè)試計(jì)劃 3\o"CurrentDocument"工作臺(tái) 3測(cè)試組成結(jié)構(gòu) .4\o"CurrentDocument"HTTP消息頭 .4\o"CurrentDocument"HTTP請(qǐng)求默認(rèn)值 .4\o"CurrentDocument"HTTPCookie管理器 5\o"CurrentDocument"線程組 5\o"CurrentDocument"HTTP請(qǐng)求 5\o"CurrentDocument"DebugSampler 5響應(yīng)斷言 .6常用監(jiān)聽(tīng)器 6\o"CurrentDocument"2準(zhǔn)備工作 7監(jiān)控資源 .7\o"CurrentDocument"監(jiān)控TOMCAT資源 7\o"CurrentDocument"監(jiān)控WINDOWS資源 10\o"CurrentDocument"監(jiān)控LINUX資源 11使用技巧 12\o"CurrentDocument"參數(shù)化 12正則表達(dá)式提取器 14\o"CurrentDocument"集合點(diǎn) 16響應(yīng)斷言 17\o"CurrentDocument"IP欺詐 19\o"CurrentDocument"3開(kāi)始搞事情 22準(zhǔn)備工作 23接口測(cè)試 23\o"CurrentDocument"腳本組成 23\o"CurrentDocument"數(shù)據(jù)共享 26線程組 31\o"CurrentDocument"Linux下運(yùn)行Jmeter 33數(shù)據(jù)庫(kù)性能測(cè)試 35\o"CurrentDocument"Mysql性能測(cè)試 35\o"CurrentDocument"JAVA性能測(cè)試 37該文檔只講解JMETER作為測(cè)試工具在測(cè)試中常用的功能如何使用。其他功能,如果感興趣,可以自行研究學(xué)習(xí)。該文檔內(nèi)容具有一定的跳躍性,不適合測(cè)試小白學(xué)習(xí)。該文檔是我畢生心血之作,雖然內(nèi)容有可能不正確和不準(zhǔn)確,但至少是在項(xiàng)目中得到實(shí)踐和經(jīng)得起測(cè)試的。另外該文檔主要內(nèi)容只會(huì)出現(xiàn)我知道和我使用過(guò)且能得出結(jié)論的內(nèi)容。所以該文檔不屬于進(jìn)階和工具文檔。主要是讓小白們知道如何使用JMETET工具進(jìn)行測(cè)試,指導(dǎo)一個(gè)方向而已。就我目前所知JMETER只能進(jìn)行HTTP協(xié)議的測(cè)試。至于能不能進(jìn)行其他協(xié)議的測(cè)試,請(qǐng)讀者自行研究。說(shuō)明一點(diǎn),不同的協(xié)議測(cè)試請(qǐng)用合適的工具,所以請(qǐng)大家在做測(cè)試之前請(qǐng)先選擇合適的測(cè)試工具,不然在測(cè)試過(guò)程中很有可能半途而廢,浪費(fèi)時(shí)間,而且會(huì)嚴(yán)重打擊你的測(cè)試信心。注意:文檔中介紹的JMETER工具版本為V3.0o1工具介紹工具組成該工具由測(cè)試計(jì)劃和工作臺(tái)組成。這2個(gè)部分均可以添加線程組及各種元件。區(qū)別是測(cè)試計(jì)劃部分可以添加線程組,而工作臺(tái)不能添加線程組。一般我們都是在測(cè)試計(jì)劃中創(chuàng)建線程組進(jìn)行接口的功能和性能測(cè)試。測(cè)試計(jì)劃組成如下圖所示江淮輕卡WE日端性能則討然HTTP信息頭管理獸X-http請(qǐng)求默認(rèn)值(1)【用戶登錄】(2)【首頁(yè)-百公考42⑶t故障分析Ta:(4)t其他斫有君-X察看結(jié)果樹-X圖形結(jié)果案m報(bào)告12用恚格察看結(jié)果添加 ?Threads{Users),TestFragment卜配置元件 ?定時(shí)渠 卜前置處理器卜后置處理器?斷言 ?監(jiān)聽(tīng)器 ?粘貼 Orl-VResetGuiByfUndoRedo打開(kāi)_臺(tái)并保存為常用到的有:Threads(Users)、配置元件、后置處理器、斷言、監(jiān)聽(tīng)器。具體怎么用,后面再講。工作臺(tái)組成如下圖所示(該文章不會(huì)對(duì)這個(gè)玩意進(jìn)行講解,因?yàn)槲覜](méi)用過(guò),感興趣的可以自己研究哈)添加 ?非則試元件卜粘貼 Ctrl-V遙輯控制器?ResetGui配置元件?UndoRedo前置處理器卜□3rnpi&if打開(kāi)后置處理器?合并斷言 ?保存為…監(jiān)聽(tīng)器?SaveasTestFragmentSaveNodeAsImage ctri-G"~~~~工 可能會(huì)用到的功能:非測(cè)試元件(HTTPMirrorServer.HTTP代理服務(wù)器)。測(cè)試組成結(jié)構(gòu)一般組成為HTTP消息頭、HTTP請(qǐng)求默認(rèn)值、線程組、HTTP請(qǐng)求、DebugSampler、查看結(jié)果樹、聚合報(bào)告、用表格察看結(jié)果、響應(yīng)斷言、各種可選用的監(jiān)聽(tīng)器。如下圖所示. .…一能測(cè)試X川田仔息頭管理器WHTTP請(qǐng)求默認(rèn)值aU(1)1用戶登錄】線程組A,(2)1首頁(yè)-百公里油耗二線程組*U(3)t故障分析轍障走勢(shì)二線程組>J[其他斫有接口二線程組、察看結(jié)果樹-X聚合報(bào)告、用表格察看結(jié)果響應(yīng)斷言1.2.1HTTP消息頭具體作用不詳,反正要加,不然腳本報(bào)錯(cuò)。響應(yīng)內(nèi)容如果是json,消息頭里就填寫Content-Type=application/json。HTTP請(qǐng)求默認(rèn)值作用是當(dāng)一個(gè)線程組里存在N多接口,而且接口路徑中開(kāi)頭一段相同。為什么方便修改相同部分的路徑內(nèi)容,就添加這個(gè)請(qǐng)求默認(rèn)值。HTTPCookie管理器用于管理Cookie值,一般情況下無(wú)需填寫任何內(nèi)容值。只有當(dāng)多個(gè)接口需要用到固定的cookie值時(shí)才會(huì)填寫內(nèi)容,一般結(jié)合正則提取器使用,具體使用方法見(jiàn)第3.2.2章節(jié)。線程組線程組有2個(gè)特性:線程屬性和調(diào)度器。這2個(gè)特性均用于性能測(cè)試。(1)線程屬性,設(shè)置線程數(shù)即虛擬用戶數(shù),性能測(cè)試場(chǎng)景中腳本的運(yùn)行設(shè)置(2)調(diào)度器,設(shè)置性能測(cè)試場(chǎng)景中腳本的運(yùn)行周期(時(shí)間),選中“調(diào)度器”才能使用此功能具體操作和功能說(shuō)明請(qǐng)參考第3,2,3章節(jié)。HTTP請(qǐng)求接口是放在線程組里的。HTTP請(qǐng)求也有2個(gè)特性:接口測(cè)試和作為監(jiān)聽(tīng)器使用。這2個(gè)特性的具體說(shuō)明請(qǐng)參考第3,2章節(jié)(接口測(cè)試)和第2,1章節(jié)(監(jiān)控TOMCAT資源)。DebugSampler腳本調(diào)試神器。當(dāng)在使用正則表達(dá)式提取器時(shí)想知道提取的數(shù)值是否正確,就可以使用這玩意了。將此元件掛在某個(gè)接口下即可,然后執(zhí)行腳本(DEBUG結(jié)果如下)。腳本調(diào)試完了記得禁用啊。
。用戶登錄電。用戶登錄電BeanShellSampler中DebugSampler電故障分析故障走勢(shì)r取樣器結(jié)果(請(qǐng)求(響應(yīng)熟據(jù)JMeterThread.last_sample_ok=trueJMeterThread.pack=org.apache.jmeter.threads.SamplePackage@333cf7rc53START.HMS=101310START.MS=1541383990650START.YMD=20131105TESTSTART.MS=1541397522256Imeter.USER_TOKEN_=(1)【用戶登錄】線程組1-1passwo「d二口C483E30A7A0BD9EF71D3CF973673924token=29ec472e-7783-41f5-93eC-32TO363323detoKen_g口=寸口Ken-29ec472e-7738-41f5-93eC-32TO363323de'token_g1=29ec472e-7730-41f5-93eC-32TO363323deusername=xnUsrOOO1響應(yīng)斷言主要用于判斷返回值或內(nèi)容是否正確,避免測(cè)試白忙活。常用監(jiān)聽(tīng)器查看結(jié)果樹調(diào)試/運(yùn)行腳本后查看結(jié)果內(nèi)容。主要分為“取樣器結(jié)果”、“請(qǐng)求”和“響應(yīng)數(shù)據(jù)”。聚合報(bào)告性能測(cè)試用,查看每個(gè)線程組運(yùn)行性能指標(biāo)數(shù)值。用表格察看結(jié)果查看所有線程組中每個(gè)接口的指標(biāo)數(shù)值。性能指標(biāo)這里就不列舉了,有些監(jiān)視器需要安裝JMETER插件或遠(yuǎn)程連接登錄被這里就不監(jiān)控對(duì)象。2準(zhǔn)備工作監(jiān)控資源監(jiān)控TOMCAT資源使用jmeter的tomcat監(jiān)視器功能,可以通過(guò)向tomcat的status頁(yè)面發(fā)送get請(qǐng)求,得到資源使用信息,然后轉(zhuǎn)換為直觀的圖像方式,這樣的話,就可以監(jiān)視到服務(wù)器的資源使用情況,不過(guò)需要注意的是,要使用tomcat監(jiān)視器功能,就必須在要監(jiān)視的服務(wù)器上配置tomcat相關(guān)文件。(1)配置/。0f;0皿815863.》血,內(nèi)容如下<?xmlversion='1.0'encoding='utf-8'?><tomcat-users><rolerolename="manager-gui"/><rolerolename="manager-script"/><rolerolename="manager-jmx"/><rolerolename="manager-status"/><userusername="admin"password="admin"roles=nmanager-gui"/><userusername="admin"password="admin"roles="manager-script"/><userusername="admin"password="admin"roles="manager-jmx"/><userusername="admin"password="admin"roles=Hmanager-status"/></tomcat-users>(2)配置/coMcontextxml,內(nèi)容如下<Context><WatchedResource>WEB-INF/web.xml</WatchedResource><Managerpathname="/manager"debug="0"privileged="true"docBase=H/home/tomcat-9900/webapps/manager"/><ValveclassName="org.apache.catalina.valves.CometConnectionManagerValven/></Context>注意:配置完成后先訪問(wèn)http://IP地址:端口號(hào)/manager/status,檢查是否配置成功。(3)打開(kāi)Jmeter在線程組下添加“配置元件-HTTP授權(quán)管理器”,在HTTP授權(quán)管理的“基礎(chǔ)URL”中輸入http://IP地址:端口號(hào)/manager/status,用戶名為上面新建的admin,密碼是admin,其他默認(rèn),如下圖所示(4)接著在當(dāng)前線程組下添加“HTTP請(qǐng)求”,輸入被檢測(cè)服務(wù)器中的TOMCAT訪問(wèn)IP和端口號(hào);路徑輸入/manager/status;請(qǐng)求參數(shù)輸入XML(必須大寫),值為true,如下圖A1所示并且將此HTTP請(qǐng)求設(shè)置為“用作監(jiān)視器”,如下圖A2所示圖A1
圖A2(5)接著在當(dāng)前HTTP請(qǐng)求下添加“監(jiān)視器結(jié)果”和“察看結(jié)果樹”,如下圖所示?總則試計(jì)劃T2線程組(9900)丈HTTF授權(quán)管理器? http請(qǐng)求監(jiān)視器結(jié)果察看結(jié)果樹9線程組(9999)(6)最后運(yùn)行JMETER腳本,此時(shí)進(jìn)入到“監(jiān)視器結(jié)果”界面可以看到被測(cè)服務(wù)器IP和資源(圖片),如下圖所示事測(cè)試計(jì)劃?。線程組(9900)xHTT喉權(quán)管理器9JHTTP請(qǐng)求監(jiān)視器結(jié)果察看結(jié)果網(wǎng)。線程組0999)K)工作臺(tái)監(jiān)視器結(jié)果名稱:I監(jiān)視器結(jié)果可見(jiàn)如何使用JMETER\腳本\腳本01(監(jiān)控Tomcat資源).jmx。監(jiān)視器結(jié)果名稱:I監(jiān)視器結(jié)果2.1.2監(jiān)控WINDOWS資源(1)首先下載和安裝以下三個(gè)插件(都在如何使用JMETER\插件文件夾中)。JMeterPlugins-Extras-1.4.0(Jmeter插件)JMeterPlugins-Standard-1.3.1(Jmeter插件)ServerAgent-2.2.1(監(jiān)聽(tīng)工具)(22.1.2監(jiān)控WINDOWS資源(1)首先下載和安裝以下三個(gè)插件(都在如何使用JMETER\插件文件夾中)。JMeterPlugins-Extras-1.4.0(Jmeter插件)JMeterPlugins-Standard-1.3.1(Jmeter插件)ServerAgent-2.2.1(監(jiān)聽(tīng)工具)(2)解壓Jmeter的2個(gè)插件,將JMeterPlugins-Extras.jar和JMeterPlugins-Standard.jar復(fù)制到j(luò)meter安裝目錄下的\lib\ext下。(3)重啟或者啟動(dòng)Jmeter后在“監(jiān)聽(tīng)器”中就顯示出可以監(jiān)控的資源,如下圖所示則試計(jì)劃工作臺(tái)濤加StartStartnopaus&sValidate線拜痢譴輯控制器?配置元件?定時(shí)器卜前置處理器?剪切Ctrr-X復(fù)制Ctrl-C粘貼Ctrl-VDuphcateCtrl+Shift-CR&s&tGEii刪除Delete監(jiān)聽(tīng)器Sampler卜后置處理^>斷言?D&lavjp@gc-ActiveThreadsO\rerTimejp@gc-AutoStopListenerjp@gc-BytesTtiroughputOverTimejp@gc-CompositeGraphjp@gc-ConnectTimesOverTimejp@gc-ConsolsStatusLoggerjp@gc-DbMonSamplesCollectorjp@gc-FtexibleFiteWriterjp@gc-GraphsGeneratorjp@gc-HitsperSecondjp@gc-JMXMonSamplesColl&ctorjp@gc-LUpload&rjp@gc-Pag&DataExtractorjp@gc-P&rfMonMetricsCollectorRedo:gc-ResponseCodesperSecondjp@gc-R&sponseLatenciesOverTime打開(kāi).臺(tái)井保存為…調(diào)度器畫
持續(xù)時(shí)間jp@gc-R&sponseTimesDistributtomjp@gc-ResponseTimesOverTime?2?1startAgent.bat^R^(如何啟動(dòng)請(qǐng)自監(jiān)控工具也可以選擇別的,這個(gè)不是唯一的。jp@gc-TransactionThroughputvsThreads是唯一的。(5)現(xiàn)在回到Jmeter,在線程組中添加要監(jiān)聽(tīng)的服務(wù)器資源,比如CPU和內(nèi)存和網(wǎng)絡(luò)硬盤I/O,操作如下A、首先添加HTTP請(qǐng)求并輸入相關(guān)內(nèi)容后,再在當(dāng)前HTTP所在的線程組
上添加jp@gc-PerfMonMetricsCollector上添加jp@gc-PerfMonMetricsCollector,界面如下圖所示B、接著在jp@gc-PerfMonMetricsCollector頁(yè)面中添加要監(jiān)聽(tīng)的服務(wù)器資源,端口號(hào)默認(rèn)是4444。為了能監(jiān)控到資源變化,我將線程組設(shè)置為無(wú)限循環(huán),最后啟動(dòng)腳本,結(jié)果如下圖所示.測(cè)試計(jì)劃?U線程組—jp@gc-PerfMonMetricsCollector/HTT嘴求K工作臺(tái)名稱:jp@gc-PerflvlonMetricsCollector@Helponinisplugin27000024000021000018000015000030000.測(cè)試計(jì)劃?U線程組—jp@gc-PerfMonMetricsCollector/HTT嘴求K工作臺(tái)名稱:jp@gc-PerflvlonMetricsCollector@Helponinisplugin27000024000021000018000015000030000localhostlocalhostlocalhostlocalhostcoasueElo七£斫有額據(jù)寫入一個(gè)文件444444444444MemoryDisksI/ONetworkI/ODeleteRowLoq/DisplayOnly:口僅日志錯(cuò)誤口Successes117:54:41-ERROR:ConnectException:Connectionrefusedconnect17:54:41-ERROR:.ConnedException:ConnectionrefusedconnectSettings300000120000注意:如果在上圖中間黃底區(qū)域顯示紅色報(bào)警信息,說(shuō)明監(jiān)控工具未啟動(dòng)。因?yàn)檫\(yùn)行一次JMETER腳本進(jìn)行監(jiān)控完成后,監(jiān)控工具會(huì)自動(dòng)關(guān)閉,需要手動(dòng)重新啟動(dòng)。監(jiān)控配置腳本可見(jiàn)如何使用JMETER\腳本\腳本02(監(jiān)控windows資源).jmx。2.1.3監(jiān)控LINUX資源首先將JMeterPlugins-Extras-1.4.0和JMeterPlugins-Standard-1.3.1兩個(gè)插件放在JMETER的\lib\ext目錄下。再將ServerAgent-2.2.1監(jiān)控工具安裝在Linux服務(wù)器上并啟動(dòng)(在Linux下進(jìn)入到ServerAgent目錄下啟動(dòng)服務(wù):shstartAgent.sh)。打開(kāi)Jmeter在HTTP請(qǐng)求下添加“監(jiān)視器”即可看到JP@開(kāi)頭的監(jiān)視元素。
復(fù)制c-LUploader文件編輯Search運(yùn)行選項(xiàng)幫助ComparisonAssertronVisaalizerHTTP請(qǐng)求Ctri-XCtrl-CCtJl-VDuplicateResetGoi°jp@gc-ActiveThreadsOverTimejp@gc-AutoStopListenerjp@gc-BytesThroughputOverTimejp@gc-CompositeGraph復(fù)制c-LUploader文件編輯Search運(yùn)行選項(xiàng)幫助ComparisonAssertronVisaalizerHTTP請(qǐng)求Ctri-XCtrl-CCtJl-VDuplicateResetGoi°jp@gc-ActiveThreadsOverTimejp@gc-AutoStopListenerjp@gc-BytesThroughputOverTimejp@gc-CompositeGraphjp@gc-ConnectTimesOverTimejp@gc-ConsoleStatusLoggerjp@gc-DbP.lonSamplesCollectorjp@gc-FtexrbleFileWriterjp@gc-GraphsGeneratorjp@gc-HitsperSecondjp@gc-JMXMonSamplesCollectorT.刎試計(jì)劃口甥程組gSynchronizingTimer§/HTTF^^舔加插入上級(jí)辛HTTP請(qǐng).配置元件?定時(shí)^?前置處理簿?后置處理器卜斷言監(jiān)聽(tīng)器?Ctrl+Shift-C剩余操作與監(jiān)控WINDOWS資源一樣,監(jiān)控配置腳本可見(jiàn)如何使用JMETER\腳本\腳本03(監(jiān)控Linux資源).jmx。2.2使用技巧2.2.1參數(shù)化JMETER參數(shù)化一般使用的是配置元件里的CSVDataSetConfig。該元件支持TXT格式,別的格式我沒(méi)試過(guò)。當(dāng)然了要使用參數(shù)化功能就必須有一個(gè)HTTP請(qǐng)求。即在HTTP請(qǐng)求下添加參數(shù)化元件。操作如下(1)在HTTP請(qǐng)求上添加“配置元件-CSVDataSetConfig",如下圖所示f餐刎試計(jì)劃丈HTTP信息頭管理器X-http請(qǐng)求默認(rèn)值上拳(D1用戶登錄二線程組HTTP請(qǐng)求名稱:用戶登錄添加f餐刎試計(jì)劃丈HTTP信息頭管理器X-http請(qǐng)求默認(rèn)值上拳(D1用戶登錄二線程組HTTP請(qǐng)求名稱:用戶登錄添加插入上投剪切Ctrl-X復(fù)制Ctrl-C粘貼Ctrl-V配置元件?定時(shí)器?獲耳響E/BeanSXDecugrr±hF前置處理器?后置處理器?斷言?眼限制的接口時(shí)去掉參數(shù)化,直接使用卬口眥4CSVDataSetConfigFTPW求最省值DNSCacheManager\ovsn\iHTTPCacheManagerHTTPCookia管理器添加成功后的界面如下圖所示CSVDataSetConfig名稱:loginusers注釋:Filename:文件路徑和文件名稱,需要帶文件后綴注意:這里必須使用TXT文件然后另存為CSV文件,不然執(zhí)行時(shí)會(huì)報(bào)錯(cuò)全是亂碼。至于為什么會(huì)這樣,我也沒(méi)研究VariableNames(comma-delimited):文件中的參數(shù)名稱Delimiter(user,\t’fortab):當(dāng)文件中存在多個(gè)變量時(shí)可以用英文輸入法下的逗號(hào)隔開(kāi)。如果只有一個(gè)參數(shù)這里可以不填其他屬性值默認(rèn)就好(2)現(xiàn)在回到HTTP請(qǐng)求界面,如果是GET方法,則在Basic標(biāo)簽頁(yè)的Parameters標(biāo)簽區(qū)域的列表中添加參數(shù)化文件中的變量(如下圖所示)。列表中左側(cè)的“名稱”列填寫接口要傳遞的變量名稱,列表右側(cè)的“值”就填寫參數(shù)化文件中的變量名稱(格式必須是${變量名})。如果是POST方法,則在Basic標(biāo)簽頁(yè)的BodyData區(qū)域中輸入JSON格式的內(nèi)容,如下圖所示參數(shù)化放置位置可以在某個(gè)HTTP請(qǐng)求下,也可以在某個(gè)線程組下,還可以放在測(cè)試計(jì)劃中!正則表達(dá)式提取器有些返回值是動(dòng)態(tài)值,而這些動(dòng)態(tài)值又會(huì)作為其他接口需要傳遞的參數(shù),那么我們就需要對(duì)這些動(dòng)態(tài)值進(jìn)行提取保存到變量中,再讓其他接口直接調(diào)用。舉例說(shuō)明,現(xiàn)在有個(gè)接口的返回內(nèi)容中有token值(JSON格式,如下圖所示),而這個(gè)值又會(huì)作為其他接口的Cookie值進(jìn)行傳遞,使其能保證其他接口能成功
被調(diào)用。Text0用戶登錄Q被調(diào)用。Text0用戶登錄QBeanShellSamplera0用戶登錄電BeanShellSampler'取樣器結(jié)果「請(qǐng)求「響應(yīng)藪據(jù)I rcode":0;message":wSUCCESSVdata,':ricr:1538994388837twusername-:"xnUsr000r,'headPicture':"TealNamew:'pJpJVmobile":「identityCa「cr-4212221994031900017sex-:“MALE」。「gl(^1538979561575:o^■gName:)性能車隊(duì)零?7o(■gType7CUSTOMER二statLls…ENABLE7qq-:一「email""Vaddress":"|rokerr:-41a7d54c-9810-4d5f-9460-29c783b49a^:^KginType?:?SYS-「defaultVirr:null}}圖中內(nèi)容是:"token":“xxxx”?,F(xiàn)在要得到xxxx就得使用正則表達(dá)式提取器。(1)在HTTP請(qǐng)求下方添加后置處理器-正則表達(dá)式提取器,界面如下所示按照上圖內(nèi)容進(jìn)行填寫,引用名稱請(qǐng)牢記,這個(gè)在后面會(huì)用到。正則表達(dá)式內(nèi)容這個(gè)我也是百度出來(lái)的("token":"(,+?)”),大家可以自行研究下。參數(shù) 釋義引用名稱 在HTT僧請(qǐng)求中,引用此效據(jù)r需要用到的名稱正則表達(dá)式 用于將需要的數(shù)據(jù)提取出來(lái)模板 表示使用提取到的第幾個(gè)值:獷1$:表示取所有值$0$:表示隨機(jī)取值$1$:表示取第1■個(gè)$2$:表示取第二個(gè)以此類:表示取第n個(gè)匹配數(shù)字(0代表隨機(jī)) 0代表隨機(jī)取值,1代表全部取值缺省值 如果正則表達(dá)式?jīng)]有搜找到值,則使用此缺省值此時(shí)可以用DebugSampler查看接口返回?cái)?shù)據(jù)中的正則的值是否正確,執(zhí)行腳本即可。
Text「取樣器結(jié)果'請(qǐng)求‘響應(yīng)索(據(jù)口Text「取樣器結(jié)果'請(qǐng)求‘響應(yīng)索(據(jù)口用戶登錄電BeanShellSamplerODebugSamplerJMeterThread.last_sample_ok=trueJMeterThread.pack=org.apache.jmeter.threads.SamplePackage@5c40da19START.HMS=141009START.MS=1541390209222START.YMD=20131105TESTSTART.MS=154U0612S955_jmeter.USER_TOKEN_=(1)【用戶登錄】線程組1-1password=DC483E80A7A0BD9EF71D8CF973673924token=t2aae5ab-5441-4463-3cca-50a5cf6bdee9t。既 既n-:T2aae5ath544M4Btoken_g1=12aae5ab-544M463-Scca-50a5cf6bdee9username=xnUsr0001(2)現(xiàn)在進(jìn)入到HTTP請(qǐng)求頁(yè)面,在輸入值的列表(GET方法)或JSON輸入?yún)^(qū)域(POST方法)輸入已被正則的變量名稱即${變量名}(也就是正則表達(dá)式提取器中的“引用名稱”)。正則表達(dá)式腳本可見(jiàn)如何使用JMETER\腳本\腳本04(正則表達(dá)式提取器).jmx。集合點(diǎn)這個(gè)功能是用于并發(fā)測(cè)試的。在某個(gè) HTTP請(qǐng)求下方添加“定時(shí)器”-SynchronizingTimer",界面如下圖所示“NumberofSimulatedUserstoGrounpby”代表并發(fā)數(shù)。該數(shù)值的設(shè)置請(qǐng)注意:集合點(diǎn)中的并發(fā)數(shù)最好能被線程組中設(shè)置的用戶數(shù)整除(線程用戶數(shù)%并發(fā)數(shù)=0),不然跑腳本會(huì)報(bào)錯(cuò)。集合點(diǎn)在線程組中可以隨意拖動(dòng),必須放在HTTP請(qǐng)求前面。集合點(diǎn)可以和線程組的“線程屬性”和“調(diào)度器”結(jié)合使用,主要是為了保證所有的用戶能到達(dá)集合點(diǎn)并能發(fā)生并發(fā)。
一段時(shí)間內(nèi)多次并發(fā)的設(shè)置需要注意線程數(shù)、Ramp-UpReriod、循環(huán)次數(shù)、調(diào)度器和SynchronizingTimer的設(shè)置關(guān)系。比如現(xiàn)在我要讓100個(gè)線程在一段時(shí)間內(nèi)有間隔的完成多次并發(fā),設(shè)置為:線程數(shù)100,Ramp-UpReriod大于100即可(最好是線程數(shù)的倍數(shù)),循環(huán)次數(shù)為1,調(diào)度器選中然后輸入持續(xù)時(shí)間,接著在SynchronizingTimer設(shè)置并發(fā)數(shù)即可。集合點(diǎn)腳本可見(jiàn)如何使用JMETERM^^'腳本05(SynchronizingTimer集合點(diǎn)).jmx。2.2.4響應(yīng)斷言作用是驗(yàn)證返回內(nèi)容是否為測(cè)試所需要的,有些情況下,返回內(nèi)容不為SUCCESS但取樣器頁(yè)面中會(huì)顯示為200。主要是為了調(diào)試測(cè)試腳本返回信息是否為測(cè)試所需,避免浪費(fèi)時(shí)間做無(wú)用功。正式測(cè)試時(shí)可以禁用此功能。這里我以HTTP請(qǐng)求的響應(yīng)信息為例進(jìn)行講解。(1)在HTTP請(qǐng)求下添加“斷言-響應(yīng)斷言”,如下圖所示1測(cè)試計(jì)劃XH^P信息頭管理器調(diào)用有權(quán)限限制的接口時(shí)去掉參數(shù)化直接使用麻號(hào)(密碼:63A9F0EA7Bive口Usemultipart^ixrn-datafeePOSTrd":"${password}|1方法POSTHTTP請(qǐng)求H口哨求默認(rèn)值名稱:用戶登錄插入上期Ctrl-XCtrl-CBeanSheltf|f=Ctrl-VBSFAssertion1DuplicateCtrl+Shift-CCompareAssertionResetGuiHTMLAssertionDeletEJSR223AssertionUndoMD5Hex斷言RedoSiieAssertionSMIMEAssertionXMLSchemaAssertionXMLffif1測(cè)試計(jì)劃XH^P信息頭管理器調(diào)用有權(quán)限限制的接口時(shí)去掉參數(shù)化直接使用麻號(hào)(密碼:63A9F0EA7Bive口Usemultipart^ixrn-datafeePOSTrd":"${password}|1方法POSTHTTP請(qǐng)求H口哨求默認(rèn)值名稱:用戶登錄插入上期Ctrl-XCtrl-CBeanSheltf|f=Ctrl-VBSFAssertion1DuplicateCtrl+Shift-CCompareAssertionResetGuiHTMLAssertionDeletEJSR223AssertionUndoMD5Hex斷言RedoSiieAssertionSMIMEAssertionXMLSchemaAssertionXMLffif言SaveasTestFragmentXPathAssertion響應(yīng)斷言SaveScre&nAsImagectri+shift-G斷言持續(xù)時(shí)間打開(kāi)…臺(tái)笄保存為.SaveNodeAsImagecui-G?Z運(yùn)營(yíng)看XHTIXMot■響山⑸的察看結(jié)果樹、鬃臺(tái)報(bào)告用表格察看圖形結(jié)果以斷言結(jié)果.、、*Transactioij-Hit.^nsrSr?萬(wàn)用戶登奉二關(guān)2小%獲電;響應(yīng)一-/日eanSt./Debug?Synchrc;0 (2)【故艮au⑶【故艮⑷【遴黑上防錄[線上斷言監(jiān)聽(tīng)器?海:/api/plc一匚自動(dòng)三定向Parameters-1{"usernar配置元件?定時(shí)能?前置處理器?后置處理器?ApplyTo默認(rèn)即可,要測(cè)試的響應(yīng)字段區(qū)域根據(jù)實(shí)際返回信息進(jìn)行選擇,我這里選擇的是“響應(yīng)文本”。模式匹配規(guī)則一般選中Substringo要測(cè)試的模式區(qū)域中輸入你要斷言的返回內(nèi)容信息,一般是SUCCESS。如下圖所示響應(yīng)斷言名稱:卜向應(yīng)斷言注摩Applyto:OMainsampleandsub-samples?MainsampleonlyOSub-samplesonlyOJMeterVariable要馴試的響應(yīng)字廢您響應(yīng)文本ODocument(texl)。URL樣本O響應(yīng)代碼。響應(yīng)信息OResponseHeaders□IgnoreStatus模式匹配版則O包括O匹配OEquals?Substring□否要測(cè)試的模式要測(cè)試的模式SUCCESS此時(shí)再在HTTP請(qǐng)求或者該請(qǐng)求所在的線程組中添加監(jiān)聽(tīng)器斷言結(jié)果,當(dāng)腳本運(yùn)行后可以在這里查看響應(yīng)結(jié)果是否正確。正確的結(jié)果直接顯示為HTTP請(qǐng)求名稱如下圖所示斷言結(jié)果名稱:|斷言結(jié)果注暮:所有數(shù)據(jù)寫入一個(gè)文件文件名 |捌苴…斷言: 用戶登錄錯(cuò)誤的結(jié)果顯示為與輸入的斷言內(nèi)容不匹配的信息,如下圖所示響應(yīng)斷言腳本可見(jiàn)如何使用JMETER\腳本\腳本06(響應(yīng)斷言).jmx。另外返回內(nèi)容中如果想要監(jiān)控的信息是動(dòng)態(tài)值,那么可以使用正則先獲取返回信息然后再在響應(yīng)斷言里輸入正則變量即可。2.2.5IP欺詐在做性能測(cè)試時(shí),如果不設(shè)置ip欺詐,那么在運(yùn)行腳本時(shí)所有的線程用的都是同一個(gè)ip地址,這樣不太符合真實(shí)的線上環(huán)境。另外有些程序會(huì)限制ip的使用,比如一個(gè)用戶只能使用一個(gè)ip地址,那么在運(yùn)行腳本時(shí)不使用ip欺詐的結(jié)果就是祖國(guó)江山一片紅。所以ip欺詐功能需要根據(jù)實(shí)際情況來(lái)決定是否使用。反正我不用。以下操作步驟都是我在網(wǎng)上抄的,所以能不能成功,我不確定。(1)首先獲取一些閑置的ip地址,且必須為固定地址,不能是自動(dòng)獲取的地址,方法:可以ping下哪些ip沒(méi)有用,沒(méi)有用的可以拿來(lái)用(cmd-pingip地址,也可以直接找網(wǎng)管)。(2)打開(kāi)網(wǎng)絡(luò)共享中心一本地連接一點(diǎn)擊鏈接的網(wǎng)絡(luò)查看一屬性一Internet協(xié)議版本4一屬性一高級(jí)一添加多個(gè)IP地址,如下圖所示
文件舊漏撮?格磔L型《空一雪些172.1K.200.16172,16,200.123(4)在HTTP請(qǐng)求一下添加邏輯控制器-簡(jiǎn)單控制器,選擇該控制器的目的是避簡(jiǎn)單控制器名稱隼錄發(fā)帖注暮:免造成HTTP簡(jiǎn)單控制器名稱隼錄發(fā)帖注暮:/htt£/htt£添加以:登號(hào)摘入上級(jí)?/限Z咻ChangeControlfer甥切5發(fā)巾AZ發(fā)巾復(fù)制http粘貼Jhttfin■■ntan.n4n配置元件?CSVDataSetConfig定的盎 ?前置處理器?Sampler卜后置處理器?麻吉 卜u啊0cacneManagerFTP請(qǐng)求熱省值HTTPCacheManagerHTTPCookie管理器HTTP信口落好理黑Ctrl-XCtrl-CCtrl-V1■r>U:XLL事則回時(shí)刷XHTTF信息頭管理器;線程組Xhttp請(qǐng)求默認(rèn)值:;i:f八rm產(chǎn)招三,4七工口占口稱:(D1用戶登錄】線程組CriticalSectionControlleriu(2)【故障添加攻羯控制雷?>…(3)【故障Start酉E置元件?ForEmch控制器5口)1運(yùn)營(yíng)Startnopauses定時(shí)器?IncludeController 5>(5)【其他人.察看結(jié)果樹Validate前置處理器?jp@gc-ParameterizedController、聚含報(bào)告入用表格察看算4p圖形結(jié)果二斷言結(jié)果4yTransaction*4yHitsperSec4yResponseTm復(fù)制粘貼DuplicateCVI-XC-trlCCtrl-VCtrl+Shift-CSamplerk后置處理器?斷言 ?監(jiān)聽(tīng)器 ?RuntimeController -SwitchControllerWhilleController事著控制器ResetGui刪除Delete]DelayThreat]調(diào)度器交替控制器僅一次控制器吞吐里控制器4yResponseT4yBytesThroui4yTransactionUndoRedo度■配置陵時(shí)詞f種)如果UID控制器錄制控制器4yResponseT(5)添加CSynchronizin打開(kāi)化警網(wǎng)EhB才面VSDataSetConfig,即參數(shù)專行參數(shù)化這里就不多說(shuō)了?!癟estPlanfuThreadGroup*HTTPCookieManager冠UserDefinedVariables乂HTTPHeaderManager1卜s登錄發(fā)(6)接著將http請(qǐng)求界面中的Implementation改為HttpClient4oCixrterrt褶百:/i;:Lcaiiiorumphfi〃!國(guó)百立完向里逆無(wú)運(yùn)向YCixrterrt褶百:/i;:Lcaiiiorumphfi〃!國(guó)百立完向里逆無(wú)運(yùn)向YUsaKespAliXift, ^一■:?■:.「-「■」」 「l曰ruwjsMGOEpatibWh&nt:3附眼將器郵:笄舞名可堿P:otahostrdqti-ThreadGroupHTTPCOOKie蜀an被wuserDinnedv^ri^esHTTPHeaderManagerHTTP請(qǐng)求BasicAxlvaticedHMpClienl4▼Iit,削enieiTtat麗:方法:CET端口號(hào):(7)將HTTP請(qǐng)求頁(yè)面切換到【Advanced】設(shè)置頁(yè)面設(shè)置sourceaddress為IP/Hostname。I刈暗1回1同―4BasicAdvancedBasicAdvancedf津TestPlanfajThreadGroup淺HTTPCookieManager犬.UserDefinedVariables*HTTPHeaderManager、1登錄發(fā)帖
HTTP請(qǐng)求名稱:http://localhost/upload.'Torum.php■,Embei■,Embeihttp://localhost/upload/fornm.php
HZ口目00“|~££&HTPJ1LFilesA:登錄事勞控制器/http://localhost/upload/forum.phpdhttp://localhosVuploadjTorum.php色發(fā)帖隼臺(tái)點(diǎn)-發(fā)帖事勞控制器Jhttp:.''/localhosVupload/forurn.php/httpJ/localhosVupload/member.php/http://localhosVuploadfforum.php口朗HTML文件獲取所有內(nèi)含的費(fèi)迪匚Sourceaddr&ssIPi'HostnameDevice-DeviceIPv4&asMD5hast]?(8)在后面添加CVSDataSetConfig設(shè)置好的參數(shù)名稱:${ipadress}。(9)添加結(jié)果樹,推行報(bào)告等,運(yùn)行查看。T.TflffiPianfq1TriruJdGidupKHTrPGgMifHiagw唐UfierDeHrtpriVarlsiWesXI^TTFHsacterMan.ageit3團(tuán)時(shí)1K■=VTHl;Fp!'--rJT.TflffiPianfq1TriruJdGidupKHTrPGgMifHiagw唐UfierDeHrtpriVarlsiWesXI^TTFHsacterMan.ageit3團(tuán)時(shí)1K■=VTHl;Fp!'--rJri3瓊青耕學(xué)代M工幅^113J--11233T*13rti*4一口OO9中事白中,營(yíng)?白。白4,0察看片果幗名春:緊香菇票利江年二照整甲?與人一十支件文件名^Fi:E?1JE^ml,Twcmjku&鰭。2he力n-L$thiAddFES3;473,日寓Cl14mDMlR口胃口WEdi加口KCEa_ll32nBg 君時(shí)10594瓦*P*EXCEn節(jié)旌—QNiiwussinum-iU;舒曰加『;XGE<J1LlmmZm『wqj?^iC^hnt*.:lln!iheifp-dlrvE!Jso-1內(nèi)㈱?吐Mn;:甲a*0icnnpjtiizie;wjrwu:0m$24CLR3.5.30F29)胸口eH:tn明|制W.Ie叫曲一中tn祁?irn困吟品q/巾9#$雁0/*,MlitfrticnMidEM-iMMrpiihlidppllrsHththtiMtHd.■appIkiUor(10)也可以使用【cmd-netstat-an】查看ip的使用情況。EQ3CiXVJ'indaiLVs\5ystem32\cmd.exeicrosoftwindows[版本10.0.105S6](c)2015lierasoftCorparatian?保留所有權(quán)利。:\Users\arindn>netstat-ani舌動(dòng)連接議PPPPPPPPPPPLfrccccccccccc^^WTTTTTTTTTTT?本地地址 外部地址狀態(tài)議PPPPPPPPPPPLfrccccccccccc^^WTTTTTTTTTTT?本地地址 外部地址狀態(tài)D.0.0.0:1350,0.0.0:0LISTENING口,0.0.0:44:0LISTENING0.0,0,0:66460,0.0,0:0LISTENTS:7680:0LISTENING0.包0.0:4965:0LISTENING0.0.0,0:496650,0.0.0:0LISTENING氏0.0.0:4^66:0LIS7EWIN3口,Q.口,0:496670,口,0,Q;QLISTENING0.0.0,0:4966:0LISTENING:49670:0LISTENING127.Q,0,1:40000.0,oho:oLISTENING3開(kāi)始搞事情HTTP接口的方法有很多,這里我只講解GET和POST兩種。另外監(jiān)控對(duì)象以WINDOWS為例。
3.1準(zhǔn)備工作(1)監(jiān)控TOMCAT資源(請(qǐng)參考2.1.1章節(jié)),監(jiān)控WINDWOS資源(請(qǐng)參考第2.1.2章節(jié))。(2)選取HTTP接口,了解接口需要傳遞的參數(shù),使用的方法及返回正常/錯(cuò)誤內(nèi)容及格式。(3)確定一個(gè)虛擬用戶是否只能使用一個(gè)IP地址。(4)確定消息頭內(nèi)容,可以通過(guò)瀏覽器的開(kāi)發(fā)者模式查看。以GoogleChrome瀏覽器為例簡(jiǎn)單講解。打開(kāi)瀏覽器輸入訪問(wèn)地址及賬號(hào)和密碼(登錄頁(yè)面),然后F12開(kāi)啟開(kāi)發(fā)者模式后切換到Network標(biāo)簽頁(yè)面開(kāi)始錄制,然后點(diǎn)擊登錄按鈕進(jìn)入到系統(tǒng)里面后關(guān)閉開(kāi)發(fā)者模式,找到登錄接口,接著點(diǎn)擊右側(cè)的Header標(biāo)簽頁(yè)面進(jìn)行相關(guān)內(nèi)容的查看即可。ElementsConsoleSourcesNetworkPerformanceMemoryApplicationSecurityAuditsJSCSSImgMediaFontDocWSManifestOther90000ms100000ms110000ms120000ms130000msDate:Mon,05Nov201809:45:24GMTServer:nginx/1.12.0vehidelou?t=1541411066681Set-Cookie:3AC_SESSIONID=8dl58425-8e27-4cdc-8441-79916062dbfd;Path:onlineRate?t=1541411066681Nov-201810:47:48GMT;HttpOnlyTransfer-Encoding:chunkedVary:OriginVary:Accept-EncodingonlineRate?t=1541411097504=1541411127496?RequestHeaders(10)□ElementsConsoleSourcesNetworkPerformanceMemoryApplicationSecurityAuditsJSCSSImgMediaFontDocWSManifestOther90000ms100000ms110000ms120000ms130000msDate:Mon,05Nov201809:45:24GMTServer:nginx/1.12.0vehidelou?t=1541411066681Set-Cookie:3AC_SESSIONID=8dl58425-8e27-4cdc-8441-79916062dbfd;Path:onlineRate?t=1541411066681Nov-201810:47:48GMT;HttpOnlyTransfer-Encoding:chunkedVary:OriginVary:Accept-EncodingonlineRate?t=1541411097504=1541411127496?RequestHeaders(10)□X-Application-Context:aerozhonghuan-jac-server:release:10041FlgetCurrentUserMenu?t=1541411066193□fuelConsumption?t=1541411066681OGroupbyframeOPreservelog(JDisablecache□OfflineOnline▼□current?t=1541411066684||getCurrer)tUserMenu?t=1541411066684□fuelConsumption?t=1541411097504vehidelou?t=1541411097504140000ms□□□□□vehidelou?t=1541411127496onlineRate?t=1541411127496rIfuelConsumption?t=1541411157509_TIvehidelou?t=1541411157509▼RequestPayloadviewsource▼{username:"facQl",password:"DC483E80A7A0BD9EF71D8CF973673924")password:"DC483E80A7A0BD9EF71D8CF973673924"22/25requests29.4KB/30.1KBtransferredusername:"facBl"3.2接口測(cè)試接口測(cè)試包括功能和性能兩個(gè)方面。該文章主要是講解如何使用JMETER編寫測(cè)試腳本,不包含性能測(cè)試的分析和調(diào)優(yōu)。該內(nèi)容可以參考另外一篇文章《性能分析與調(diào)優(yōu)指南》。腳本組成基本組成如下圖所示
r.測(cè)試計(jì)劃Xhttp信息頭管理器Xhttp請(qǐng)求默認(rèn)值fU線程組9Z用戶登錄乂loginusersL工響應(yīng)斷言一■Synch「onizjngTime「――察看結(jié)果樹一&果合報(bào)告?用表格察看結(jié)果?斷言結(jié)果國(guó)工作臺(tái)具體操作如下(1)打開(kāi)JMETER后,在測(cè)試計(jì)劃下添加線程組,如下圖所示又件瞬題search脛仃逝須幫助Threads(Users)k粘貼cui-vResetGuiUndoRedo+TTTTestFragment 卜酉EThreads(Users)k粘貼cui-vResetGuiUndoRedo+TTTTestFragment 卜酉E置元件 ?定時(shí)器 ?前置處理器 ?后置處理器 ?jp@gc-MappingThreadGroupjp@gc-UltimateThreadGroupsetupThreadGrouptearDownThreadGroup線程組名稱:注意:jp@gc-SteppingThreadGroup和jp@gc-UltimateThreadGroup用于性能測(cè)試的場(chǎng)景設(shè)置。setUpThreadGroup相當(dāng)于初始化,在線程組之前運(yùn)行。tearDownThreadGroup相當(dāng)于退出,在線程組之后運(yùn)行。這里講解的是線程組。(2)在該線程組下添加HTTP請(qǐng)求(3)在HTTP請(qǐng)求界面的Basic標(biāo)簽區(qū)域輸入服務(wù)器IP、端口號(hào)、選擇方法(一般是GET和POST),輸入訪問(wèn)路徑,最后再Parameters或者BodyData標(biāo)簽頁(yè)中添加或者輸入要傳遞的參數(shù)名和值一般情況下,用非JSON格式傳遞參數(shù)的值在Parameters標(biāo)簽頁(yè)的列表中添加,如下圖所示用JSON格式傳遞的參數(shù)在BodyData標(biāo)簽頁(yè)中輸入,如下圖所示
[_|自動(dòng)受定向叵]阻葩M定向0LfeeKeepAlive||UsemuItipart-'fc-rm-dstafc-rParametersBodyDataFilesUpload-1~{"username":{username}"?"password":"J{password}"^(4)如果接口需要通過(guò)不同的值進(jìn)行測(cè)試,那么就需要對(duì)接口中待傳遞的參數(shù)進(jìn)行參數(shù)化。在HTTP請(qǐng)求上右鍵點(diǎn)擊添加-配置元件-CSVDataSetConfig。完成參數(shù)化設(shè)置該配置元件可以放在HTTP請(qǐng)求下,也可以放在線程組,更可以放在測(cè)試計(jì)興HTT喟息頭管理器CSVDataSetConfig興HTT喟息頭管理器CSVDataSetConfig名稱:)CSVDataSetConfig注釋:共HTT嗝求默認(rèn)值r短線程組F/loginusers:氣響F/loginusers:氣響應(yīng)既言興CSVDataSetConfig-■SynchronizingTimer—&察看結(jié)果樹K.鬃合報(bào)告&用表格察看結(jié)果—1.斷言結(jié)果K工作臺(tái)3.2.2數(shù)據(jù)共享這里借共享Cookie值來(lái)講解如何讓多個(gè)線程組共享某個(gè)Cookie值。比如只想進(jìn)行一次登錄生成Cookie值后,其他多個(gè)線程組均使用這個(gè)Cookie值進(jìn)行接口的調(diào)用。當(dāng)一個(gè)JMETER腳本中存在多個(gè)線程組時(shí)會(huì)用到數(shù)據(jù)共享技術(shù)。1)先準(zhǔn)備2個(gè)HTTP接口(分別放在2個(gè)線程組里),HTTPCookie管理器,HTTP信息頭管理器和HTTP請(qǐng)求默認(rèn)值(可選)。結(jié)構(gòu)如下f4接口測(cè)試然HTTP請(qǐng)求默認(rèn)值XHTTP。。曲語(yǔ)管理器X-HTTP信息頭管理器u1差錄線程組/1量錄匕3」2-查詢數(shù)據(jù)線程組X2■■查詢數(shù)據(jù)、察看結(jié)果樹另外該測(cè)試計(jì)劃中已選中如下選項(xiàng)(即先運(yùn)行登錄線程組然后再運(yùn)行其他線程組)
.接口測(cè)試XHTTP?求默認(rèn)值XHTTPCookieXHTTP信息頭管理器々斑1壁錄線程組遙錄tie,2-查詢數(shù)據(jù)^程組丁/2-查詢數(shù)據(jù)L 察看結(jié)果樹LR工作臺(tái)H獨(dú)立運(yùn)行整個(gè)鞋程組(惻如在一個(gè)組運(yùn)行緒束后啟動(dòng)下一個(gè))口H獨(dú)立運(yùn)行整個(gè)鞋程組(惻如在一個(gè)組運(yùn)行緒束后啟動(dòng)下一個(gè))口RuntearDownThreadGroupsaftershutdownofmainthreads口國(guó)勤則試模式只有當(dāng)你需要記錄每個(gè)清求從服務(wù)器取得的數(shù)據(jù)到文件時(shí)才需要選擇函數(shù)測(cè)試模式。為了方便理解,我們將登錄線程組設(shè)置3個(gè)線程數(shù),查看數(shù)據(jù)線程組設(shè)置1為了方便理解,?4t接口測(cè)試http請(qǐng)求默認(rèn)值丈HTTP管理器丈HTTP信息頭管理器U1差錄線程組[J1量錄2-查詢數(shù)據(jù)線程組察看結(jié)果樹工作臺(tái)?4t接口測(cè)試http請(qǐng)求默認(rèn)值丈HTTP管理器丈HTTP信息頭管理器U1差錄線程組[J1量錄2-查詢數(shù)據(jù)線程組察看結(jié)果樹工作臺(tái)從上圖中我們可以看出查看數(shù)據(jù)線程組訪察看結(jié)果樹名稱:察看結(jié)果樹注窿所有數(shù)據(jù)寫入一個(gè)文件文件名Search:T&xt電1差錄日1差錄問(wèn)系統(tǒng)失孵源因是會(huì)話過(guò)期。了找出出錯(cuò)原因,我們看下查詢數(shù)據(jù)接口的請(qǐng)求92查詢數(shù)據(jù)內(nèi)容(如下圖所示)Text廣取樣器結(jié)果『請(qǐng)求『響應(yīng)熟據(jù)GEThttp://212.64.69,99:10041/api/app/advertisement/getLatestAdList[nocookies]GEThttp://212.64.69,99:10041/api/app/advertisement/getLatestAdList[nocookies]電1墨錄中錄/忸查詢額據(jù)RequestHeaders:Connection:keep-aliveContent-Type:application/jsonHost:212.64.69,99:10041User-Agent:Apa.che-HttpClient/4.5.2(Javayi,3,0_51;暫時(shí)沒(méi)發(fā)現(xiàn)問(wèn)題,現(xiàn)在我們將查詢數(shù)據(jù)接口放在登錄線程組的登錄接口下方,再次執(zhí)行腳本然后再看看查詢數(shù)據(jù)的請(qǐng)求內(nèi)容(如下圖所示)XHTTP請(qǐng)求默認(rèn)值XHTTPcookie管理器XHTT喟息頭管理器鼐1-登錄線程組卜量錄LJ2道詢數(shù)據(jù)M2-查詢數(shù)據(jù)線程組察看結(jié)果樹名稱:察看結(jié)果樹所有數(shù)據(jù)寫入一個(gè)文件KI工作臺(tái)察看結(jié)果樹文件名取樣署結(jié)果請(qǐng)求GET9:10041/api/app/advertisement/getLatestAdListCookieXHTTP請(qǐng)求默認(rèn)值XHTTPcookie管理器XHTT喟息頭管理器鼐1-登錄線程組卜量錄LJ2道詢數(shù)據(jù)M2-查詢數(shù)據(jù)線程組察看結(jié)果樹名稱:察看結(jié)果樹所有數(shù)據(jù)寫入一個(gè)文件KI工作臺(tái)察看結(jié)果樹文件名取樣署結(jié)果請(qǐng)求GET9:10041/api/app/advertisement/getLatestAdListCookieData:悔卜查瞰握?2-查詢數(shù)據(jù)Q2-查詢薊據(jù)RequestHeaders:Connection:keep-aliveContent-Type:application/jsonHost:9:10041User-Agent:Apache-HttpClient/4.5.2(Java/1.8.0_51)以上兩圖以比較,發(fā)現(xiàn)查詢數(shù)據(jù)接口的請(qǐng)求內(nèi)容中有個(gè)CookieData值,這個(gè)值就是我們要獲取的數(shù)據(jù)。CookieData值有兩種使用方法:固定值和動(dòng)態(tài)值,現(xiàn)在分別進(jìn)行講解如何獲取CookieData值。Cookie固定值我們還是將2個(gè)接口分別放在2個(gè)線程組里。只運(yùn)行登錄線程組,得到登錄接口返回的token值。如下圖所示Xhttp請(qǐng)求默認(rèn)值XHTTPCookie管理器XHTTPW息頭管理器,戰(zhàn)1-登錄續(xù)程組1/1垂錄,卜,2■■查詢數(shù)據(jù)線程組
2■■查詢數(shù)據(jù)&寮看結(jié)果樹察看結(jié)果樹名稱:上看結(jié)果樹注暮:所有數(shù)據(jù)寫入一個(gè)文件文件名口瀏覽…|Log/DisplayOnly:口僅日志錯(cuò)誤□SuccessesConfigureSearch:| |[_jCasesensitive口RegularexpSearchReset取樣i號(hào)結(jié)果[請(qǐng)求I響應(yīng)數(shù)據(jù)I rcode,:0,,message-:'SUCCESSTdataTi<r:1533901647443,"createTime-:-2018-08-10ig4y2r.'createByr'roor.'updateTime^OIS-OS-IO20:08:36","updateBy-:"roor,tdl(r:null,"fleetl(r:1527577061112,"type--driver,TleetName"湊微車隊(duì)丁avata「:null「driverName-濟(jì)里-JnickName-mullJmObile-:-1588890100V,"passwor(T:-5E774EE5AEF9AODBF6B52B4E76FB4CCDTidentityCar(r7541234156845675456',"ser:-MALEVt>irtridar:null,■emair:null,"qq':null;address":null,'driverLicense":"541234156845675456*,-|icenseValidDate":"2020-08-1200:00:00-|icensePicture":,static/images/noPichjre.png",'qualityValidDate':-2021-08-1900:00:00","qualityPicture':"static/images/noPicture.pngTapplyStatus,:-NOT_APPLY".|[o^en]'5ddO6ecc-83d1-4fcd-8bdd-2b9197c2b8er-signe(rfalse,-identity':"driverlfleerrdefauttVin":*TTS0000200003000r,"openStolen-"YES","fleetUsernull.lotalPoinrnull."sair^Swie-}}記住這個(gè)tokne值。此時(shí)打開(kāi)HTTPCookie管理器輸入以下內(nèi)容.接口測(cè)試XHTTPi青求默認(rèn)值Cookie管理署xhttp信息頭管理器滋1蚩錄線程組上/1量錄卜.2■■查詢數(shù)據(jù)線程組T 2-查詢題據(jù)匚屋察看結(jié)果樹HTTPCookie管理器名稱:〔HTTPCookie管理器注釋:Options□每次反復(fù)清除Cookies?Implementation:HC4CookieHandler▼CookiePolicy:standard存睛在Cookie管理器中的Cookie-3L 7 7JAC_SESSIONID5dd06ecc-83d1-4fcd-8bdd-2b9197c2b8e79/安全
五上圖中的“值”就是token值。然后再將HTTPCookie管理器放在第2個(gè)線程中,如下圖所示
?*接口測(cè)試http請(qǐng)求默認(rèn)值¥http信息頭管理器fU1型錄線程組工Z1餐錄q電2■■查詢數(shù)據(jù)線程組I XHTTPC口口tie管理器—|y2■■查詢數(shù)據(jù)
察看結(jié)果樹LKI工作臺(tái)啟動(dòng)2個(gè)線程組并執(zhí)行,最終得到線程組的正確返回值,如下圖所示辛-0接口測(cè)試XH仃嘴求默認(rèn)值XH/Pfl辛-0接口測(cè)試XH仃嘴求默認(rèn)值XH/Pfl息頭管理器9《5》1建錄線程組IJ1聿錄,移5■■查詢數(shù)據(jù)線程組)<j;HTTPCookie管螺L/2-查詢數(shù)據(jù)匚“察看結(jié)果樹察看結(jié)果樹名稱:|察看結(jié)果樹注釋二所有獺據(jù)寫入一個(gè)文件取樣溶結(jié)果請(qǐng)求響應(yīng)數(shù)據(jù)|,"message':"BT:'roor,"adType":-DRIVERVadTitle':"^^hB222-,"adCover:whttp://6:30501/files/cover/rafedbac-a02c-4ade-98c0-c4089b16f8fe.png'"advertiser":"■誰(shuí)看見(jiàn)7adeontenr:Jp>司忖告,新熠加,^0>i</p>"adStatus":",RELEASEVissuelcr:1,-issueTime-:-2O18-O6-2613:56:32°,"issueName"nullLricTiZO/createTime'^IS-oe-ia11:41:42VcreateBy":?rootVupdateTime":"2018-06-1911:41:4T「updateBT;"roofadType■:-DRIVER-adTltleF機(jī)廣告Tja(lCover:-http://222.2l2.94.96:3050l/mes/cover/6953cca2-54aX52l-a5b2-eaf746b026d9.png-:a(?veEser■一道森傳媒--adContenr「vp也難輕卡車輛展示v/p>7adStatus~-RELEASETissuel(ri「issueTime;-20l8-06-1911:41:47VissueName":null}.ri<r:l7,'createTimeT2018-06-1518:20:36","createBr:Toor;updateTime":"2018-06-1518:20:4Z;updateBr:Toor;adType':'DRIVER',"adTitle':'^ff',"adCover:-http://26:30501/files/cover/4ffc27c0-ca6a?4637-aeb2-e6e42bf1f593.jpg丁advertiser:11優(yōu)酷傳媒"JadContenf,vp邛可啥地方撤地方v/p>TadStatus^RELEASE",■issuel(T:fissueTime':-2018-06-1518:20:4r;issueName':nullDCookie動(dòng)態(tài)值使用原理:獲取第1線程組中登錄成功返回的token值后將其設(shè)置為全局變量,然后該變量作為第2個(gè)線程組中接口的cookie值使用。我們需要“正則提取器”(用于獲取token值并保存在變量里)和“BeanShellSampler(將token值設(shè)置為全局變量)”。1)修改修改perties文件:CookieManager.save.cookies=true。重啟jmeter2)正則提取器放在登錄接口下方,BeanShellSampler放在第1個(gè)線程組下方,結(jié)果如下圖所示
?金接口則試HTTP請(qǐng)求默認(rèn)值乂HTTP信息頭管理器?混巾手錄線程組9/1差錄>正則表達(dá)式提取器
萬(wàn)BeanShellSampler.接口測(cè)試Xhttp清求默認(rèn)值X.接口測(cè)試Xhttp清求默認(rèn)值Xhttp信息頭管理器論1登錄線程組?"W1羞錄?畫裘達(dá)式提取圖LJBeanShellSampler(,2-查詢數(shù)據(jù)線程組XHTTPCoolde管理器L/2-查詢數(shù)據(jù)L屋瓢看結(jié)果樹KI工作臺(tái)正則表達(dá)式提取器名稱:I正貝陸達(dá)式提取器 一注釋:Applyto:QMainsampleandsub-samples(§)MainsampleonlyOSub-samplesonlyOJMeterVariable引用名稱:token正則表達(dá)式:引用名稱:token正則表達(dá)式:token-:-(.+?)'模板二$1$匹配數(shù)字(0代志隨機(jī)):1赦省值:I□Useemptydefaultvalue⑥主體OBody(unescaped)OBodyasaDocumentO信息頭ORequestHeadersOURLO響應(yīng)代斛O響應(yīng)信息引用名稱:token,可以自定義正則表達(dá)式:"token〃:〃(.+?)〃,不同數(shù)值的表達(dá)式寫法不一樣模板:$1$匹配數(shù)字:04)BeanShellSampler:${__setProperty(token,${token},)},如下所示5)此時(shí)在第2線程組中“HTTPCookie管理器”中輸入如下內(nèi)容名稱:JAC_SESSIONID值:${_property(token)},這就是全局變量名稱域:就是接口的IP地址路徑:/7-1接口則試Xhttp請(qǐng)求默認(rèn)值X7-1接口則試Xhttp請(qǐng)求默認(rèn)值Xhttp信息頭管理器卜池登錄線程組O-Z1遙錄L/BeanShellSampler,:卷2-查詢數(shù)據(jù)線程組J2-查詢數(shù)據(jù)XHTTPCookie管理器察看結(jié)果樹L兇工作臺(tái)察看結(jié)果樹名稱:|察看結(jié)果樹注釋:斫有藪據(jù)寫入一個(gè)文件 文件名 瀏覽…Log/DisplayOnly:口僅Search:InCasesensitive口Regularexp.SearchResetText?1Text?1-登錄。BeanShellSampler電2-查詢數(shù)據(jù)rcode':0,"message-:'SUCCESS",'data':[ricr:21,'createTime-:-2018-06
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025湖南張家界市桑植縣衛(wèi)生健康局機(jī)關(guān)所屬事業(yè)單位公開(kāi)選調(diào)工作人員3人模擬試卷完整參考答案詳解
- 2025年重組載體疫苗合作協(xié)議書
- 2025年近代物理研究所部分研究室負(fù)責(zé)人競(jìng)聘考前自測(cè)高頻考點(diǎn)模擬試題及答案詳解(各地真題)
- 2025廣東惠州仲愷高新區(qū)招聘中小學(xué)教師105人(編制)考前自測(cè)高頻考點(diǎn)模擬試題及答案詳解(名校卷)
- 2025安慶岳西縣安徽省岳順人力資源服務(wù)有限公司招聘26人模擬試卷含答案詳解
- 2025黑龍江黑河市愛(ài)輝區(qū)花園社區(qū)衛(wèi)生服務(wù)中心招聘非事業(yè)編制人員7人考前自測(cè)高頻考點(diǎn)模擬試題及完整答案詳解1套
- 2025昆明市呈貢區(qū)衛(wèi)生健康系統(tǒng)編外合同制專業(yè)技術(shù)人員招聘(7人)考前自測(cè)高頻考點(diǎn)模擬試題及參考答案詳解1套
- 2025江蘇徐州醫(yī)科大學(xué)招聘專職輔導(dǎo)員4人考前自測(cè)高頻考點(diǎn)模擬試題有完整答案詳解
- 2025廣西崇左憑祥市國(guó)防動(dòng)員辦公室公開(kāi)招聘工作人員1人考前自測(cè)高頻考點(diǎn)模擬試題完整參考答案詳解
- 2025北京首都師范大學(xué)附屬育新學(xué)校招聘12人模擬試卷及答案詳解(有一套)
- 國(guó)家事業(yè)單位招聘2025國(guó)家林業(yè)和草原局直屬事業(yè)單位第二批招聘應(yīng)屆畢業(yè)生初試有關(guān)安排筆試歷年參考題庫(kù)附帶答案詳解
- 2025年二手車行業(yè)二手車電商平臺(tái)發(fā)展與市場(chǎng)前景研究報(bào)告
- 骨盆矯正課件
- 湖南省2025年中考物理真題含答案
- 彩虹超輕粘土課件
- 結(jié)直腸癌課件
- 盆腔包蟲CT課件
- GJB1406A-2021產(chǎn)品質(zhì)量保證大綱要求
- 統(tǒng)編版2025-2026學(xué)年語(yǔ)文四年級(jí)上冊(cè) 第一次月考測(cè)試卷(一、二單元)(有答案 )
- 運(yùn)動(dòng)素質(zhì)知到課后答案智慧樹章節(jié)測(cè)試答案2025年春浙江大學(xué)
- 2023-2024學(xué)年遼寧省沈陽(yáng)市郊聯(lián)體高二上學(xué)期10月月考物理試題(解析版)
評(píng)論
0/150
提交評(píng)論