JMeter基礎---全組件目錄

https://blog.csdn.net/paidaxing_dashu/article/details/102677738html

組件介紹
1)線程組
2)配置元件
3)定時器
4)前置處理器
5)取樣器
6)後置處理器
7)邏輯控制器
8)斷言
9)監聽器
10)函數java

概述正則表達式


1)線程組
序號 名稱 含義
原生線程組有:
1) setUp線程組 不管何種狀況下,最早執行的線程組,頁面配置同線程組
2) tearDown線程組 不管何種狀況下,最後執行的線程組,頁面配置同線程組
3) 線程組 最經常使用的
可安裝插件新增:安裝參考 參考案例
4) bzm - Arrivals Thread Group 到達線程組,模擬用戶在一段時間內的操做次數,達到這個負載。
5) bzm - Free-Form Arrivals Thread Group 自由格式到達線程組,相似到達線程組,能夠同時添加多個到達(迭代)設置。
6) jp@gc - Stepping Thread Group 步進線程組,階梯式加壓/階梯式減壓,由於能夠設置查看加/減壓的整個過程。
7) bzm - Concurrency Thread Group 併發線程組,步進線程組的替代方案。
8) jp@gc - Ultimate Thread Group 最終線程組,能夠靈活的添加多種不一樣的負載方式同時運行。
返回目錄數據庫

2)配置元件
序號 名稱 含義
原生配置元件有:
1) CSV Data Set Config CSV 數據文件設置,用來導入外部文件數據,參數化腳本
參數化操做,數據驅動,注意事項
2) JDBC Connection Configuration JDBC鏈接配置,鏈接數據庫使用的。參考案例
3) 計數器 能夠用來統計迭代次數,數字格式能夠本身設置。參考案例
4) Random Variable 數據變量,能夠按照指定格式隨機輸出數字字符。參考案例
5) 用戶定義的變量 自定義一系列變量,方便使用。參考案例
6) FTP請求缺省值 FTP Request Defaults,用於設置FTP請求的默認值。參考案例
HTTP屬性管理系列五個:參考案例
7) HTTP Cache Manager HTTP 緩存管理器,提供緩存功能,模擬瀏覽器行爲
8) HTTP Cookie 管理器 用來存儲瀏覽器產生的用戶信息
9) HTTP信息頭管理器 能夠添加HTTP請求頭 ,設置不一樣的請求類型
10) HTTP受權管理器 HTTP Authorization Manager,用於設置自動對一些須要NTLM驗證的頁面進行認證和登陸,NTLM是WinNT早期版本的標準安全協議
11) HTTP請求默認值 HTTP Request Defaults,設置HTTP請求使用的默認值
LDAP系列:
12) LDAP Extended Request Defaults LDAP擴展請求默認值,爲LDAP擴展測試設置默認值
13) LDAP請求默認值 爲LDAP測試設置默認值
不經常使用:參考案例
14) Java請求默認值 Java Request Defaults,爲Java測試設置默認值。參考案例
15) DNS Cache Manager DNS緩存管理器,提供靜態表來管理host,
16) Keystore Configuration 密鑰庫配置,配置密鑰庫的加載方式以及它將使用的密鑰。
17) TCP取樣器配置 爲TCP取樣器提供默認數據
18) 登錄配置元件/素 爲提取器添加或重載用戶名和密碼
19) 簡單配置元件 能夠在提取器中添加或重載任意值,主要是供開發人員在開發新的JMeter組件時使用的基本GUI
可安裝插件新增:安裝參考
20) jp@gc - Lock File Config
21) jp@gc - Variables From CSV File
返回目錄apache

3)定時器
通常用來設置延遲與同步。優先級高於取樣器(提取器)後端

在默認狀況下,jmeter發送每一個請求之間是沒有延時的,若是採用默認的方式,若是線程數足夠大,瞬間就會將服務器壓死。再則,實際的業務中,請求之間是有必定時間的停頓的。api

因此在請求之間設置合理的延時是必須的,也是更接近用戶真實業務狀況。在jmeter中,定時器組件提供了系列不一樣類型的延時控制。合理使用定時器組件,可讓性能測試更接近真實,更能挖掘出系統的瓶頸和評估系統的性能指標。瀏覽器

定時器的做用域:緩存

