jmeter性能測(cè)試培訓(xùn)_第1頁(yè)
jmeter性能測(cè)試培訓(xùn)_第2頁(yè)
jmeter性能測(cè)試培訓(xùn)_第3頁(yè)
jmeter性能測(cè)試培訓(xùn)_第4頁(yè)
jmeter性能測(cè)試培訓(xùn)_第5頁(yè)
已閱讀5頁(yè),還剩46頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1JMeterJMeter基礎(chǔ)培訓(xùn)基礎(chǔ)培訓(xùn)20112011年年7 7月月2目錄JMeter介紹JMeter介紹誰(shuí)在使用JMeterJMeter與Loadrunner的對(duì)比JMeter在測(cè)試工作的應(yīng)用JMeter二次開(kāi)發(fā)3JMeter介紹JMeterJMeter是基于是基于JavaJava的,開(kāi)放源代碼的性能測(cè)試工具的,開(kāi)放源代碼的性能測(cè)試工具能夠?qū)δ軌驅(qū)TTPHTTP和和FTPFTP服務(wù)器進(jìn)行壓力和性能測(cè)試服務(wù)器進(jìn)行壓力和性能測(cè)試可以對(duì)任何數(shù)據(jù)庫(kù)進(jìn)行同樣的測(cè)試(通過(guò)可以對(duì)任何數(shù)據(jù)庫(kù)進(jìn)行同樣的測(cè)試(通過(guò)JDBCJDBC)各種負(fù)載統(tǒng)計(jì)表和可鏈接的計(jì)時(shí)器可供選擇各種負(fù)載統(tǒng)計(jì)表和可鏈接的計(jì)時(shí)器可供選

2、擇緩存和離線(xiàn)分析緩存和離線(xiàn)分析/ /回放測(cè)試結(jié)果回放測(cè)試結(jié)果完全多線(xiàn)程框架完全多線(xiàn)程框架高可擴(kuò)展性高可擴(kuò)展性免費(fèi)/開(kāi)源4誰(shuí)在使用JMeter誰(shuí)在使用JMeter 移動(dòng)夢(mèng)網(wǎng)搜索項(xiàng)目 盤(pán)古搜索項(xiàng)目56目錄JMeter介紹JMeter與Loadrunner的對(duì)比支持的協(xié)議對(duì)比功能對(duì)比使用對(duì)比JMeter在測(cè)試工作的應(yīng)用JMeter二次開(kāi)發(fā)7支持的協(xié)議對(duì)比JMeter支持的協(xié)議Web(HTTP/ HTTPS),SOAP,F(xiàn)TP,Database(JDBC), LDAP, JMS, Mail(POP3/IMAP),JAVALoadrunner支持的協(xié)議WEB(Http/Html)、FTP、LDAP、Pa

3、lm、Web/WinsocketDual ProtocolSQL Server、 MS ODBC、 Oracle、 DB2、 Sybase CTlib、 Sybase DBlib、 Domain Name Resolution(DNS)、Windows Socket COM/DCOM、Corba-Java、Rmi_Java EJB、Rmi_Java Oracle NCA、SAP-Web、SAPGUI、SAPGUI/SAP-Web Dual Protocol、 PropleSoft_Tuxedo、Siebel Web、Siebel-DB2 CLI、Sieble-MSSQL、Sieble Orac

4、leJMeter支持的協(xié)議相對(duì)Loadrunner較少,但是可以通過(guò)二次開(kāi)發(fā)來(lái)實(shí)現(xiàn)8JMeter與Loadrunner功能對(duì)比對(duì)比項(xiàng)JMeterLoadrunner支持的協(xié)議支持的協(xié)議少少多多結(jié)果報(bào)表結(jié)果報(bào)表少少豐富豐富測(cè)試場(chǎng)景測(cè)試場(chǎng)景靈活靈活靈活靈活運(yùn)行環(huán)境運(yùn)行環(huán)境Windows/Unix/Linux Windows/Linux(部分支持部分支持)IP欺騙功能欺騙功能無(wú)無(wú)有有9使用對(duì)比對(duì)比項(xiàng)JMeterLoadrunner安裝安裝簡(jiǎn)單簡(jiǎn)單復(fù)雜復(fù)雜腳本錄制腳本錄制很好很好較好較好腳本語(yǔ)言腳本語(yǔ)言C,JAVA,VBXML編輯方式編輯方式修改腳本修改腳本圖形界面修改圖形界面修改成本成本免費(fèi)免費(fèi)昂貴

5、昂貴學(xué)習(xí)資料學(xué)習(xí)資料較少(逐漸豐富)較少(逐漸豐富)很多很多10目錄JMeter介紹JMeter與Loadrunner的對(duì)比JMeter在測(cè)試工作的應(yīng)用JMeter主要組件介紹腳本錄制運(yùn)行JMeter參數(shù)化設(shè)置動(dòng)態(tài)關(guān)聯(lián)場(chǎng)景設(shè)置JMeter測(cè)試實(shí)例JMeter二次開(kāi)發(fā)11JMeter主要組件(測(cè)試計(jì)劃)測(cè)試計(jì)劃(Test Plan)是使用 JMeter 進(jìn)行 測(cè)試的起點(diǎn),它是其它 JMeter 測(cè)試元件的容器。用戶(hù)定義的變量:用戶(hù)可以自己定義變量,在用到此變量的時(shí)候直接用$變量名引用即可。例如:$ip,$portAdd directory or jar to classpath:向類(lèi)路徑即%JM

6、eter-HOME%lib中添加目錄及jar包12JMeter主要組件(線(xiàn)程組)名稱(chēng):線(xiàn)程組的名字。線(xiàn)程數(shù):設(shè)置發(fā)送請(qǐng)求的用戶(hù)數(shù)目 ,即并發(fā)數(shù)。Ramp-Up Period(in second):線(xiàn)程啟動(dòng)的時(shí)間,單位是秒。即所有線(xiàn)程在多少時(shí)間內(nèi)啟動(dòng)。循環(huán)次數(shù):請(qǐng)求的重復(fù)次數(shù),如果選擇后面的“永遠(yuǎn)”,那么 請(qǐng)求將一直繼續(xù);而在輸入框中輸入數(shù)字,那么請(qǐng)求將重復(fù)指定的次數(shù),如果輸入1,那么請(qǐng)求將執(zhí)行一次。啟動(dòng)時(shí)間:測(cè)試計(jì)劃什么時(shí)候啟動(dòng)。結(jié)束時(shí)間:測(cè)試計(jì)劃什么時(shí)候結(jié)束。持續(xù)時(shí)間:測(cè)試計(jì)劃持續(xù)多長(zhǎng)時(shí)間,會(huì)覆蓋結(jié)束時(shí)間。啟動(dòng)延遲:測(cè)試計(jì)劃延遲多長(zhǎng)時(shí)間啟動(dòng),會(huì)覆蓋啟動(dòng)時(shí)間。13JMeter主要組件(取樣器)

7、名稱(chēng):HTTP請(qǐng)求的名字。Web服務(wù)器服務(wù)器名稱(chēng)或IP、端口號(hào),腳本錄制時(shí)自動(dòng)添加,也可以使用“用戶(hù)自定義變量”。HTTP請(qǐng)求:用默認(rèn)值即可。同請(qǐng)求一起發(fā)送參數(shù):請(qǐng)求中的參數(shù)、值可以在此設(shè)置,需要用到參數(shù)化及動(dòng)態(tài)數(shù)據(jù)關(guān)聯(lián),后面專(zhuān)門(mén)介紹。同請(qǐng)求一起發(fā)送文件:我可以制定同請(qǐng)求一起發(fā)送哪個(gè)文件。其他任務(wù)包括:從HTML文件中獲取所有內(nèi)含的資源、用作監(jiān)視器14JMeter主要組件(監(jiān)聽(tīng)器)監(jiān)聽(tīng)器監(jiān)聽(tīng)器(Listener)負(fù)責(zé)收集測(cè)試結(jié)果,支持將結(jié)果數(shù)據(jù)寫(xiě)入文件。同時(shí)也負(fù)責(zé)收集測(cè)試結(jié)果,支持將結(jié)果數(shù)據(jù)寫(xiě)入文件。同時(shí)也被告知了結(jié)果顯示的方式。我們常用的包括:被告知了結(jié)果顯示的方式。我們常用的包括:聚合報(bào)告

8、、聚合報(bào)告、查看結(jié)果樹(shù)、查看結(jié)果樹(shù)、用表格查看結(jié)果、用表格查看結(jié)果、圖形結(jié)果圖形結(jié)果JMeter主要組件聚合報(bào)告:聚合報(bào)告:Label:這里對(duì)應(yīng)一個(gè)HTTP Request ,顯示的就是 Name 屬性的值;#Samples: 表示你這次測(cè)試中一共發(fā)出了多少個(gè)請(qǐng)求;Average: 平均響應(yīng)時(shí)間 , 默認(rèn)情況下是單個(gè) Request 的平均響應(yīng)時(shí)間,當(dāng)使用了 “事務(wù)控制器”時(shí),以事務(wù)為單位為單位顯示平均響應(yīng)時(shí)間Median: 中位數(shù),也就是 50 用戶(hù)的響應(yīng)時(shí)間90% Line: 90 用戶(hù)的響應(yīng)時(shí)間Min: 最小響應(yīng)時(shí)間Max:最大響應(yīng)時(shí)間Error%: 本次測(cè)試中出現(xiàn)錯(cuò)誤的請(qǐng)求的數(shù)量 /

9、請(qǐng)求的總數(shù)Throughput: 吞吐量 ,默認(rèn)情況下表示每秒完成的請(qǐng)求數(shù)。KB/Sec: 每秒從服務(wù)器端接收到的數(shù)據(jù)量JMeter主要組件查看結(jié)果樹(shù)查看結(jié)果樹(shù)顯示取樣器請(qǐng)求和響應(yīng)的細(xì)節(jié),包括消息報(bào)頭,請(qǐng)求的數(shù)據(jù),相應(yīng)數(shù)據(jù)JMeter主要組件表格查看結(jié)果表格查看結(jié)果顯示每一請(qǐng)求的信息,包括發(fā)起請(qǐng)求的線(xiàn)程,開(kāi)始時(shí)間,請(qǐng)求響應(yīng)時(shí)間,請(qǐng)求字節(jié)數(shù)JMeter主要組件圖形結(jié)果圖形結(jié)果腳本錄制 使用JMeter的代理服務(wù)器功能進(jìn)行腳本錄制 利用Badboy進(jìn)行腳本錄制,再轉(zhuǎn)為JMeter腳本19使用JMeter錄制 在測(cè)試計(jì)劃中添加線(xiàn)程組,在線(xiàn)程組中添加在測(cè)試計(jì)劃中添加線(xiàn)程組,在線(xiàn)程組中添加“配置配置元件

10、元件”“HTTP請(qǐng)求默認(rèn)值請(qǐng)求默認(rèn)值”,設(shè)置被測(cè)系統(tǒng)的,設(shè)置被測(cè)系統(tǒng)的IP和端口。和端口。 在在“工作臺(tái)工作臺(tái)”中添加中添加“非測(cè)試元件非測(cè)試元件”“HTTP代代理服務(wù)器理服務(wù)器”。端口:即代理服務(wù)器的監(jiān)聽(tīng)端口,設(shè)。端口:即代理服務(wù)器的監(jiān)聽(tīng)端口,設(shè)為為9999。 目標(biāo)控制器選擇測(cè)試計(jì)劃中的線(xiàn)程組;分組選擇:目標(biāo)控制器選擇測(cè)試計(jì)劃中的線(xiàn)程組;分組選擇:不對(duì)樣本分組。排除模式:不對(duì)樣本分組。排除模式:.*.jpg,.*.gif 配置瀏覽器代理,和配置瀏覽器代理,和“HTTP代理服務(wù)器代理服務(wù)器”設(shè)置保設(shè)置保持一致持一致 啟動(dòng)啟動(dòng)JMeter 工作臺(tái)工作臺(tái)“HTTP代理服務(wù)器代理服務(wù)器”; 打開(kāi)瀏覽

11、器,登錄測(cè)試網(wǎng)站,在測(cè)試網(wǎng)頁(yè)上進(jìn)行操打開(kāi)瀏覽器,登錄測(cè)試網(wǎng)站,在測(cè)試網(wǎng)頁(yè)上進(jìn)行操作;作; 完成后,停止完成后,停止JMeter 工作臺(tái)工作臺(tái)“HTTP代理服務(wù)器代理服務(wù)器”;20使用JMeter錄制21使用Badboy錄制 使用Badboy錄制 選擇“File - Export to JMeter”菜單,導(dǎo)出為JMeter腳本,使用JMeter打開(kāi)22運(yùn)行JMeter進(jìn)行測(cè)試 圖形界面 命令行模式運(yùn)行 JMeter.sh -n t test.jmx -l log.jtl -n告知JMeter采用非圖形化運(yùn)行JMeter腳本 -t指定要運(yùn)行的腳本文件 -l指定保存執(zhí)行結(jié)果的文件名參數(shù)化設(shè)置 在我

12、們的過(guò)程中,通常會(huì)提交一些參數(shù),使用不同的參數(shù)值來(lái)模擬才更接近實(shí)際情況。 參數(shù)定義后, 使用$paramName既可以使用24參數(shù)化設(shè)置用戶(hù)自定義變量 使用測(cè)試計(jì)劃中的用戶(hù)定義變量作為參數(shù) 一般定義全局變量,如:IP,端口文件參數(shù) 利用配置元件中的CSV Data Set Config進(jìn)行參數(shù)化設(shè)置函數(shù)參數(shù) 使用JMeter提供的函數(shù)進(jìn)行參數(shù)化 JMeter提供“函數(shù)助手”的向?qū)?5用戶(hù)自定義變量26文件參數(shù) 在一個(gè)HTTP請(qǐng)求中,要提交多個(gè)參數(shù),其中category,query兩個(gè)參數(shù)需要做參數(shù)化,數(shù)據(jù)保存在文件中27文件參數(shù) 使用配置元件CSV Data Set Config28Filen

