Jmeter基礎篇:配置元件詳解
-
- (一)測試計劃詳解
- (二)線程組詳解
- (三)取樣器詳解
- (四)前置處理器詳解
- (五)定時器詳解
- (六)後置處理器詳解
- (七)斷言器詳解
- (八)監聽器詳解
(一)測試計劃詳解
測試計劃
是Jmeter的根基,所有的測試内容都是基于測試計劃的,每次打開Jmeter都會預設帶有一個測試計劃。
1、使用者定義的變量
:用來定義全局的變量值,在測試計劃下任何地方都能引用該處定位的變量。考慮放在此處的變量特點:
(1)不會因為項目的環境的改變而改變的變量值,這樣能使得腳本能夠相容各個環境。比如項目的使用者名密碼等變量會因為環境不一樣而改變的就不建議放在此處定義,如果放在了此處,就會出現每次在不同環境執行腳本都要翻閱項目資料修改使用者名密碼等繁瑣的操作
(2)注意點:由于直接在測試計劃面闆的【使用者定義的變量】與在測試計劃下建立【配置元件】->【使用者定義的變量】完全等價,本人建議存放在此處的變量可以使用【配置元件】->【使用者定義的變量】來替代,通過一次性建立好項目所有環境的變量資訊,後面執行腳本的時候隻需要控制各個環境的【使用者定義的變量】的“禁用”與“啟用”即可。例子:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL0IGZ1QDZxYWN0EjYhRzYhljN2QDO1Q2M2EGOhNTN1czLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
我們希望腳本在哪個環境下執行隻需要操作對應【使用者定義變量】的啟用與禁用即可。
2、獨立運作每個線程組:
(1)未勾選:有多個線程組時,其随機啟動執行,
(2)勾選後:多個線程組時,等待前一個線程組執行完成後才開始下一個線程組。注意點:隻影響同個優先級下的線程組的随機執行順序,不影響整體的順序,如:必定會先執行setUp線程組、再執行普通線程組、再執行tearDown線程組。
例子1:未勾選【獨立運作每個線程組】時:
執行的時候,每次都會随機執行某個線程組下的請求,執行結果:
(二)線程組詳解
一:在取樣器錯誤後要執行的動作:
1、繼續:該線程組下如果某個取樣器執行失敗,不會影響該線程組下的其他取樣器的執行。
例子1:
執行結果:第二個請求發生錯誤後,不會影響線程組下面的請求繼續執行,如圖:
(三)取樣器詳解
一:Http請求
介紹下Http請求元件的各項資訊
1、協定:可以省略不填,省略預設是http協定,端口号預設80,如果協定填的的https,則端口号預設是443
2、自動重定向:當發送HTTP請求後得到的響應是3XX狀态碼時,JMeter會自動重定向到新的頁面,但不記錄重定向的過程内容
3、跟随重定向:當響應是3XX狀态碼時,會記錄重定向過程中的所有請求響應資訊,在檢視結果樹中可以看到重定向過程中的所有請求,一般我們需要擷取所有請求給與我們一些判斷依據,是以此項一般都需要勾選。
4、keepalive:一種長連接配接通信方式,即發出多次請求時,不會頻繁的建立連接配接和斷開連接配接,勾選後,會在請求頭帶有:Connection:keep-alive的資訊,通過此選項可以大大節約了3次握手協定所需的時間。
5、對post使用multipart/form-data:發送post請求時,使用multipart/from-data或者
application/x-www-form-urlencoded
方法發送。
此取樣器一般保持預設使用即可。
(四)前置處理器詳解
一、使用者參數
【使用者參數】與前面介紹過的【使用者定義的變量】有相似之處,先來介紹下使用者參數的使用方法再去區分兩者的異同。
1、注意作用域的問題,(1)如果是放在測試計劃下,則整個測試計劃都可以引用該處定義的變量
(2)如果是放線上程組下,則隻能在所放的線程組下引用
(3)如果是在請求下,則隻能在具體請求下引用
2、使用者參數有名稱,使用者_N的定義,下面進行執行個體講解。
執行個體1:隻定義一個使用者,則在引用變量的時候,永遠都是這個使用者的值。如圖:
執行結果:
(五)定時器詳解
同步定時器
用于設定達到所設定的使用者量後在同一時刻發起請求,在進行壓測時候所用的定時器多數就是這個定時器
我上述例子模拟的是:達到100個使用者後,再一起發起請求,如果等到了5000毫秒即5秒後,還沒等到100個使用者,最長時間等到了多少使用者就用多少使用者同時發起請求
(六)後置處理器詳解
一:Json提取器
通過JsonPath文法提取取樣器資訊。
1、Jmeter的Json提取器頁面介紹:
(1):Apply to選項
(1.1)Main sample and sub-samples:應用于主樣本和子樣本
(1.2)Main sample only:僅應用于主樣本,一般選這個選項即可
(1.3)Sub-samples only:僅應用于子樣本
(1.4)Jmeter Variable Name to use:應用于Jmeter變量中,
(2)Names of created variables:給提取到的變量取名
(3)JSON Path expressions:JsonPath的表達式
(4)Match No:可以填寫數字(0,1,-1),0表示随機取一個資料,1表示取第一個資料,-1表示取全部資料,也可以不填,不填寫預設取第一個資料
(5)Default Values:未取到值的時候預設值
JsonPath的文法介紹:
(1)$:表示根節點元素
(2)@:表示目前所在位置節點元素
(3)*:表示通配所有元素
(4).:表示比對目前路徑的下級節點
(5)..:表示遞歸比對目前路徑的所有節點
(6)[index]:表示比對數組索引類型的節點
(7)?(表達式):對資料進行篩選
案例1:此處通過調用【聚合報告】的【新聞頭條】請求,擷取一個資料資訊
(1)在Jmeter中發起【新聞頭條清單】請求:
(2)發起請求後,得到了接口響應的JSON資訊:
(3)我們想要擷取提取響應資訊裡的“titile”資訊,那麼就可以使用JSON提取器。
(3.1)分析Json層級關系,位于"result"->“data”->"title"下
我們可以逐層取資料如:$.result.data[*].title
(七)斷言器詳解
一:響應斷言
該種斷言器一般放到具體的取樣器下,斷言具體的取樣器是否包含自己的預期内容。
1:測試字段
(1)響應文本:對響應的文本做斷言,此選項不包含響應頭資訊
(2)響應代碼:對響應的狀态碼斷言
(3)響應資訊:對響應的全部資訊做斷言,此選項包含響應所有資訊
(4)響應頭:對響應頭做斷言
(5)請求頭:對請求頭做斷言
(6)URL樣本:對取樣器URL做斷言
(7)文檔:對響應文檔内容斷言,至今未使用過
(8)忽略狀态:部落客也沒使用過,應該不怎麼使用,預設即可
(9)請求資料:對請求資料做斷言
2、模式比對規則
(1)包括:延段測試字段是否包含指定的文本或者字段值,支援正規表達式
(2)比對:斷言測試字段是否與期望值完全比對,一般需要結合正規表達式使用
(3)相等:斷言測試字段是否與期望值完全相等,此處不支援正規表達式
(4)字元串:斷言測試字段是否包含指定的字元串,不支援正規表達式
(5)否:不進行比對
(6)或者:部落客也沒使用過,預設即可
3、自定義失敗消息
對于斷言不通過的時候,可以輸出自定義的失敗消息
執行個體:
對百度發起請求,斷言響應資訊是否包含“百度”字元串,如果包含即斷言成功,不包含則斷言失敗,自定義失敗消息“該請求斷言不通過噢噢噢”
執行結果:
(八)監聽器詳解
一,聚合報告:
1、Label:請求的名稱,即取樣器名稱
2、樣本:總共發給伺服器的請求數量,如果模拟10個使用者,每個使用者疊代10次,那麼總的請求數為:10*10 =100次;
3、平均值:目前此腳本運作的取樣器的響應平均值
4、中位數: 目前腳本運作的取樣器的響應時間的中位數
5、90%:90%的請求的響應時間
6、95%Line:95%的請求的響應時間
7、99%Line:99%的請求的響應時間
8、最小值:最小的響應時間
9、最大值:最大的響應時間
10、異常%:錯誤率=錯誤的請求的數量/請求的總數
11、吞吐量: 每秒完成的事務數,即我們常聽說的TPS,一般越大證明系統性能越好,是性能測試裡的一個重要名額
12、接收KB/sec: 每秒從伺服器端接收到的資料量
13、發送KB/sec: 每秒向伺服器端發送的資料量