《《JMeter培訓教程》PPT課件.ppt》由會員分享,可在線閱讀,更多相關《《JMeter培訓教程》PPT課件.ppt(41頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、JMeter進行接口測試,,利用JMeter進行接口測試,JMeter介紹 JMeter主要元件 參數(shù)化設置 數(shù)據(jù)關聯(lián) Jmeter元件的作用域與順序,JMeter介紹,JMeter,一個100的純Java桌面應用,它是Apache組織的開放源代碼項目,它是功能和性能測試的工具。JMeter可以用于測試靜態(tài)或者動態(tài)資源的性能(文件、Servlets、Perl腳本、Java對象、數(shù)據(jù)庫和查詢、ftp服務器或者其他資源)。原先Jmemer是為Web/HTTP測試而設計的,但是它已經(jīng)擴展以支持各種各樣的測試模塊。它和用于HTTP和SQL數(shù)據(jù)庫(使用JDBC)的模塊一起運送。它可以用來測試靜止資料庫或
2、者活動資料庫中的服務器的運行情況,可以用來模擬對服務器或者網(wǎng)絡系統(tǒng)加以重負荷以測試它的抵抗力,或者用來分析不同負荷類型下的所有運行情況。它也提供了一個可替換的界面用來定制數(shù)據(jù)顯示,測試同步及測試的創(chuàng)建和執(zhí)行.JMeter 的特性:a) 能夠對HTTP和FTP服務器進行壓力和性能測試, 也可以對任何數(shù)據(jù)庫進行同樣的測試(通過JDBC)。b) 完全的可移植性和100 純Java。c) 完全 Swing 和輕量組件支持(預編譯的JAR使用 javax.swing.*)包。d) 完全多線程 框架允許通過多個線程并發(fā)取樣和 通過單獨的線程組對不同的功能同時取樣。e) 精心的GUI設計允許快速操作和更精確
3、的計時。f) 緩存和離線分析/回放測試結果。g) 高可擴展性:h) 可鏈接的取樣器允許無限制的測試能力。i) 各種負載統(tǒng)計表和可鏈接的計時器可供選擇。j) 數(shù)據(jù)分析和可視化插件提供了很好的可擴展性以及 以及個性化。k) 具有提供動態(tài)輸入到測試的功能(包括Javascrpt)。l) 支持腳本變成的取樣器(在1.9.2及以上版本支持BeanShell)。,JMeter介紹,Jmeter主要元件,測試計劃(Test Plan)是使用 JMeter 進行測試的起點,它是其它 JMeter 測試元件的容器。 線程組(Thread Group)代表一定數(shù)量的并發(fā)用戶,它可以用來模擬并發(fā)用戶發(fā)送請求。 取樣
4、器(sampler)定義實際的請求內容,被線程組包含,我們主要用HTTP請求。 監(jiān)聽器(Listener) 邏輯控制器(Logic Controller) 斷言(Assertions) 配置元件(Config Element) 前置處理器(Pre Processors)和后置處理器(Post Processors) 定時器(Timer),JMeter主要元件介紹測試計劃,測試計劃(Test Plan)是使用 JMeter 進行測試的起點,它是其它 JMeter 測試元件的容器。 名稱:你可以為你的測試計劃取一個有意義的名字。 注釋:對測試計劃的注釋。 用戶定義的變量:用戶可以自己定義變量,在用
5、到此變量的時候直接用$變量名引用即可。例:變量名url,值,在需要時直接用$url即可。 Add directory or jar to classpath:向類路徑即%JMETER-HOME%lib中添加目錄及jar包。,JMeter主要元件件介紹線程用戶,雖然有三個添加線程組的選項,名字不一樣,創(chuàng)建之后,其界面是完全一樣的。 setupthreadgroup:一種特殊類型的ThreadGroup的,可用于執(zhí)行預測試操作。這些線程的行為完全像一個正常的線程組元件。不同的是,這些類型的線程執(zhí)行測試前進行定期線程組的執(zhí)行。 teardownthreadgroup:一種特殊類型的ThreadGro
6、up的,可用于執(zhí)行測試后動作。這些線程的行為完全像一個正常的線程組元件。不同的是,這些類型的線程執(zhí)行測試結束后執(zhí)行定期的線程組。 如果您用過junit,想必你不會對 setup,teardown這陌生。熟悉loadrunner的應該知道,loadrunner的腳本除了action里是真正的腳本核心內容,還有初始化“環(huán)境”的初始化腳本和測試完畢后對應的清除信息的腳本塊。那么這 里setupthreadgroup和teardownthreadgroup就是分別指這兩部分。其實從本質上來看,他們并沒有什 么不同,JMeter主要元件件介紹線程用戶,threadgroup(線程組):這個就是我們通常添
7、加運行的線程。通俗的講一個線程組,,可以看做一個虛擬用戶組,線程組中的每個線程都可以理解為一個虛擬用戶。線程組中包含的線程數(shù)量在測試執(zhí)行過程中是不會發(fā)生改變的,JMeter主要元件介紹線程組,名稱:為線程組起名字。 線程屬性線程數(shù):設置發(fā)送請求的用戶數(shù)目 ,即并發(fā)數(shù)。 線程屬性Ramp-Up Period(in second):線程間的時間間隔,單位是秒。即所有線程在多少時間內啟動。 線程屬性循環(huán)次數(shù):請求的重復次數(shù),如果選擇后面的forever(默認),那么 請求將一直繼續(xù),如果不選擇forever,而在輸入框中輸入數(shù)字,那么請求將重復指定的次數(shù),如果輸入1,那么請求將執(zhí)行一次,如果是0,會
8、出現(xiàn)問題。 調度器配置啟動時間:測試計劃什么時候啟動,啟動延遲會覆蓋它。 調度器配置結束時間:測試計劃什么時候結束,持續(xù)時間會覆蓋它。 調度器配置持續(xù)時間:測試計劃持續(xù)多長時間,會覆蓋結束時間。 調度器配置啟動延遲:測試計劃延遲多長時間啟動,會覆蓋啟動時間。,JMeter主要元件介紹取樣器(HTTP請求),名稱:HTTP請求的名字。 Web服務器服務器名稱或IP、端口號,腳本錄制時自動添加,也可以使用“用戶自定義變量”。 HTTP請求:用默認值即可。 同請求一起發(fā)送參數(shù):請求中的參數(shù)、值可以在此設置,需要用到參數(shù)化及動態(tài)數(shù)據(jù)關聯(lián),我們在后面專門介紹。 同請求一起發(fā)送文件:我可以制定同請求一起發(fā)
9、送哪個文件。 其他任務包括:從HTML文件中獲取所有內含的資源、用作監(jiān)視器、Embedded URLs must match。,JMeter主要元件介紹監(jiān)聽器,監(jiān)聽器(Listener)負責收集測試結果,同時也被告知了結果顯示的方式。我們常用的包括:聚合報告、查看結果樹、用表格查看結果,都支持將結果數(shù)據(jù)寫入文件。,JMeter主要元件介紹監(jiān)聽器(查看結果樹),,JMeter主要組件介紹監(jiān)聽器(聚合報告),,JMeter主要元件介紹邏輯控制器,邏輯控制器(Logic Controller)可以自定義JMeter發(fā)送請求的行為邏輯,它與Sampler結合使用可以模擬復雜的請求序列。,JMeter主
10、要元件介紹邏輯控制器,循環(huán)控制器可以設置請求的循環(huán)次數(shù)或永遠循環(huán)(如果選中永遠的話)。 事務控制器可以將多個請求放在同一個事務中。如果選中Gegerate parent sample,則聚合報告中只顯示事務控制器的數(shù)據(jù),而不會顯示其中的各個請求的數(shù)據(jù),反之則全部顯示。,JMeter主要元件介紹邏輯控制器,條件判斷成功,執(zhí)行其中的內容??梢杂卸鄠€條件,JMeter主要元件介紹斷言,斷言(Assertions)可以用來判斷請求響應的結果是否如用戶所期望的。它可以用來隔離問題域,即在確保功能正確的前提下執(zhí)行壓力測試。這個限制對于有效的測試是非常有用的。,JMeter主要元件介紹斷言(響應斷言),斷言
11、(Assertions)可以用來判斷請求響應的結果是否如用戶所期望的。這個限制對于有效的測試是非常有用的。,JMeter主要元件介紹斷言(響應斷言),包括:返回結果包括你指定的內容。 匹配:一般是完全匹配指定的返回內容。 Equals:完全匹配。 Subring:返回結果是指定結果的字串。 包括,匹配:可以使用正則表達式。 Equals, Substring:使用純文本,區(qū)分大小寫。,JMeter主要元件介紹斷言(斷言結果),JMeter主要元件介紹配置元件,配置元件(Config Element)維護Sampler需要的配置信息,并根據(jù)實際的需要會修改請求的內容。,JMeter主要元件介紹配
12、置元件(http請求默認值),用來對所有http請求設定默認值。,JMeter主要元件介紹配置元件(http請求默認值),用來定義已知的變量。比如ip,port,用戶名密碼等。,JMeter主要元件介紹配置元件( CSV Data Set Config),Filename:文件位置及名稱。 File Encoding: 默認為ANSI,可寫為UTF-8。 Varible Names: 定義文本文件中的參數(shù)名,參數(shù)之間逗號分隔.定義后可在腳本在以Shell變量的同樣的方式引用。$user,$password。 Delimiter:csv文件分隔符默認逗號。 Recycle on EOF ? :
13、True=當讀取文件到結尾時,再重頭讀取文件。False=當讀取文件到結尾時,停止讀取文件。 Stop thread on EOF?:當上面為False時起效; True=當讀取文件到結尾時,停止進程 Sharing Mode :設置共享,可以設置線程組共享,也可以是所有線程等。,JMeter主要組件介紹前置處理器和后置處理器,前置處理器(Pre Processors)和后置處理器(Post Processors)負責在生成請求之前和之后完成工作。前置處理器常常用來修改請求的設置,后置處理器則常常用來處理響應的數(shù)據(jù)。我們主要在動態(tài)關聯(lián)中用到后置處理器的正則表達式提取器。,JMeter主要組件介
14、紹定時器,定時器(Timer)負責定義請求之間的延遲間隔。,參數(shù)化設置,在HTTP請求中常常會提交一些參數(shù),我們?yōu)榱瞬幌朐诿恳淮握埱笾卸际褂孟嗤膮?shù)值,就要想辦法讓每一次請求的參數(shù)的值都是不一樣的,我們就需要進行參數(shù)化設置,這里我們介紹兩種參數(shù)化設置的方法。 一種是利用函數(shù)助手中的_Random函數(shù)進行參數(shù)化設置; 一種是利用配置元件中的CSV Data Set Config進行參數(shù)化設置。,參數(shù)化設置函數(shù)助手,JMeter中有一個函數(shù)助手的功能,里面內置了多個函數(shù),我們可以利用其中的_Random函數(shù)來進行請求中的參數(shù)化設置。,參數(shù)化設置函數(shù)助手,選擇一個功能_Random。 設定最小值為
15、1。 設定最大值為100。 函數(shù)名稱設為func1。 點擊生成將生成一個引用字符串$_Random(1,100,func1,在需要的請求參數(shù)中拷貝該字符串即可。 其中函數(shù)名稱用來在引用中作區(qū)別,即我們可以設定不同的名稱在不同的地方引用同一個函數(shù)的功能。,參數(shù)化設置函數(shù)助手,例如:我們生成一個$_Random(1,9999,Random),在執(zhí)行添加類目用例時,生成一個隨機數(shù)用在類目名稱里。,動態(tài)數(shù)據(jù)關聯(lián),在HTTP請求的參數(shù)中經(jīng)常會遇到一些參數(shù)的值是從服務器相應的動態(tài)數(shù)據(jù),這些數(shù)據(jù)需要進行關聯(lián)才能使得每一次請求都能成功得被服務器接受,在JMeter中采用正則表達式提取器來獲取這些動態(tài)的數(shù)據(jù)。
16、正則表達式允許用戶從服務器響應中獲取數(shù)據(jù),作為一個后置處理器,正則表達式提取器會在每一個請求執(zhí)行后再執(zhí)行,正則表達式提取請求的參數(shù)值,產(chǎn)生模板字符串,并將結果保存到給出的變量中。,動態(tài)數(shù)據(jù)關聯(lián)正則表達式提取器,在HTTP請求的參數(shù)中經(jīng)常會遇到一些參數(shù)的值是從服務器相應的動態(tài)數(shù)據(jù),這些數(shù)據(jù)需要進行關聯(lián)才能使得每一次請求都能成功得被服務器接受,在JMeter中采用正則表達式提取器來獲取這些動態(tài)的數(shù)據(jù)。比如,我們要測試獲取菜品列表接口,則要先使用獲取菜品類目接口,獲取一個類目id,然后用在獲取菜品接口上。,動態(tài)數(shù)據(jù)關聯(lián)正則表達式提取器,要檢查的響應字段:一般我們選擇主體,即服務器返回給我們的頁面主體
17、信息,也可以選擇信息頭等。 引用名稱:即參數(shù)名稱,這個自己定義,在后面時用。 正則表達式:()括起來的部分就是要提取的。.代表任意字符,+代表出現(xiàn)任意次,后面加?,動態(tài)數(shù)據(jù)關聯(lián)正則表達式提取器,模板:$1$代表只匹配一組數(shù)據(jù),如果需要正則表達式提取兩個數(shù)據(jù),比如需要兩個用()起來的。可以用$1$, $2$. 匹配數(shù)字:1代表值匹配第一次出現(xiàn)的(正整數(shù)都可以使用), -1代表獲取所有匹配到的,0代表隨機。如果設置匹配所有的,可以使用$str_1, $str_2來分別調用第一次匹配到的和第二次匹配到的(參數(shù)以數(shù)組的形式存儲)。 缺省值:如果都匹配不到,就用這個默認的。,使用時就可以使用$categ
18、ory_id-wm-sj來表示獲取到的,,動態(tài)數(shù)據(jù)關聯(lián)正則表達式提取器,Jmeter元件的作用域與順序,配置元件:元件會影響其作用范圍內的所有元件。 前置處理程序:元件在其作用范圍內的每一個sampler元件之前執(zhí)行。 定時器:元件對其作用范圍內的每一個sampler有效。 后置處理程序:元件在其作用范圍內的每一個sampler元件之后執(zhí)行。 斷言:元件對其作用范圍內的每一個sampler元件執(zhí)行后的結果執(zhí)行校驗。 監(jiān)聽器:件收集其作用范圍的每一個sampler元件的信息并呈現(xiàn)。,Jmeter元件的作用域與順序,作用域的原則是: 取樣器(sampler)元件不和其它元件相互作用,因此不存在作用
19、域的問題。 邏輯控制器(LogicController)元件只對其子節(jié)點中的取樣器和邏輯控制器作用。 除取樣器和邏輯控制器元件外,其他6類元件,如果是某個sampler的子節(jié)點,則該元件公對其父子節(jié)點起作用。 除取樣器和邏輯控制器元件外的其他6類元件,如果其父節(jié)點不是sampler,則其作用域是http://10.8.8.58:8005/該元件父節(jié)點下的其他所有后代節(jié)點(包括子節(jié)點,子節(jié)點的子節(jié)點等)。,Jmeter元件的作用域與順序,元件的執(zhí)行順序:同一作用域名范圍內,測試計劃中的元件按照如下順序執(zhí)行。 配置元件 前置處理 定時器 取樣器 后置處理 斷言 監(jiān)聽,Jmeter元件的作用域與順序
20、,前置處理器、后置處理器和斷言等元件對取樣器作用,因此,如果在它們的作用域內沒有任何取樣器,則不會被執(zhí)行。 如果在同一作用域范圍內有多個同一類型的元件,則這些元件按照它們在測試計劃中的上下順序一次執(zhí)行。,JMeter中進行分布式測試,作為一個純 JAVA 的GUI應用,JMeter對于CPU和內存的消耗還是很驚人的,所以當需要模擬數(shù)以千計的并發(fā)用戶時,使用單臺機器模擬所有的并發(fā)用戶就有些力不從心,甚至還會引起JAVA內存溢出的錯誤。不過,JMeter也可以像 LoadRunner 一樣通過使用多臺機器運行所謂的代理來分擔負載產(chǎn)生器自身的壓力,并借此來獲取更大的并發(fā)用戶數(shù),我們只需手動配置一下即
21、可。 1、在所有期望運行JMeter作為 負載產(chǎn)生器的機器上安裝JMeter,并確定其中一臺機器作為 控制器,其他的機器作為 代理。然后運行所有 代理 機器上的JMeter-server.bat文件假定我們使用兩臺機器172.20.80.47和172.20.80.68作為 代理; 2、在Controller 機器的JMeter安裝目錄下找到 bin 目錄,再找到 jmeter.properties 這個文件,使用記事本或者其他文字編輯工具打開它; 3、在打開的文件中查找“remote_hosts=”這個字符串,你可以找到這樣一行“remote_hosts=127.0.0.1”。其中的 127.0..0.1 表示運行JMeter代理的機器,這里需要修改為“remote_hosts=172.20.80.47,172.20.80.68”; 4、保存文件,并重新啟動控制器機器上的JMeter,并進入啟動 -遠程啟動菜單項。就會看到我們剛才添加的兩個代理的地址,選中即可運行,如果想同時啟動所有代理,選擇遠程全部啟動即可。 要進行分布式測試代理機器上需要添加環(huán)境變量,即添加用戶變量JMETER_HOMEd:jmeter,系統(tǒng)變量中的path中添加d:jmeterbin(假設jmeter放在d盤根目錄下)。,謝謝!,,