13、ame文件名:即參數(shù)化要引用的文件名File encoding:文件編碼:可以不填。Variable Names(comma-delimited)變量名(用逗號(hào)分割):多個(gè)變量可以引用同一個(gè)文件,用逗號(hào)分割。這里是num1,num2Delimiter:參數(shù)文件中多個(gè)變量值的分隔符,t表示用tab鍵分割,默認(rèn)是逗號(hào)。Recycle on EOF:結(jié)束后是否循環(huán)?默認(rèn)是True.函數(shù)參數(shù) JMeter函數(shù)助手的功能,里面內(nèi)置了多個(gè)函數(shù);29文件參數(shù)選擇一個(gè)功能選擇一個(gè)功能_Random。設(shè)定最小值為設(shè)定最小值為1。設(shè)定最大值為設(shè)定最大值為100。函數(shù)名稱(chēng)設(shè)為函數(shù)名稱(chēng)設(shè)為num1。點(diǎn)擊生成將生成一個(gè)

14、引用字符串點(diǎn)擊生成將生成一個(gè)引用字符串$_Random(0,100,num1,在需要的請(qǐng),在需要的請(qǐng)求參數(shù)中拷貝該字符串即可。求參數(shù)中拷貝該字符串即可。其中函數(shù)名稱(chēng)用來(lái)在引用中作區(qū)別,即我們可以設(shè)定不同的名稱(chēng)在不同其中函數(shù)名稱(chēng)用來(lái)在引用中作區(qū)別,即我們可以設(shè)定不同的名稱(chēng)在不同的地方引用同一個(gè)函數(shù)的功能。的地方引用同一個(gè)函數(shù)的功能。30動(dòng)態(tài)關(guān)聯(lián) 在HTTP請(qǐng)求的參數(shù)中經(jīng)常會(huì)遇到一些參數(shù)的值是從服務(wù)器相應(yīng)的動(dòng)態(tài)數(shù)據(jù),這些數(shù)據(jù)需要進(jìn)行關(guān)聯(lián)才能使得每一次請(qǐng)求都能成功得被服務(wù)器接受,在JMeter中采用正則表達(dá)式提取器來(lái)獲取這些動(dòng)態(tài)的數(shù)據(jù)。 正則表達(dá)式允許用戶(hù)從服務(wù)器響應(yīng)中獲取數(shù)據(jù),作為一個(gè)后置處理器,

15、正則表達(dá)式提取器會(huì)在每一個(gè)請(qǐng)求執(zhí)行后再執(zhí)行,正則表達(dá)式提取請(qǐng)求的參數(shù)值,產(chǎn)生模板字符串,并將結(jié)果保存到給出的變量中。31動(dòng)態(tài)關(guān)聯(lián) 在腳本錄制完畢以后,運(yùn)行一遍錄制的腳本,使在腳本錄制完畢以后,運(yùn)行一遍錄制的腳本,使用用“察看結(jié)果樹(shù)察看結(jié)果樹(shù)”監(jiān)聽(tīng)器,分析那些需要做動(dòng)態(tài)監(jiān)聽(tīng)器,分析那些需要做動(dòng)態(tài)關(guān)聯(lián)(一般建議先使用關(guān)聯(lián)(一般建議先使用HttpWatch分析那些要做分析那些要做動(dòng)態(tài)關(guān)聯(lián));動(dòng)態(tài)關(guān)聯(lián)); 以基于以基于WEB_BAS的的SQMAS為例。經(jīng)過(guò)分析,在為例。經(jīng)過(guò)分析,在登錄時(shí),會(huì)登錄時(shí),會(huì)cookie會(huì)記錄一個(gè)會(huì)記錄一個(gè)JSESSIONID,每,每次提交請(qǐng)求時(shí),會(huì)次提交請(qǐng)求時(shí),會(huì)post一

16、個(gè)一個(gè)ticket。32動(dòng)態(tài)關(guān)聯(lián) 添加一個(gè)正則表達(dá)式提取器,提取添加一個(gè)正則表達(dá)式提取器,提取JSESSIONID; 可以添加一個(gè)響應(yīng)斷言,測(cè)試提取結(jié)果;可以添加一個(gè)響應(yīng)斷言,測(cè)試提取結(jié)果; $jessionid_g1表示匹配第一組數(shù)值,這里只有一表示匹配第一組數(shù)值,這里只有一個(gè),也可以直接使用個(gè),也可以直接使用$jessionid33動(dòng)態(tài)關(guān)聯(lián) 運(yùn)行測(cè)試計(jì)劃,測(cè)試提取結(jié)果34動(dòng)態(tài)關(guān)聯(lián) 修改ticket,使用提取的JSESSIONID35場(chǎng)景設(shè)置 JMeter的邏輯控制器提供了一系列的組件,可以實(shí)現(xiàn)多樣化的場(chǎng)景控制。 常用的邏輯控制器有:循環(huán)控制器,事務(wù)控制器36JMeter測(cè)試實(shí)例 HTTP

17、GET測(cè)試 基于WEB_BAS的測(cè)試實(shí)例 HTTP XML測(cè)試37目錄38JMeter介紹JMeter與Loadrunner的對(duì)比JMeter在測(cè)試工作的應(yīng)用JMeter二次開(kāi)發(fā)自定義協(xié)議實(shí)現(xiàn)思路應(yīng)用舉例HTTP GET測(cè)試39基于WEB_BAS的測(cè)試實(shí)例40JMeter二次開(kāi)發(fā) JMeter取樣器提供了一些協(xié)議的測(cè)試取樣器提供了一些協(xié)議的測(cè)試支持。如果不能滿(mǎn)足測(cè)試需要,需要支持。如果不能滿(mǎn)足測(cè)試需要,需要做二次開(kāi)發(fā)。做二次開(kāi)發(fā)。 JMeter是基于是基于Java語(yǔ)言實(shí)現(xiàn)的,例語(yǔ)言實(shí)現(xiàn)的,例如如http請(qǐng)求,它只是用請(qǐng)求,它只是用Java代碼封裝代碼封裝了了Http的協(xié)議,內(nèi)部其實(shí)使用了的協(xié)議

18、,內(nèi)部其實(shí)使用了Java的類(lèi)庫(kù)來(lái)對(duì)應(yīng)用發(fā)送請(qǐng)求的,所以通的類(lèi)庫(kù)來(lái)對(duì)應(yīng)用發(fā)送請(qǐng)求的,所以通過(guò)過(guò)Java請(qǐng)求的性能測(cè)試,我們可以做請(qǐng)求的性能測(cè)試,我們可以做任意自定義協(xié)議請(qǐng)求的性能測(cè)試任意自定義協(xié)議請(qǐng)求的性能測(cè)試41JMeter自定義協(xié)議實(shí)現(xiàn)思路 新建一個(gè)測(cè)試類(lèi),繼承新建一個(gè)測(cè)試類(lèi),繼承org.apache. tocol.java.sampler.AbstractJavaSamplerClient 實(shí)現(xiàn)實(shí)現(xiàn)getDefaultParameters , setupTest,runTest , teardownTest方法方法 getDefaultParameters是配置參數(shù)的方

19、法是配置參數(shù)的方法 setupTest和和teardownTest與與JUnit中的類(lèi)似,中的類(lèi)似,分別在測(cè)試的開(kāi)始和結(jié)束時(shí)執(zhí)行。分別在測(cè)試的開(kāi)始和結(jié)束時(shí)執(zhí)行。 runTest為主要測(cè)試方法,所有測(cè)試程序都在這為主要測(cè)試方法,所有測(cè)試程序都在這里完成。里完成。42應(yīng)用舉例 盤(pán)古索引項(xiàng)目需要對(duì)后臺(tái)分布式索引系統(tǒng)進(jìn)行性能測(cè)試,經(jīng)過(guò)分析,直接對(duì)web搜索頁(yè)面進(jìn)行測(cè)試得到不能得到真實(shí)的性能情況。 解決方法:使用JMeter二次開(kāi)發(fā),調(diào)用分布文件系統(tǒng)的查詢(xún)API進(jìn)行性能測(cè)試43應(yīng)用舉例 創(chuàng)建一個(gè)indexBaseTest類(lèi)44public class indexBaseTest extends Abst

20、ractJavaSamplerClient implements Serializable 應(yīng)用舉例 實(shí)現(xiàn)getDefaultParameters方法方法45public Arguments getDefaultParameters() Arguments params = new Arguments();/ 增加一個(gè)參數(shù),默認(rèn)值為空,參數(shù)名顯示為params.addArgument(KEY, );return params;應(yīng)用舉例 實(shí)現(xiàn)setupTest方法方法46public void setupTest(JavaSamplerContext context) getLogger().debug(whoAmI() + tsetupTest();listParameters(context); try /根據(jù)索引名稱(chēng)初始化一個(gè)索引實(shí)例index = new Index(indexName); catch (IOException e) e.printStackTrace(); catch ( Exception e) e.printStackTrace(); 應(yīng)用舉例 實(shí)現(xiàn)實(shí)現(xiàn)runTes

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論