Jmeter簡介
jmeter是啥?
Apache JMeter 是Apache組織的開放源代碼項目,是一個純Java桌面應用,用於壓力測試和性能測量。它最初被設計用於Web應用測試但後來擴展到其它測試領域。
jmeter有啥用?
Apache JMeter可以用於對靜態的和動態的資源(文件,Servlet,Perl腳本,Java對象,資料庫和查詢,FTP伺服器或是其它資源)的性能進行測試。JMeter可以用於分析不同壓力條件下的總體性能情況。也可以使用JMeter提供的圖形化界面,分析性能指標或者在高負載情況下測試你的伺服器,腳本,對象。
jmeter和LR有s’m區別?

Jmeter安裝配置
安裝配置號JDK
鏈接:
https://pan.baidu.com/s/15v8zjGlERZvnwDgYHLd9Jg 提取碼: 9×59
Jmeter下載地址(以win10為例)
鏈接:
https://pan.baidu.com/s/1gl7Y26Rjhj6N6NF214U96A 提取碼: rh4y
3.下載後直接點擊安裝
4.Jmeter啟動:解壓,bin目錄下運行ApacheJMeter.jar進行啟動。
Jmeter文件目錄介紹
bin:可執行文件目錄
bin目錄文件:
ljmeter.bat:windows的啟動文件
l jmeter.log:日誌文件
l jmeter.sh:linux的啟動文件
l jmeter.properties:系統配置文件
l jmeter-server.bat:windows分散式測試要用到的伺服器配置
l jmeter-serve:linux分散式測試要用到的伺服器配置
docs:介面文檔目錄
extras:擴展插件目錄
lib:所用到的插件目錄,裡面全是jar包,jmeter會自動在JMETER_HOME/lib 和 ext 目錄下尋找需要的類
licenses:jmeter證書目錄
printable_docs:用戶使用手冊
jmeter工具組成部分:
資源生成器:用於生成測試過程中伺服器、負載機的資源代碼。(LR中的VuGen)
用戶運行器:通常是一個腳本運行引擎,根據腳本要求模擬指定的用戶行為。(LR中的Controller)
報表生成器:根據測試中實時地的數據生成報表,提供可視化的數據顯示方式。(LR中的Analysis)
負載發生器:用於產生負載,通常以多線程或是多進程的方式模擬用戶行為。(LR中LoadGenerators)
Test Plan (測試計劃):用來描述一個性能測試,包含與本次性能測試所有相關的功能。也就說本的性能測試的所有內容是於基於一個計劃的。(相當於lr的一個測試場景)
Threads (Users)線程 用戶
A. setup thread group
一種特殊類型的ThreadGroup的,可用於執行預測試操作。這些線程的行為完全像一個正常的線程組元件。不同的是,這些類型的線程執行測試前進行定期線程組的執行。類似LR的init( )
2) teardown thread group.
一種特殊類型的ThreadGroup的,可用於執行測試後動作。這些線程的行為完全像一個正常的線程組元件。不同的是,這些類型的線程執行測試結束後執行定期的線程組。類似於LR中的end( )
3)threadgroup(線程組).
這個就是我們通常添加運行的線程。可以看做一個虛擬用戶組,線程組中的每個線程都可以理解為一個虛擬用戶。線程組中包含的線程數量在測試執行過程中是不會發生改變的。類似LR的action()
測試片段(Test Fragment)
測試片段元素是控制器上的一個種特殊的線程組,它在測試樹上與線程組處於一個層級。它與線程組有所不同,因為它不被執行,除非它是一個模塊控制器或者是被控制器所引用時才會被執行。
以下是線程組的8類可執行元件
1.配置元件(Config Element)
配置元件(config element)用於提供對靜態數據配置的支持。如CSV Data Set config 可以將本地數據文件形成數據池(Data Pool)。
2.定時器(Timer)
定時器(Timer)用於操作之間設置等待時間,等待時間是性能測試中常用的控制客戶端QPS的手端。類似於LoadRunner裡面的「思考時間」。JMeter 定義了Bean Shell Timer、Constant Throughput Timer、固定定時器等不同類型的Timer。
3.前置處理器(Per Processors)
用於在實際的請求發出之前對即將發出的請求進行特殊處理。例如,HTTP URL重寫修復符則可以實現URL重寫,當URL中有sessionID 一類的session信息時,可以通過該處理器填充發出請求的實際的sessionID 。
4.後置處理器(PostProcessors)
用於對Sampler 發出請求後得到的伺服器響應進行處理。一般用來提取響應中的特定數據(類似LoadRunner測試工具中的關聯概念)。
斷言(Assertions)
斷言用於檢查測試中得到的相應數據等是否符合預期,斷言一般用來設置檢查點,用以保證性能測試過程中的數據交互是否與預期一致。
監聽器(Listener)
是用來對測試結果數據進行處理和可視化展示的一系列元件。圖行結果、查看結果樹、聚合報告。都是我們經常用到的元件。注意:這個監聽器可不是用來監聽系統資源的元件。
JMeter有兩種類型的控制器:取樣器(sample)和邏輯控制器(Logic Controller),用這些原件來驅動處理一個測試。
取樣器(sample)
取樣器(Sample)是性能測試中向伺服器發送請求,記錄響應信息,記錄響應時間的最小單元,JMeter原生支持多種不同的sampler ,如 HTTPRequest Sampler 、 FTP Request Sample 、TCP Request Sample 、JDBCRequest Sampler 等,每一種不同類型的 sampler 可以根據設置的參數向伺服器發出不同類型的請求。
邏輯控制器
邏輯控制器,包括兩類無件,一類是用於控制test plan 中sampler 節點發送請求的邏輯順序的控制器,常用的有 如果(If)控制器 、switch Controller 、Runtime Controller、循環控制器等。另一類是用來組織可控制 sampler 來節點的,如 事務控制器、吞吐量控制器。
Jmeter腳本錄製
1.Jmeter腳本錄製
Http請求+查看結果樹
代理伺服器操作步驟
創建一個線程組(右鍵點擊「測試計劃」->「添加」->「線程組」)
創建一個http代理伺服器(右鍵點擊「工作台」->「添加」->「非測試元件」->「http代理伺服器」)
Tip HTTP伺服器代理設置——分組詳解
l 不對樣本分組:所有請求全部羅列
l 在組間添加分隔:加入一個虛擬的以分割線命名的動作。
l 每個組放入一個新的控制器:執行時按控制器給輸出結果
l 只存儲每個組的第一個樣本:保存對於一次url請求。
設置完後要啟動代理伺服器,錄製完成後記得關閉,
IE->「internet屬性」->「連接」->「區域網設置」
在瀏覽器里對指定的頁面進行訪問。錄製完成後,把瀏覽器的代理伺服器勾去掉。
2.Badboy 腳本錄製
Badboy是一個強大的工具,旨在幫助測試和開發複雜的動態應用。Badboy包括一個簡單而全面的捕獲/回放界面,強大的負載測試的支持,詳細的報告圖表等等,從而使Web測試和開發變得更加容易.
關於錄製時的腳本錯誤提示訪問者所使用的瀏覽器不能完全支持頁面里的腳本,形成「腳本錯誤」。遇到「腳本錯誤」時一般會彈出一個非常難看的腳本運行錯誤警告窗口,而事實上,腳本錯誤並不會影響網站瀏覽,因此這一警告可謂多此一舉。要關閉警告則可以在瀏覽器的工具菜單選擇Internet選項,然後單擊高級屬性頁。進入到瀏覽標籤,並選中「禁止腳本調試」複選框,以後你就不會再收到這些警告了。
腳本錄製完成後,導出為 Export to Jmeter (見腳本haosou.bx)
badboy檢查點與參數化
檢查點設置:選擇要檢查的文字,然後在Tools>step1里添加斷言,再回放
參數化:在請求搜索關鍵字的部分進行參數化,找到請求的欄位,然後對其值進行設定。參數化替換${參數名稱} 最後在step 1屬性里進行設置回放次數和參數化的變數名稱。最後檢查點也要進行參數化,以及整個step 屬性的設置
Jmeter元件作用域和執行順序
1.元件作用域
8類可被執行的元件(測試計劃與線程組不屬於可執行元件),這些元件中,取樣器(sampler)是典型的不與其它元件發生交互作用的元件,邏輯控制器只對其子節點的取樣器有效,而其它元件(配置元件 、定時器、斷言、監聽器、)需要與取樣器(sampler)等元件交互。
在jmeter中,元件的作用域是靠測試計劃的的樹型結構中元件的父子關係來確定的,作用域的原則是:
• 取樣器(sampler)元件不和其它元件相互作用,因此不存在作用域的問題。
• 邏輯控制器(Logic Controller)元件只對其子節點中的取樣器和邏輯控制器作用。
• 除取樣器和邏輯控制器元件外,其他6類元件,如果是某個取樣器的子節點,則該元件對其父子節點起作用。如果其父節點不是取樣器 ,則其作用域是該元件父節點下的其他所有後代節點(包括子節點,子節點的子節點等)。
最後一個查看結果樹的作用域為循環控制器下面所有取樣器的結果
2.元件執行順序
(1)配置元件(config elements )
(2)前置處理程序(Per-processors)
(3)定時器(timers )
(4)取樣器(Sampler)
(5)後置處理程序(Post-processors)
(6)斷言(Assertions)
(7)監聽器(Listeners)
關於執行順序,有兩點需要注意:
前置處理器、後置處理器和斷言等元件功能對取樣器作用,因此,如果在它們的作用域內沒有任何取樣器,則不會被執行。
如果在同一作用域範圍內有多個同一類型的元件,則這些元件按照它們在測試計劃中的上下順序依次執行。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/250050.html