測試計划
Test Plan (測試計划)
用來描述一個性能測試,包含與本次性能測試所有相關的功能。也就說JMeter創建性能測試的所有內容是於基於一個計划的。
下面看看一個計划下面都有哪些功能模塊(右鍵單擊“測試計划”彈出菜單)。
Threads (Users)線程 用戶
雖然有三個添加線程組的選項,名字不一樣, 創建之后,其界面是完全一樣的。在Jmeter之前的版本只有一個線程組的名字。現在多一個 setUp theread Group 與 tearDown Thread Group
- setup thread group
一種特殊類型的ThreadGroup的,可用於執行預測試操作。這些線程的行為完全像一個正常的線程組元件。不同的是,這些類型的線程執行 測試前 進行定期線程組的執行。
- teardown thread group
一種特殊類型的ThreadGroup的,可用於執行測試后動作。這些線程的行為完全像一個正常的線程組元件。不同的是,這些類型的線程執行 測試結束后 進行定期的線程組。
可能你還是不太理解他們與普通的線程組有什么不同。 如果您用過Junit單元測試框架,想必你不會對setUp(before) ,tearDown(after) 這兩個關鍵字不陌生。 即使沒用過,也沒關系。 熟悉loadrunner的應該知道,loadrunner的腳本除了action里是真正的腳本核心內容,還有初始化“環境”的初始化腳本和測試完畢后對應的清除信息的腳本塊。 那么這里 setup thread group 和 teardown thread group 就是分別指這兩部分。 其實從本質上來看,他們並沒有什么不同。
- thread group(線程組)
這個就是我們通常添加運行的線程。通俗的講一個線程組,可以看做一個虛擬用戶組,線程組中的每個線程都可以理解為一個虛擬用戶。線程組中包含的線程數量在測試執行過程中是不會發生改變的。
測試片段(Test Fragment)
測試片段是在JMeter2.5版本之后新加的一個選項。
測試片段元素是控制器上的一個種特殊的線程組,它在測試樹上與線程組處於一個層級。它與線程組有所不同,因為它不被執行,除非它是一個模塊控制器或者是被控制器所引用時才會被執行
配置元件(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。
前置處理器(Pre Processors)
用於在實際的請求發出之前對即將發出的請求進行特殊處理。例如,HTTP URL重寫修飾符則可以實現URL重寫,當RUL中有sessionID 一類的session信息時,可以通過該處理器填充發出請求的實際的SessionID 。
后置處理器(Post Processors)
用於對 Sampler 發出請求后得到的服務器響應進行處理。一般用來提取響應中的特定數據(類似LoadRunner測試工具中的關聯概念)。例如,XPath Extractor 則可以用於提取響應數據中通過給定XPath值獲得的數據。
斷言(Assertions)
斷言用於檢查測試中得到的相應數據等是否符合預期,斷言一般用來設置檢查點,用以保證性能測試過程中的數據交互是否與預期一致。
監聽器(Listener)
這個監聽器可不是用來監聽系統資源的元件。它是用來對測試結果數據進行處理和可視化展示的一系列元件。 圖形結果、察看結果樹、聚合報告等都是我們經常用到的元件。
控制器
JMeter有兩種類型的控制器:取樣器(Sampler)和邏輯控制器(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 來節點的,如 事務控制器、吞吐量控制器。
到此,我們已經簡單介紹了JMeter中的所有元件,后序的性能測試工作也就是使用這些元件來創建測試任務。所以,你現還不理解這些元件具體使用,沒關系!先有個印象。