定時器是在每一個請求以前執行的,不管定時器位置是在提取器前面仍是後面
在執行一個請求以前,全部當前做用域內的定時器都會被執行
若是隻是但願定時器僅僅應用於其中一個提取器,則把定時器做爲子節點加入
序號 名稱 含義
原生定時器有:
1) Constant Throughput Timer 常數吞吐量定時器,控制每分鐘請求數量。參考案例
2) Synchronizing Timer 同步定時器,併發數設置用它。參考案例
控制延遲的組件:
3) BeanShell Timer BeanShell定時器可用於生成延遲
4) JSR223 Timer 可以使用JSR223腳本語言生成延遲
控制時停的組件:參考案例
5) Constant Timer 固定定時器,用於添加相同固定的延遲
6) Uniform Random Timer 統一隨機定時器,模擬不一樣的延遲長度。這有助於在網頁上模擬現實的用戶行爲。
7) Poisson Random Timer 泊松隨機定時器,該定時器暫停每一個線程請求一段隨機時間,大部分時間間隔發生在特定值附近。總延遲是泊松分佈值和偏移值之和。
8) Caussian Random Timer 高斯隨機定時器,可讓每一個線程在請求之間暫停一段隨機時間。總延遲是高斯分佈值加偏移值之和。
可安裝插件新增:安裝參考
9) jp@gc - Throughput Shaping Timer
5.1版本新增的組件
10) Precise Throughput Timer(準確的吞吐量定時器)
返回目錄安全

4)前置處理器
處理一些請求前的準備工做,好比參數設置,環境變量設置等。前置處理器用於修飾其範圍內的取樣器。

序號 名稱 含義
原生前置處理器有:
1) 用戶參數 容許用戶指定特定於各個線程的用戶變量的值。
2) JDBC PreProcessor JDBC預處理程序,使您能夠在樣本運行以前運行一些SQL語句。參考案例
3) RegEx User Parameters 正則表達式用戶參數,容許使用正則表達式從一個HTTP請求中提取指定動態值並傳遞到另外一個HTTP參數。
4) Sample Timeout 取樣器超時,若是完成時間過長,此前置處理器會調度計時器任務以中斷樣本。
5) HTML 連接解析器 此修飾器解析來自服務器的HTML響應並提取連接和表單
6) HTTP URL 重寫修飾符 此修飾器與HTML連接分析器的工做方式相似,不一樣之處在於它具備比HTML連接分析器更易於使用的特定目的,而且效率更高。
須要運行代碼的組件:
7) BeanShell PreProcessor BeanShell預處理程序,容許在採樣以前應用任意代碼。
8) JSR223 PreProcessor JSR223預處理程序,容許在採樣以前應用JSR223腳本代碼。
可安裝插件新增:安裝參考
9) jp@gc - Inter-Thread Communication PreProcessor 做用是跨線程組傳遞數據,相似函數_setProperty 和 _property,須要配合後置處理器jp@gc - Inter-Thread Communication PostProcessor來使用。參考案例
10) jp@gc - Raw Data Source PreProcessor 原始數據源預處理器,參考案例
返回目錄

5)取樣器
模擬用戶在客戶端發起的請求

取樣器執行JMeter實際的工做。每一個取樣器( 測試活動 除外)生成一個或多個樣本結果。樣本結果具備各類屬性(成功/失敗,通過時間,數據大小等),而且能夠在各類監聽器中查看。

序號 名稱 含義
原生取樣器有:
1) HTTP Request 參考案例
2) JDBC Request 此取樣器容許您將JDBC請求(SQL查詢)發送到數據庫。參考案例
3) JUnit Request 當前實現支持標準JUnit約定和擴展。
4) FTP請求 從ftp上下載文件,和上傳文件到ftp中。參考案例
5) Java請求 java請求和jp@gc - Dummy Sampler(虛擬取樣器)做用差很少,能夠用來模擬一個接口的請求和返回。參考案例
6) Debug Sampler 調試取樣器,就是用來查看咱們後置處理器提取的數據是否正確。參考案例
7) AJP/1.3 Sampler
8) Access Log Sampler 訪問日誌採樣器,AccessLogSampler旨在讀取訪問日誌並生成http請求。
JMS系列組件:
9) JMS Point-to-Point JMS 點到點,此取樣器經過點到點鏈接(隊列)發送並可選地接收JMS消息。與發佈/訂閱消息不一樣,它一般用於處理事務。
10) JMS Publisher JMS 發佈,JMS發佈將消息發佈到給定目標(主題/隊列)。
11) JMS Subscriber JMS 訂閱,JMS訂閱將訂閱給定目標(主題或隊列)中的消息。
LDAP系列組件:
12) LDAP Extended Request LDAP擴展請求,此取樣器能夠將全部8個不一樣的LDAP請求發送到LDAP服務器。它是LDAP取樣器的擴展版本,所以配置起來比較困難,但能夠更接近真實的LDAP會話。
13) LDAP請求 此取樣器容許向LDAP服務器發送不一樣的LDAP請求(添加,修改,刪除和搜索)。
須要代碼的組件:
14) JSR223 Sampler 使用JSR223腳本代碼來執行一個樣本或建立/更新變量所需的一些計算。
15) BeanShell Sampler 使用BeanShell腳本語言編寫取樣器。
不經常使用:
16) SOAP/XML - RPC Request
17) OS Process Sampler OS進程取樣器,OS進程取樣器是一個可用於在本地計算機上執行命令的取樣器。
18) Test Action 測試活動,測試活動取樣器是一個適用於條件控制器的取樣器。測試元件不是生成樣本,而是暫停或中止所選目標。參考案例
19) SMTP Sampler SMTP取樣器可使用SMTP/SMTPS協議發送郵件。能夠爲鏈接(SSL和TLS)以及用戶身份認證設置安全協議。若是使用安全協議,則將對服務器證書進行驗證。
20) TCP取樣器 TCP取樣器打開與指定服務器的TCP/IP鏈接。而後發送文本,並等待響應。
21) Mail Reader Sampler 郵件閱讀者取樣器,可使用POP3(S)或IMAP(S)協議讀取(可選刪除)郵件消息。
可安裝插件新增:安裝參考
22) jp@gc - Dummy Sampler 虛擬取樣器,參考案例
23) jp@gc - HTTP Raw Request HTTP原始請求,
24) jp@gc - UDP Request
返回目錄

