Jmeter基礎(工具認識)(二)

Jmeter基礎(工具認識)(二)

三、元件作用域和執行順序

jmeter是一個開源的效能測試工具,它可以通過滑鼠拖拽來隨意改變元件之間的順序以及元件的父子關係,那麼隨著它們的順序和所在的域不同,它們在執行的時候,也會有很多不同。

jmeter的testplan通過圖形化的方式表達指令碼,域程式碼方式的指令碼不同,圖形方式表達的指令碼中無法使用變數和函式等描述元件的作用域,因此jmeter主要依靠test plan中元件的相對位置、

父子關係以及元件本身的型別來決定test plan中各元件的執行順序;某個原件在test plan中的位置不同,可能導致該元件的行為有很大的差異。(新版jmeter都可以自主選擇語言,對號入座即可)

 

1、元件的作用域

jmeter中共有8類可被執行的元件(testplan和thread group不屬於元件),其中,sampler(取樣器)是不與其他元件發生互動的作用的元件,Logic Controller

(邏輯控制器)只對其子節點的sampler有效,而其他元件需要與sampler等元件互動。

Config Elements(配置元件):影響其範圍內的所有元件

Pre-porcessors(前置處理器):在其作用範圍內的每一個sampler元件之前執行

Timer(定時器):對其作用範圍內的每一個sampler有效

Post-porcessors(後置處理器):在其作用範圍內的每一個sampler元件之後執行

Assirtions(斷言):對其作用範圍內的每一個sampler元件執行後的結果執行校驗

Listener(監聽器):收集其作用範圍內的每一個sampler元件的資訊並且呈現出來

在jmeter中,元件的作用域是靠test plan的樹形結構中元件的父子關係來確定的,其原則如下:

1)sampler不與其他元件相互作用,因此不存在作用域問題

2)Logic Controller只對其子節點中的sampler和Logic Controller作用

3) 除sampler和Logic Controller外的其他元件,如果是某個sampler的子節點,則該元件僅對其父節點作用

4) 除sampler和Logic Controller外的其他元件,如果其父節點不是sampler,則其作用域是該元件父節點下的其他所有後帶節點(包括子節點,子節點的子節點等)

 

子節點。

JMete執行順序邏輯如下。

(1)配置元件(如果存在)。

(2) 前置處理器(如果存在)。

(3) 定時器(如果存在)。

(4) 取樣器(如果存在)。

(5) 後置處理器(如果存在且取樣器的的結果不為空)。

(6) 斷言(如果存在且取樣器的結果不為空)。

(7) 監聽器(如果存在且取樣器的結果不為空)。

注意:Pre-porcessors、Post-porcessors和Assirtions等元件僅對Sampler作用,如在它們作用域內沒有任何Sampler,則不會被執行,如果在同一作用域範圍內有多個同一型別的元件,則這些元件按照它們在test plan中的上下順序依次執行。

四、Jmeter相關元件詳解

Jmeter的元件較多,熟悉常用的元件,其他的瞭解,需要使用時詳細瞭解,使用思維導圖進行的編輯,當做輔助工具檢視。

五、Jmeter執行及優化

在使用Jmeter進行效能測試時,工具本身也會佔用資源影響效能,首先是影象化執行時耗用的資源多於非UI的資源佔用,另外JMeter工具基於Java的,在jvm方面也可以優化,同時當一些測試場景時需要虛擬大量使用者時,單個機器效能無法滿足,就需要分散式的控制多個遠端節點的Jmeter方式進行測試。

其他Jmeter效能的優化參考:https://blog.csdn.net/loadrunn/article/details/51315702

使用非UI方式執行

執行

使用UI模式進行壓力測試時,Jmeter本身會佔用很多資源,影響測試,使用非UI的命令列方式執行測試指令碼時大大縮減了所需要資源(一下舉例都是在windows環境下,linux相同原理)

在命令列第一次執行

