使用JMeter進行web性能測試具體操作.ppt_第1頁
使用JMeter進行web性能測試具體操作.ppt_第2頁
使用JMeter進行web性能測試具體操作.ppt_第3頁
使用JMeter進行web性能測試具體操作.ppt_第4頁
使用JMeter進行web性能測試具體操作.ppt_第5頁
免費預(yù)覽已結(jié)束,剩余39頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

利用JMeter進行Web測試,King_W,利用JMeter進行Web測試,JMeter介紹腳本錄制運行JMeter進行測試JMeter主要組件介紹參數(shù)化設(shè)置動態(tài)數(shù)據(jù)關(guān)聯(lián)使用命令行運行JMeter腳本利用XSLT分析JMeter結(jié)果文件,JMeter介紹,JMeter,一個100的純Java桌面應(yīng)用,它是Apache組織的開放源代碼項目,它是功能和性能測試的工具。JMeter可以用于測試靜態(tài)或者動態(tài)資源的性能(文件、Servlets、Perl腳本、Java對象、數(shù)據(jù)庫和查詢、ftp服務(wù)器或者其他資源)。原先Jmemer是為Web/HTTP測試而設(shè)計的,但是它已經(jīng)擴展以支持各種各樣的測試模塊。它和用于HTTP和SQL數(shù)據(jù)庫(使用JDBC)的模塊一起運送。它可以用來測試靜止資料庫或者活動資料庫中的服務(wù)器的運行情況,可以用來模擬對服務(wù)器或者網(wǎng)絡(luò)系統(tǒng)加以重負(fù)荷以測試它的抵抗力,或者用來分析不同負(fù)荷類型下的所有運行情況。它也提供了一個可替換的界面用來定制數(shù)據(jù)顯示,測試同步及測試的創(chuàng)建和執(zhí)行。Jmeter的下載地址:/jmeter/usermanual/index.htmlJMeter的特性:a)能夠?qū)TTP和FTP服務(wù)器進行壓力和性能測試,也可以對任何數(shù)據(jù)庫進行同樣的測試(通過JDBC)。b)完全的可移植性和100純Java。c)完全Swing和輕量組件支持(預(yù)編譯的JAR使用javax.swing.*)包。d)完全多線程框架允許通過多個線程并發(fā)取樣和通過單獨的線程組對不同的功能同時取樣。e)精心的GUI設(shè)計允許快速操作和更精確的計時。f)緩存和離線分析/回放測試結(jié)果。g)高可擴展性:h)可鏈接的取樣器允許無限制的測試能力。i)各種負(fù)載統(tǒng)計表和可鏈接的計時器可供選擇。j)數(shù)據(jù)分析和可視化插件提供了很好的可擴展性以及以及個性化。k)具有提供動態(tài)輸入到測試的功能(包括Javascrpt)。l)支持腳本變成的取樣器(在1.9.2及以上版本支持BeanShell)。,腳本錄制,利用BadBoy進行腳本錄制,利用JMeter的代理服務(wù)器功能進行腳本錄制,利用BadBoy錄制JMeter腳本(1),通過Badboy的官方網(wǎng)站(.au)下載Badboy的最新版本;安裝Badboy。安裝過程同一般的Windows應(yīng)用程序沒有什么區(qū)別,安裝完成后你可以在桌面和Windows開始菜單中看到相應(yīng)的快捷方式如果找不到,可以找一下Badboy安裝目錄下的Badboy.exe文件,直接雙擊啟動Badboy;啟動Badboy,你可以看到下面的界面。,利用BadBoy錄制JMeter腳本(2),在地址欄(圖中紅色方框標(biāo)注的部分)中輸入你需要錄制的Web應(yīng)用的URL這里我們以為例。點擊開始錄制按鈕(圖中藍(lán)色圓圈標(biāo)注的部分)開始錄制。開始錄制后,你可以直接在Badboy內(nèi)嵌的瀏覽器(主界面的右側(cè))中對被測應(yīng)用進行操作,所有的操作都會被記錄在主界面左側(cè)的編輯窗口中(圖中黃色方框標(biāo)注的部分)在這個試驗中,我們在baidu的搜索引擎中輸入JMeter進行搜索。不過錄制下來的腳本并不是一行行的代碼,而是一個個Web對象這有點像LoadRunner的VuGen中的TreeView視圖;錄制完成后,點擊工具欄中的“停止錄制”按鈕(圖中紫色方框標(biāo)注的部分),完成腳本的錄制;,利用BadBoy錄制JMeter腳本(3),選擇“File-ExporttoJMeter”菜單,填寫文件名“baidu.jmx”,將錄制好腳本導(dǎo)出為JMeter腳本格式。也可以選擇“File-Save”菜單保存為Badboy腳本;啟動JMeter并打開剛剛生成的測試腳本,就可以用JMeter進行測試了。,利用JMeter的代理服務(wù)器功能進行腳本錄制(1),在測試計劃中添加線程組,在線程組中添加邏輯控制器錄制控制器。在工作臺中添加非測試元件HTTP代理服務(wù)器。端口:即代理服務(wù)器的監(jiān)聽端口,我們設(shè)為8080。目標(biāo)控制器選擇:測試計劃線程組;分組選擇:每個組放入一個新的控制器。,利用JMeter的代理服務(wù)器功能進行腳本錄制(2),在HTTP代理服務(wù)器中添加定時器高斯隨機定時器(用于告知Jmeter來在其生成的HTTP請求中自動的增加一個定時器)。定時器將會使相應(yīng)的的取樣器被延遲。延時的規(guī)則是,在上一個訪問請求被響應(yīng)并延時了指定的時間后,下一個被定時器影響的取樣訪問請求才會被發(fā)送出去。如果在代理服務(wù)器元件里使用了高斯隨機定時器,就應(yīng)該在其中的固定延遲偏移(ConstantDelayOffset)設(shè)置項里添上$T(用于自動引用紀(jì)錄的延遲時間)。,利用JMeter的代理服務(wù)器功能進行腳本錄制(3),代理服務(wù)器配置好以后,點擊啟動,代理服務(wù)器就會開始記錄所接受的HTTP訪問請求。打開瀏覽器,打開Internet選項,將局域網(wǎng)(LAN)設(shè)置中的代理服務(wù)器設(shè)為:localhost,端口為在代理服務(wù)器中設(shè)的端口:8080。,利用JMeter的代理服務(wù)器功能進行腳本錄制(4),在瀏覽器地址欄中輸入地址并進行相關(guān)的操作進行錄制,錄制完成后,停止HTTP代理服務(wù)器;在錄制控制器元件上單擊右鍵將記錄的元件保存為一個文件用于以后重用,另外,不要忘了恢復(fù)瀏覽器的代理服務(wù)器設(shè)置。,運行Jmeter進行測試(1),腳本錄制完畢后,就可以運行JMeter來進行我們的測試了。到JMeter的網(wǎng)站/site/downloads/downloads_jmeter.cgi下載JMeter的最新版本,將zip文件解壓縮到D:/JMeter,運行D:/JMeter/bin下的jmeter.bat即可。,運行Jmeter進行測試(2),打開JMeter會有一個默認(rèn)的測試計劃,點擊文件打開,選中錄制的腳本文件如:WebXSample_addUser.jmx,打開腳本進行測試。在線程組上添加監(jiān)聽器聚合報告(用于分析測試結(jié)果)后,點擊運行啟動,開始測試,測試完畢后在聚合報告中就可以看到測試結(jié)果。一個簡單的測試計劃就完成了。,運行Jmeter進行測試(3),聚合報告顯示測試結(jié)果,運行Jmeter進行測試(4)聚合報告詳解,Label:每個JMeter的element(例如HTTPRequest)都有一個Name屬性,這里顯示的就是Name屬性的值#Samples:表示你這次測試中一共發(fā)出了多少個請求,如果測試計劃模擬10個用戶,每個用戶迭代10次,這里就會顯示100Average:平均響應(yīng)時間默認(rèn)情況下是單個Request的平均響應(yīng)時間,當(dāng)使用了事務(wù)控制器時,也可以以事務(wù)為單位顯示平均響應(yīng)時間Median:中位數(shù),也就是50用戶的響應(yīng)時間90%Line:90用戶的響應(yīng)時間Min:最小響應(yīng)時間Max:最大響應(yīng)時間Error%:錯誤率,本次測試中出現(xiàn)錯誤的請求的數(shù)量/請求的總數(shù)Throughput:吞吐量默認(rèn)情況下表示每秒完成的請求數(shù)(RequestperSecond)KB/Sec:每秒從服務(wù)器端接收到的數(shù)據(jù)量,JMeter主要組件介紹,測試計劃(TestPlan)是使用JMeter進行測試的起點,它是其它JMeter測試元件的容器。線程組(ThreadGroup)代表一定數(shù)量的并發(fā)用戶,它可以用來模擬并發(fā)用戶發(fā)送請求。取樣器(sampler)定義實際的請求內(nèi)容,被線程組包含,我們主要用HTTP請求。監(jiān)聽器(Listener)邏輯控制器(LogicController)斷言(Assertions)配置元件(ConfigElement)前置處理器(PreProcessors)和后置處理器(PostProcessors)定時器(Timer),JMeter主要組件介紹測試計劃,測試計劃(TestPlan)是使用JMeter進行測試的起點,它是其它JMeter測試元件的容器。名稱:你可以為你的測試計劃取一個有意義的名字。注釋:對測試計劃的注釋。用戶定義的變量:用戶可以自己定義變量,在用到此變量的時候直接用$變量名引用即可。例:變量名url,值,在需要時直接用$url即可。Adddirectoryorjartoclasspath:向類路徑即%JMETER-HOME%lib中添加目錄及jar包。,JMeter主要組件介紹線程組,名稱:為線程組起名字。線程屬性線程數(shù):設(shè)置發(fā)送請求的用戶數(shù)目,即并發(fā)數(shù)。線程屬性Ramp-UpPeriod(insecond):線程間的時間間隔,單位是秒。即所有線程在多少時間內(nèi)啟動。線程屬性循環(huán)次數(shù):請求的重復(fù)次數(shù),如果選擇后面的forever(默認(rèn)),那么請求將一直繼續(xù),如果不選擇forever,而在輸入框中輸入數(shù)字,那么請求將重復(fù)指定的次數(shù),如果輸入1,那么請求將執(zhí)行一次,如果是0,會出現(xiàn)問題。調(diào)度器配置啟動時間:測試計劃什么時候啟動,啟動延遲會覆蓋它。調(diào)度器配置結(jié)束時間:測試計劃什么時候結(jié)束,持續(xù)時間會覆蓋它。調(diào)度器配置持續(xù)時間:測試計劃持續(xù)多長時間,會覆蓋結(jié)束時間。調(diào)度器配置啟動延遲:測試計劃延遲多長時間啟動,會覆蓋啟動時間。,JMeter主要組件介紹取樣器(HTTP請求),名稱:HTTP請求的名字。Web服務(wù)器服務(wù)器名稱或IP、端口號,腳本錄制時自動添加,也可以使用“用戶自定義變量”。HTTP請求:用默認(rèn)值即可。同請求一起發(fā)送參數(shù):請求中的參數(shù)、值可以在此設(shè)置,需要用到參數(shù)化及動態(tài)數(shù)據(jù)關(guān)聯(lián),我們在后面專門介紹。同請求一起發(fā)送文件:我可以制定同請求一起發(fā)送哪個文件。其他任務(wù)包括:從HTML文件中獲取所有內(nèi)含的資源、用作監(jiān)視器、EmbeddedURLsmustmatch。,JMeter主要組件介紹監(jiān)聽器,監(jiān)聽器(Listener)負(fù)責(zé)收集測試結(jié)果,同時也被告知了結(jié)果顯示的方式。我們常用的包括:聚合報告、查看結(jié)果樹、用表格查看結(jié)果,都支持將結(jié)果數(shù)據(jù)寫入文件。其他的添加上去看看就行。聚合報告前面我們介紹過,后面是查看結(jié)果樹和用表格查看結(jié)果的截圖。,JMeter主要組件介紹監(jiān)聽器(用表格查看結(jié)果),JMeter主要組件介紹監(jiān)聽器(查看結(jié)果樹),JMeter主要組件介紹邏輯控制器,邏輯控制器(LogicController)可以自定義JMeter發(fā)送請求的行為邏輯,它與Sampler結(jié)合使用可以模擬復(fù)雜的請求序列。,JMeter主要組件介紹邏輯控制器,循環(huán)控制器可以設(shè)置請求的循環(huán)次數(shù)或永遠(yuǎn)循環(huán)(如果選中永遠(yuǎn)的話)。事務(wù)控制器可以將多個請求放在同一個事務(wù)中。如果選中Gegerateparentsample,則聚合報告中只顯示事務(wù)控制器的數(shù)據(jù),而不會顯示其中的各個請求的數(shù)據(jù),反之則全部顯示。,JMeter主要組件介紹斷言,斷言(Assertions)可以用來判斷請求響應(yīng)的結(jié)果是否如用戶所期望的。它可以用來隔離問題域,即在確保功能正確的前提下執(zhí)行壓力測試。這個限制對于有效的測試是非常有用的。,JMeter主要組件介紹配置元件,配置元件(ConfigElement)維護Sampler需要的配置信息,并根據(jù)實際的需要會修改請求的內(nèi)容。我們主要在參數(shù)化中用到CSVDataSetConfig,JMeter主要組件介紹前置處理器和后置處理器,前置處理器(PreProcessors)和后置處理器(PostProcessors)負(fù)責(zé)在生成請求之前和之后完成工作。前置處理器常常用來修改請求的設(shè)置,后置處理器則常常用來處理響應(yīng)的數(shù)據(jù)。我們主要在動態(tài)關(guān)聯(lián)中用到后置處理器的正則表達式提取器。,JMeter主要組件介紹定時器,定時器(Timer)負(fù)責(zé)定義請求之間的延遲間隔。,參數(shù)化設(shè)置,在我們的測試計劃中我們使用的都是HTTP請求,在HTTP請求中常常會提交一些參數(shù),我們?yōu)榱瞬幌朐诿恳淮握埱笾卸际褂孟嗤膮?shù)值,就要想辦法讓每一次請求的參數(shù)的值都是不一樣的,我們就需要進行參數(shù)化設(shè)置,這里我們介紹兩種參數(shù)化設(shè)置的方法。一種是利用函數(shù)助手中的_Random函數(shù)進行參數(shù)化設(shè)置;一種是利用配置元件中的CSVDataSetConfig進行參數(shù)化設(shè)置。,參數(shù)化設(shè)置函數(shù)助手(1),JMeter中有一個函數(shù)助手的功能,里面內(nèi)置了多個函數(shù),我們可以利用其中的_Random函數(shù)來進行請求中的參數(shù)化設(shè)置。,參數(shù)化設(shè)置函數(shù)助手(2),在JMeter中選擇“選項函數(shù)助手對話框”打開函數(shù)助手對話框。,參數(shù)化設(shè)置函數(shù)助手(3),選擇一個功能_Random。設(shè)定最小值為1。設(shè)定最大值為100。函數(shù)名稱設(shè)為func1。點擊生成將生成一個引用字符串$_Random(1,100,func1,在需要的請求參數(shù)中拷貝該字符串即可。其中函數(shù)名稱用來在引用中作區(qū)別,即我們可以設(shè)定不同的名稱在不同的地方引用同一個函數(shù)的功能。,參數(shù)化設(shè)置函數(shù)助手(4),例如:我們生成了兩個串$_Random(1,100,func1)、$_Random(1,100,func2),在添加圖書的請求中,我們在bookName的參數(shù)值中引用$_Random(1,100,func1),在bookConcern的參數(shù)值中應(yīng)用$_Random(1,100,func2),見截圖,這樣測試運行時不同的線程將產(chǎn)生不同的bookName和bookConcern。,參數(shù)化設(shè)置CSVDataSetConfig(1),在線程組上點擊右鍵選擇添加配置元件CSVDataSetConfig,打開CSVDataSetConfig。Filename文件名:即參數(shù)化要引用的文件名。這里是d:number.txtFileencoding文件編碼:可以不填。VariableNames(comma-delimited)變量名(用逗號分割):多個變量可以引用同一個文件,用逗號分割。這里是num1,num2Delimiter(usetfortab):參數(shù)文件中多個變量值的分隔符,t表示用tab鍵分割,默認(rèn)是逗號。RecycleonEOF?:結(jié)束后是否循環(huán)?默認(rèn)是True.Number.txt文件內(nèi)容見截圖。,參數(shù)化設(shè)置CSVDataSetConfig(2),在添加圖書的請求中,我們在bookName的參數(shù)值中引用$num1,在bookConcern的參數(shù)值中應(yīng)用$num2,見截圖,這樣測試運行時不同的線程將產(chǎn)生不同的bookName和bookConcern。,動態(tài)數(shù)據(jù)關(guān)聯(lián),在HTTP請求的參數(shù)中經(jīng)常會遇到一些參數(shù)的值是從服務(wù)器相應(yīng)的動態(tài)數(shù)據(jù),這些數(shù)據(jù)需要進行關(guān)聯(lián)才能使得每一次請求都能成功得被服務(wù)器接受,在JMeter中采用正則表達式提取器來獲取這些動態(tài)的數(shù)據(jù)。正則表達式允許用戶從服務(wù)器響應(yīng)中獲取數(shù)據(jù),作為一個后置處理器,正則表達式提取器會在每一個請求執(zhí)行后再執(zhí)行,正則表達式提取請求的參數(shù)值,產(chǎn)生模板字符串,并將結(jié)果保存到給出的變量中。,動態(tài)數(shù)據(jù)關(guān)聯(lián)(1)正則表達式提取器,在HTTP請求的參數(shù)中經(jīng)常會遇到一些參數(shù)的值是從服務(wù)器相應(yīng)的動態(tài)數(shù)據(jù),這些數(shù)據(jù)需要進行關(guān)聯(lián)才能使得每一次請求都能成功得被服務(wù)器接受,在JMeter中采用正則表達式提取器來獲取這些動態(tài)的數(shù)據(jù)。比如我們想要獲得從服務(wù)器相應(yīng)的TOKEN,就可以使用下面的正則表達式提取器。,動態(tài)數(shù)據(jù)關(guān)聯(lián)(2),使用時就可以使用$token_g1來表示獲取到的TOKEN值。如下圖:,使用命令行運行JMeter腳本,JMeter-n-tmy_test.jmx-llog.jtl-n告知JMeter采用非圖形化運行JMeter腳本-t指定要運行的腳本文件-l指定保存執(zhí)行結(jié)果的文件名執(zhí)行命令前要檢查當(dāng)前目錄是否是%JMeter_Home%bin目錄;如果JMeter腳本不在當(dāng)前目錄,需要指定完整的路徑;如果要把執(zhí)行的結(jié)果保存在其他地方也要指定完整的路徑。,利用XSLT分析JMeter結(jié)果文件(1),將結(jié)果文件的擴展名改為xml,例:將log.jtl改為log.xml。在log.xml的文件頭中添加使之變成其中href指定xsl文件的路徑,如果與xml文件在同一目錄,則只寫文件名即可,否則要寫明詳細(xì)路徑。,利用XSLT分析JMeter結(jié)果文件(2),將修改后的xml文件用瀏覽器打開即可得到統(tǒng)計結(jié)果,JMeter中進行分布式測試,作為一個純JAVA的GUI應(yīng)用,JMeter對于CPU

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論