6)後置處理器
請求是用來模擬用戶請求,有時候服務器的響應數據在後續請求中須要用到,咱們勢必要對這些響應數據進行處理,後置處理器就是用來完成這項工做的。

序號 名稱 含義
原生後置處理器有:
1) 正則表達式提取器 將響應數據進一步提取供後面使用。提取文本內容參考案例
2) XPath Extractor 該測試元素容許用戶使用XPath查詢語言從結構化響應-XML或(X)HTML中提取值。提取頁面元素屬性值
3) JSON Extractor 可使用JSON-PATH語法從JSON響應中提取數據。該後處理器與正則表達式提取器很是類似。參考案例
4) JDBC PostProcessor JDBC後置處理程序使您能夠在樣本運行後當即運行一些SQL語句。若是JDBC樣本更改了某些數據,而且您但願將狀態重置爲JDBC樣本運行以前的狀態,那麼這將很是有用。參考案例
5) Debug PostProcessor 調試後置處理程序,做用和調試取樣器同樣。參考案例
6) CSS/JQuery Extractor 容許用戶使用CSS選擇器語法從服務器HTML響應中提取值。參考案例
7) Result Status Action Handler 結果狀態處理器,此測試元件容許用戶在相關取樣器發生故障後中止線程或整個測試。
須要代碼的組件:
8) BeanShell PostProcessor
9) JSR223 PostProcessor
可安裝插件新增:安裝參考
10) jp@gc - Inter-Thread Communication PostProcessor 做用是跨線程組傳遞數據,相似函數_setProperty 和 _property,須要配合前置處理器jp@gc - Inter-Thread Communication PreProcessor來使用。參考案例
11) jp@gc - XML Format Post Processor
返回目錄

7)邏輯控制器
控制器用於在線程組內經過Sampler(提取器)實現各類測試邏輯,能夠定義提取器執行的條件

序號 名稱 含義
原生邏輯控制器有:
控制如何循環執行的:
1) Loop Controller 循環控制器,控制在其下面的子元素循環執行。參考案例
2) ForEach Controller 遍歷一組相關變量的值。參考案例
3) While Controller 循環執行其下面的測試元件,直到寫入的條件爲False。 參考案例
4) Alternate controller 交替控制器,交替執行其下面的測試元件。參考案例
5) Random Controller 隨機控制器,每次循環隨機執行一個。參考案例
6) Random Order Controller 隨機順序控制器,其下面的測試元件所有執行,可是順序是隨機的
控制執行條件的:
7) 若是(if)控制器 If控制器容許用戶控制其下方的測試元件(其子元件)是否運行。
8) Switch Controller Switch控制器的做用相似於交替控制器,它在每次迭代時運行一個子元件,但控制器運行順序不是按排列順序,而是按switch value定義。
9) Throughput Controller 吞吐量控制器,控制該控制器下采集器執行的頻率。參考案例
10) Runtime Controller 運行時長控制器,控制其下面的測試元件運行執行的時間
11) Once Only Controller 僅一次控制器,控制在其下面的測試原件僅執行一次(若是它的父級是循環控制器的話,每一次循環都會執行一次)
12) Critical Section Controller 臨界部分控制器,確保這個控制器下的測試元素在一個線程中執行
功能性:參考案例
13) Simple Controller 簡單控制器,使用率最高的控制器之一,沒有特殊做用,就是單純的爲提取器和其餘邏輯控制器作區分
14) Transaction Controller 事務控制器,生成一個額外的採集器,用於測量嵌套在其內的測試元素執行的總時間
15) Module Controller 模塊控制器,執行到該模塊控制器時,會執行該控制器指定的目標控制器
16) Include Controller 包含控制器,加載一個外部的JMX文件,配合測試片斷元件使用
17) Recording Controller 錄製控制器 ,是一個存放位置,在使用HTTP代理服務器的時候,全部錄製的採樣都被保存在錄製控制器下
可安裝插件新增:安裝參考
18) bzm - Weighted Switch Controller 加權開關控制器,按照設置的權重比來執行該子元素。 參考案例
19) jp@gc - Parameterized Controller 參數化控制器,若是須要使用不一樣的參數執行相同動做的重複序列,則可使用「參數化控制器」插件 參考案例
返回目錄

