1. 程式人生 > >【蟲師--系列】Jmeter基礎之---jmeter基礎概念

【蟲師--系列】Jmeter基礎之---jmeter基礎概念

轉自:http://www.cnblogs.com/fnng/archive/2012/12/21/2828440.html   作者:蟲師

JMeter 介紹: 一個非常優秀的開源的效能測試工具。

優點:你用著用著就會發現它的重多優點,當然不足點也會呈現出來。

從效能工具的原理劃分

Jmeter工具和其他效能工具在原理上完全一致,工具包含4個部分:

(1)負載發生器:用於產生負載,通常以多執行緒或是多程序的方式模擬使用者行為。

(2)使用者執行器:通常是一個指令碼執行引擎,使用者執行器附加線上程或程序上,根據指令碼要求模擬指定的使用者行為。

(3)資源生成器:用於生成測試過程中伺服器、負載機的資源資料。

(4)報表生成器:根據測試中霍地的資料生成報表,提供視覺化的資料顯示方式。

測試計劃元件

Test Plan (測試計劃):用來描述一個性能測試,包含與本次效能測試所有相關的功能。也就說本的效能測試的所有內容是於基於一個計劃的。

下面看一下一個計劃下面都有哪些主要的功能模組(右鍵單擊“測試計劃”彈出選單)。

Threads (Users)執行緒 使用者

雖然有三個新增執行緒組的選項,名字不一樣, 建立之後,其介面是完全一樣的。之前的版本只有一個執行緒組的名字。現在多一個setUp theread Group 與terDown Thread Group 

1) setup thread group  

  一種特殊型別的ThreadGroup的,可用於執行預測試操作。這些執行緒的行為完全像一個正常的執行緒組元件。不同的是,這些型別的執行緒執行測試前進行定期執行緒組的執行。

2) teardown thread group.  

  一種特殊型別的ThreadGroup的,可用於執行測試後動作。這些執行緒的行為完全像一個正常的執行緒組元件。不同的是,這些型別的執行緒執行測試結束後執行定期的執行緒組。

  可能你還是不太理他們與普通的執行緒組有什麼不同。 如果您用過junit,想必你不會對setup ,teardown這2個字眼陌生。 即時每用過,也沒關係。 熟悉loadrunner的應該知道,loadrunner的指令碼除了action裡是真正的指令碼核心內容,還有初始化“環境”的初始化指令碼和測試完畢後對應的清除資訊的指令碼塊。 那麼這裡 setup thread group 和 teardown thread group 就是分別指這兩部分。  其實從本質上來看,他們並沒有什麼不同。

3) thread group(執行緒組).

     這個就是我們通常新增執行的執行緒。通俗的講一個執行緒組,,可以看做一個虛擬使用者組,執行緒組中的每個執行緒都可以理解為一個虛擬使用者。執行緒組中包含的執行緒數量在測試執行過程中是不會發生改變的。

測試片段(Test Fragment)

 

  測試片段是在2.5版本之後新加的一個選項。

  測試片段元素是控制器上的一個種特殊的執行緒組,它在測試樹上與執行緒組處於一個層級。它與執行緒組有所不同,因為它不被執行,除非它是一個模組控制器或者是被控制器所引用時才會被執行。

控制器

JMeter有兩種型別的控制器:取樣器(sample)和邏輯控制器(Logic Controller),用這些原件來驅動處理一個測試。

取樣器(Sampler)

 

    取樣器(Sample)是效能測試中向伺服器傳送請求,記錄響應資訊,記錄響應時間的最小單元,JMeter 原生支援多種不同的sampler ,如 HTTP Request Sampler 、 FTP  Request Sample 、TCP  Request Sample 、JDBC Request Sampler 等,每一種不同型別的 sampler 可以根據設定的引數向伺服器發出不同型別的請求。(在jmeter 的所有sampler 中,Java Request Sampler 和 Beanshell Request Sampler 是兩種特殊的可定製的 Sampler ,後面會深入討論。)

邏輯控制器(Logic Controller)

  邏輯控制器,包括兩類無件,一類是用於控制test plan 中 sampler 節點發送請求的邏輯順序的控制器,常用的有 如果(If)控制器 、switch Controller 、Runtime Controller、迴圈控制器等。另一類是用來組織可控制 sampler 來節點的,如 事務控制器、吞吐量控制器。

配置元件(Config Element)

 

  配置元件(config element)用於提供對靜態資料配置的支援。CSV Data Set config 可以將本地資料檔案形成資料池(Data Pool),而對應於HTTP Request Sampler和 TCP Request Sampler等型別的配製無件則可以修改Sampler的預設資料。(例如,HTTP Cookie Manager 可以用於對 HTTP Request Sampler 的cookie 進行管理)

定時器(Timer)

   定時器(Timer)用於操作之間設定等待時間,等待時間是效能測試中常用的控制客戶端QPS的手端。類似於LoadRunner裡面的“思考時間”。JMeter 定義了Bean Shell Timer、Constant Throughput Timer、固定定時器等不同型別的Timer。

前置處理器(Per Processors)

  用於在實際的請求發出之前對即將發出的請求進行特殊處理。例如,HTTP URL重寫修復符則可以實現URL重寫,當RUL中有sessionID 一類的session資訊時,可以通過該處理器填充發出請求的實際的sessionID 。

後置處理器(Post Processors)

  用於對Sampler 發出請求後得到的伺服器響應進行處理。一般用來提取響應中的特定資料(類似LoadRunner測試工具中的關聯概念)。例如,XPath  Extractor 則可以用於提取響應資料中通過給定XPath 值獲得的資料。

斷言(Assertions)

 

   斷言用於檢查測試中得到的相應資料等是否符合預期,斷言一般用來設定檢查點,用以保證效能測試過程中的資料互動是否與預期一致。

監聽器(Listener)

 

   這個監聽器可不是用來監聽系統資源的元件。它是用來對測試結果資料進行處理和視覺化展示的一系列元件。 圖行結果、檢視結果樹、聚合報告。都是我們經常用到的元件。

到此,我們已經簡單瞭解了jmeter的基本組成原件,我們後序的效能測試工作也就是使用這些元件來完成測試任務。

 閱讀連結: