1. 程式人生 > >zhuan:Jmeter基礎之---jmeter基礎概念

zhuan:Jmeter基礎之---jmeter基礎概念

初始 可視化 定時器 填充 測試 path 概念 性能測試 行為

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的基本組成原件,我們後序的性能測試工作也就是使用這些元件來完成測試任務。

閱讀鏈接:

《JMeter基礎之—錄制腳本》

----------------------------------------------------------------------------------

  最近工作很忙,經常加班。都沒什麽時間與群裏朋友扯淡,最近在看幾本軟件測試方面的基礎書,想從書裏有所感悟,或看到比較好的知識點,總結出來與大家分享。可書中的內容看過即忘,不知道是所選的測試書不好,還是因為工作壓力狀態不好。可時間一天一天,一月一月的過去,我甚至有點強迫自己必須要有收獲。

  性能測試一直是我今年的學習主軸,學習的其它知識都是在圍繞著這個主軸打基礎。本博客的開始的幾篇就是介紹jmeter的使用,事隔一年多,再次拾起對JMeter的熱情,與大家分享。

zhuan:Jmeter基礎之---jmeter基礎概念