8)斷言
斷言就是讓程序代替人工,去判斷程序響應數據是否達到預期結果
程序更安全,高效,功能強大
序號 名稱 含義
原生斷言)
1) 響應斷言 對服務器的響應內容進行斷言。參考案例
2) Compare Assertion 比較斷言,
3) MD5Hex斷言 針對參數類型爲MD5Hex加密的參數的斷言
4) Size Assertion 對響應內容的大小進行斷言
5) SMIME Assertion
8) XML Schema Assertion
9) XML斷言
10) XPath Assertion
12) 斷言持續時間 斷言響應時間的。
10) HTML Assertion
11) JSR223 Assertion
12) BeanShell 斷言
返回目錄

9)監聽器
序號 名稱 含義
可安裝插件新增:安裝參考
基本數據展現:參考案例
1) 察看結果樹 顯示所有請求的響應和請求數據,不管成功或是失敗。壓力測試不要用。
2) 用表格察看結果 表格式的察看結果樹,爲每一個樣本建立一行,使用大量內存。用於快速估計被測系統的行爲。 壓力測試不要用
3) 斷言結果 幫助咱們顯示斷言的結果,不顯示經過的斷言。壓力測試不要用。
4) Comparison Assertion Visualizer 比較斷言可視化器 ,
5) Backend Listener 後端監聽器,後端偵聽器是一個異步偵聽器。
6) jp@gc - Console Status Logger 外部插件,控制檯狀態記錄器
7) jp@gc - Page Data Extractor 外部插件,頁面數據提取程序
8) jp@gc - Transaction Throughput vs Threads 外部插件,吞吐量和線程關係圖
聚合數據展現:參考案例
9) 聚合報告 聚合報告爲測試中的每一個不一樣命名的請求建立一個錶行。展現請求響應時間,吞吐量等數據結果。
10) Summary Report 彙總報告,這是爲測試中的每一個不一樣名字的請求建立一個錶行。和聚合報告相似,只是它使用更少的內存。
11) Aggregate Graph 彙總圖,彙總圖與聚合報告相似。主要區別在於彙總圖提供了一種生成條形圖並將圖形保存爲PNG文件的簡便方法。
12) 圖形結果 圖形結果監聽器生成一個簡單的圖形,用於繪製全部取樣時間。壓力測試不要用。
13) Generate summary results 生成概要結果,該組件可讓結果在CMD(Windows 系統下)窗口顯示。
14) jp@gc - Graphs Generator 外部插件,圖形生成器,生成多種指標數據圖,爲當前測試結果生成CSV / PNG。
15) jp@gc - Synthesis Report (filtered) 外部插件,可過濾的聚合報告,綜合報告是摘要報告和彙總報告之間的混合。
文件寫出:參考案例
16) Simple Data Writer 簡單數據寫入器,沒有圖形化顯示結果,更加高效的執行保存測試結果。
17) 保存響應到文件 用來存儲服務器響應數據。
18) jp@gc - Flexible File Writer 外部插件,靈活的文件編寫器,更靈活的簡單數據錄入。
代碼自定義和系統管理:
19) JSR223 Listener
20) BeanShell Listener
21) jp@gc - PerfMon Metrics Collector 外部插件,接收的CPU使用率,存儲器消耗,磁盤和網絡利用率度量,並提供報告。
22) jp@gc - AutoStop Listener 外部插件,自動中止監聽,配置爲若是響應時間超過某個值或錯誤百分比率高於定義的限制,則測試將中止執行。參考案例
23) jp@gc - Composite Graph 外部插件,組合式監聽,合併來自腳本中配置的其餘偵聽器的全部信息。 參考案例
24) 郵件觀察儀 設置在必定狀況給不一樣人員發送郵件通知。參考案例
跟隨測試時間的指標監控:參考案例
25) jp@gc - Active Threads Over Time 外部插件,測試時間和活動線程關係圖
26) jp@gc - Connect Times Over Time 外部插件,測試時間和鏈接時間關係圖
27) jp@gc - Bytes Throughput Over Time 外部插件,測試時間和字節吞吐量關係圖
28) jp@gc - Hits per Second 外部插件,測試時間和點擊量關係圖
29) jp@gc - Response Codes per Second 外部插件,測試時間和響應代碼關係圖
30) jp@gc - Response Latencies Over Time 外部插件,測試時間和響應延遲關係圖
31) jp@gc - Transactions per Second 外部插件,測試時間和事務數關係圖
32) jp@gc - JMXMon Samples Collector 外部插件,測試時間和JMX性能指標關係圖
33) jp@gc - DbMon Samples Collector 外部插件,測試時間和SQL讀寫性能的關係圖
跟隨響應時間的指標監控:參考案例
34) Response Time Graph 響應時間圖,以圖形的形式顯示取樣器的響應時間結果,單位是毫秒。
35) jp@gc - Response Times Over Time 外部插件,響應時間和測試時間關係圖
36) jp@gc - Response Times Distribution 外部插件,響應時間柱狀分佈圖
37) jp@gc - Response Times Percentiles 外部插件,響應時間百分比
38) jp@gc - Response Times vs Threads 外部插件,響應時間和活動線程數關係圖
返回目錄