在命令列視窗,進入到Jmeter的bin目錄下,在該目錄下輸入命令

Jmeter –n –t d:\a2_JMeter專案\jiekkouScript.jmx –l listener.jtl

執行成功返回結果資訊如下圖

以上命名就是執行jiekouScript.jmx測試指令碼,執行結果儲存到listener.jtl

檔案中

檢視Jmeter命令,在該路徑下直接輸入Jmeter –h,檢視幫助,檢視常使用的方法,我們剛輸入的命令格式就在下面展示

在命令後經常帶有引數,檢視引數的用法可以直接使用jmeter -? 檢視引數的具體使用,結合上面的常用語法使用就會明白,下面貼出常用引數的簡單解釋:

命令引數

命令釋義

-n

設定命令列格式

-t

指定JMX指令碼路徑,引數為JMX的指令碼路徑,若非在同目錄需要全路徑或者相對路徑

-l

指定結果檔案路徑(jtl或者cvs),引數為檔案路徑,不存在時會自動建立

-j

指定執行日誌路徑

引數為日誌路徑,路徑不存在不會自動建立,同時將日誌輸出到控制檯

-r

設定分散式(遠端)執行,伺服器列表由 Jmeter_home\jmeter.properties中的remote_hosts指定

-R

指定遠端伺服器(分散式)列表,引數為伺服器列表,配置形同remote_hosts指定,會覆蓋

-g

指定測試結果生成報表路徑,只能是報表,引數為cvs檔案

-e

設定測試完成後生成報表

-o

指定測試報表生成資料夾,資料夾必須為空或者不存在

-H

代理伺服器域名稱或者IP

-P

指定代理伺服器埠 引數為伺服器的埠

-L

定義日誌級別,參照log4j

-s

以伺服器方式執行,就是我們所說的遠端方式,啟動節點的Agent

-X

停止遠端執行

 

 

檢視結果

執行結束後,在命令列視窗顯示一個結果概要,如下圖

 

解析:

summary為請求數目,指在多少時間內增加了多少請求數目,由此算出後面的每秒到達的請求數24.9/s也就是每秒完成請求數(吞吐量),以及平均數、最大數、最小數等資訊,Err顯示請求報錯數,該測試結果過只能提供參考資訊,當然還要關注CPU、IO、事務響應時間、點選率、錯誤率等資訊進行具體分析,如果在命令視窗不直觀,依然可以在Jmeter圖形介面開啟測試結果

聚合報告->所有資料寫入一個檔案->選擇聲場的jtl檔案地址,就可在GUI頁面展示測試結果。

Jmeter的效能引數配置

在Jmeter.bat檔案中,設定

-Xms:設定初始堆大小

-Xmx:設定最大堆大小

-Xmn:設定年清代大小

Xmn一般是Xmx的1/2

Xms和Xmx一樣大

Jmeter遠端控制

環境搭建和配置

在遠端伺服器安裝Jmeter,要確保Jmeter版本和Jdk版本要一致,避免不必要的麻煩;

啟動遠端的Jmeter服務,啟動完成後會顯示埠和IP,避免埠衝突,可重新修改埠;修改埠在關閉Jmeter服務情況下修改,jmeter.properties,修改如下兩項配置,即可自定義埠號:

server_port=1029

server.rmi.localport=1029

就可以修改埠;

在管理機上,配置jmeter.properties下的remote_hosts,多個遠端中間用逗號分隔;

指令碼在本地管理機上就可以,但是如果有依賴cvs檔案,需要把cvs拷貝到遠端機器上的對應路徑下;

遠端機器上的jmeter都啟動,然後執行

參考部落格:

https://www.cnblogs.com/suntingme/p/5995721.html

執行

執行通在單個的非UI環境下執行相同

 

需要補充知識:

Beanshell指令碼

抓包工具使用

Http請求

請求的轉發和重定向辨別

正規表示式