一,JMeter組件執行順序正則表達式
- 配置節點
- 前置處理器
- 定時器
- 取樣器
- 後置處理器(只在有結果可用狀況下執行)
- 斷言(只在有結果可用狀況下執行)
- 監聽器(只在有結果可用狀況下執行)
二,JMeter組件詳解數據庫
1,線程編程
- 線程數:虛擬用戶數
- Ramp-Up Period:生成全部虛擬用戶的時間。Ramp-Up Period 設置成0,那麼全部的用戶將會同時當即產生
- 循環數:要麼N次,要麼永遠
- 調度器:定時執行的設置方式,能夠設置在將來的某個時間開始執行也能夠設置多少秒後開始執行。在按下執行按鈕後,調度器才生效
2,取樣器服務器
取樣器(Samples)是Jmeter真正產生請求的組件。經常使用的取樣器是HTTP請求取樣器dom
- 編碼:在HTTP取樣器裏,在變量一行能夠勾選編碼。若是變量的值包含了非Ascii碼中的字符(好比漢字)或者包含Ascii碼中的特殊字符(好比空格問號之類),那麼就要勾選編碼。
3,控制器模塊化
- 邏輯控制器:用來控制取樣器的執行順序。除了僅一次控制器外,其餘控制器下能夠嵌套別的種類的邏輯控制器。
- 循環控制器:定義一個循環規則。
- 名稱:控制器名稱
- 註釋:隨意設置
- 輸入變量前綴:能夠在「用戶自定義變量」中定義一組變量,循環控制器能夠從中獲取到變量對應的值,而後做爲循環控制器的循環條件,還能夠輸出變量做爲取樣器的參數。
- Start index for loop:循環變量下標起點
- End index for loop:循環變量下標終點
- 輸出變量名稱:循環控制器生成的變量名稱
- Add 「_」 before number?:變量前綴後是否加"_"做爲分隔符
- 錄製控制器:腳本錄製時自動生成的請求都在這個控制器下面
- 事務控制器:假設提交一個工單須要3個步驟(step1,step2,step3),每一步都須要發送一個請求到服務器,爲了獲取3個請求的總時間,可使用事務控制器將這3個請求聚合,把3個請求做爲事務控制器的子組件。 因此事務控制器實際就是聚合邏輯上應該合併在一塊兒的N個請求的總響應時間。
4,函數函數
函數是一個編程的概念,相似於一個盒子,咱們輸入一些值後,這個盒子輸出一些值。oop
- Random函數:這個函數須要咱們輸入2個值,1個是隨機範圍的最小值,另1個是隨機範圍的最大值(如 ${_Random(1,3)}是隨機生成1~3之間的整數;key${_Random(1,3)}是隨機生成key1,key2,key3中的任意1個字符串)
5,配置元件測試
配置元件是用來存放配置信息的,Jmeter提供了豐富的配置元件來幫助咱們構建測試腳本。經常使用的配置元件有用戶自定義變量元件,HTTP請求默認值元件等。編碼
- CSV數據文件設置:這個組件能夠從指定的文件中一行一行地提取文本內容,根據分隔符拆解這一行內容並把內容與變量名對應上,而後這些變量就能夠供取樣器引用了。
- 名稱:隨意設置
- 註釋:隨意設置,能夠爲空
- 文件名:引用的參數文件地址
- 文件編碼:讀取參數文件用到的編碼格式,建議用UTF-8格式保存參數文件
- 變量名稱:定義的參數名稱,用逗號隔開,順序與參數文件中的參數對應
- 忽略首行:若參數文件首行是標題,則設置爲True,反之爲False
- 分隔符:用來分割參數文件的分隔符(默認爲逗號,也能夠用tab來分隔,若是參數文件用tab分隔,在此應該填寫「\t」)
- 是否容許帶引號:若是選True,
- 遇到文件結束符再次循環?:
- 遇到文件結束符中止線程?:
- 線程共享模式:
- HTTP信息頭管理器:這個組件的做用就是以Key-Value的格式設置http請求的header,通常來講咱們經過錄制的方式獲取http請求的header。另外每一個請求下面掛一個header信息配置器不利於咱們統一的控制線程組中的全部請求,咱們能夠只在線程組下面掛一個header管理器,這樣線程組下的全部http請求都具備一樣的header了。
- 隨機變量:這個組件的做用是生成字符+隨機數字格式的字符串,並保存在變量中,以便後續使用。(如01-selenium,selenium-01,se001lenium)若是同時有兩個HTTP請求,這兩個HTTP請求取得是同一個隨機變量。
6,監聽器
監聽器能夠理解爲測試報告
7,定時器
定時器的做用就是給用戶每一步操做以前加上「思考」時間,使模擬的用戶行爲更接近真實用戶的行爲。
- 固定定時器:這個組件的做用是暫停線程執行,將定時器放在兩個請求之間,思考一段固定的時間。
8,前置處理器
前置處理器用來作一些環境或者參數的準備工做,好比在對數據庫進行操做前須要先創建一個數據庫鏈接,那麼前置處理器就能夠完成這個功能。
9,後置處理器
後置處理器通常放在取樣器以後,能夠幫助咱們從服務器響應數據中查找到咱們須要的數據。
- 正則表達式提取器
- 名稱:隨意設置
- 註釋:隨意設置
- Apply to:應用範圍(四個選項)
- Main Sample and sub-samples:匹配範圍包括當前父取樣器並覆蓋子取樣器
- Main sample only:匹配範圍是當前父取樣器
- Sub-samples only:僅匹配子取樣器
- JMeter Variable:支持對JMeter變量值進行匹配
- 要檢查的響應字段:針對響應數據的不一樣部分進行匹配,共7個選項
- 主體:響應數據的主體部分,排除Header部分;Http協議返回請求的主體部分就是Body
- Body(unescaped):針對替換了轉義碼的Body部分
- Body as a Document:返回內容做爲一個文檔進行匹配
- 信息頭:只匹配信息頭部分的內容
- URL:只匹配URL連接
- 響應代碼:匹配響應代碼,好比HTTP協議返回碼200表明成功
- 響應信息:匹配響應信息,好比處理成功返回」成功「字樣,或者」OK「字樣
- 引用名稱:匹配出來的信息經過此名稱進行訪問,相似${引用名稱}進行訪問
- 正則表達式:正則表達式提取器使用此串進行信息匹配
- 模板:正則表達式能夠設置多個模板進行匹配,在此只可指定運用哪一個模板,模板自動編號。$1$指第一個模板,$2$指第二個模板,以此類推,$0$指全文匹配。
- 匹配數字:在匹配時每每會出現多個值匹配的狀況,若是匹配數爲0則表明隨機取匹配值;不一樣模板可能會匹配一組值,那麼能夠用匹配數字來肯定取這一組值中的哪個;負數取全部值,能夠與For Each Controller一塊兒使用來遍歷。
- 默認值:若是沒有匹配到能夠制定一個默認值。
10,斷言
斷言用來驗證結果是否正確,用一個預設的結果(值,表達式,時間長短等條件)與實際結果匹配,匹配到則成功,反之失敗。斷言元件有:
11,Test Fragment
Test Fragment是一個輔助的組件,在腳本開發過程當中能夠用來備份元件;Test Fragment下的元件能夠被模塊控制器調用,能夠利用它來模塊化請求(把一個業務封裝成一個方法供複用)供模塊控制器調用。