10)函數
Jmeter 中使用函數,打開內置函數功能模塊
選擇要調用的函數,傳參數,生成調用格式
哪裏須要粘哪裏
是程序中的封裝單元(最小的),封裝一些功能實現 易讀,易維護 實現功能複用
啓動方式:

菜單(選項)–>函數助手對話框
Ctrl+Shift+F1
工具欄倒數第二個 圖標"記事本"

函數的格式:.

${__functionName(var1,var2,var3)}

1) ${} 函數引用固定格式和參數化相同
2) __functionName匹配被調用的函數名稱;
3) 用圓括號包含函數的形參,例如${__time(YMD)},不一樣函數要求的參數也不一樣;
4) 有些JMeter函數不要求參數,則能夠不使用圓括號,例如${__threadNum};
1
2
3
4
5
6
內容 **Jmeter中的函數列表按照字母的順序展現依次爲:**
字母 函數 含義
B base64Decode
base64Encode
BeanShell
C changeCase
char
chooseRandom
counter
CSVRead
D dateTimeConvert
digest
doubleSum
E env
escapeHtml
escapeOroRegexpChars
escapeXml
eval
evalVar
F fifoGet
fifoPop
fifoPut
fifoSize
FileToString
G groovy
I if
intSum
isDefined
isPropDefined
isVarDefined
iterationNum
J javaScript
jexl2
jexl3
L log
logn
longSum
lowercase
M machineIP
machineName
MD5
P P
property
R Random
RandomDate
RandomFromMultipleVars
RandomString
regexFunction
S samplerName
setProperty
split
StringFromFile
strLen
strReplace
substring
T TestPlanName
threadGroupName
threadNum
time
timeShift
U unescape
unescapeHtml
uppercase
urldecode
urlencode
UUID
V V
X XPath
返回目錄

學習地址:

Jmeter官方文檔:http://jmeter.apache.org/usermanual/component_reference.html#ForEach_Controller
Jmeter外部插件集:
https://www.cnblogs.com/baihuitestsoftware/articles/7798032.html
全棧測試筆記:
https://www.cnblogs.com/UncleYong/p/10779268.html#_label6
blazemeter:
https://www.blazemeter.com/jmeter/
蟲師:
https://www.cnblogs.com/fnng/
飛天小子:
https://www.cnblogs.com/Zfc-Cjk/category/1164772.html
老張:
https://www.cnblogs.com/imyalost/category/846346.html
喬治Maksimenko博客:
https://www.blazemeter.com/blog/how-to-use-the-arrivals-thread-group-and-the-free-form-arrivals-thread-group/
Noga Cohen博客:
https://www.blazemeter.com/blog/performance-testing-vs-load-testing-vs-stress-testing/
書籍:

《全棧性能測試修煉寶典JMeter實戰》

————————————————版權聲明:本文爲CSDN博主「paidaxing_dashu」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。原文連接:https://blog.csdn.net/paidaxing_dashu/java/article/details/102677738

相關文章
相關標籤/搜索