1.Jmeter三個重要組件
1.1線程組的介紹:?
特點:
- 模擬用戶,支持多用戶操作
- 多個線程組可以串行執行,也可以并行執行
線程組的分類:
- setup線程組:前置處理,初始化
- 普通線程組:編寫腳本
- teardown線程組:后置處理,環境恢復等
線程組的屬性:?
參數介紹:
1.2HTTP請求:
參數介紹:
作用:向服務器發送http及https請求
參數:
1.3查看結果樹:
案例1: 查看結果樹中的HTTP請求中,有多個子的HTTP請求
2.Jmeter參數化
2.1本質:
使用參數的方式來替代腳本中的固定的測試數據
2.2實現方式:
- 定義變量(最基礎)
- 文件定義的方式(所有測試數據都是固定的情況下)
- 數據庫的方式(靈活,業務測試常用)
- 函數的方式(靈活,業務測試常用)
2.3用戶定義的變量
2.4用戶參數:
2.5CSV數據文件設置:
2.6函數:
3.Jmeter斷言:
3.1定義:
檢查實際的返回結果是否與預期結果保持一致
自動校驗機制:自動判斷響應狀態碼(2xx:成功,4xx/5xx:失敗)
3.2分類:
- 響應斷言:對任意格式的響應數據進行斷言
- json斷言:對json格式的響應數據進行斷言
- 持續時間斷言:對響應時間進行斷言
3.3響應斷言:
參數:
3.4JSON斷言
參數:
3.5斷言持續時間:
4.Jmeter關聯:
4.1定義:
請求之間有依賴關系,一個請求的響應數據作為另一個的請求參數來傳遞
4.2分類:
- 正則表達式提取器:提取任意格式的響應數據
- Xpath提取器:提取HTML格式的響應數據
- JSON提取器: 提取JSON格式的響應數據
4.3正則表達式介紹:
正則表達式:就是一個公式,或者說一套規則,使用這套規則可以從任意字符串中提取出想要的數據內容
結論:
通過一個正則表達式可以提取出多組數據,每組數據設置對應的左邊界和右邊界即可
每一組數據都可以有一個或者多個值
正則表達式提取器:
4.4xpath提取器
參數:
4.5json提取器:
參數:
JMeter屬性:
5.自動錄制腳本
原理:
5.1jmeter腳本錄制步驟:
1.添加HTTP代理服務器,并進行配置
?加HTTP代理服務器:測試計劃(右鍵)->非測試元件->HTTP代理服務器
?配置代理服務器的參數
2.開啟windows操作系統的瀏覽器代理
3. 啟動代理服務器,開始錄制
4. 在瀏覽器頁面中進行操作,成功后,就能在JMeter當中看到抓取到的接口請求了。
5.2當使用代理的過程中,發現抓不到包,幾個可能的情況:
- 過濾規則設置有問題
- 重啟Jmeter代理服務器或者重啟Jmeter
- 換瀏覽器來使用(Chrome、IE)
- 檢查PC機中的代理設置是否處于可用狀態
- 拔掉網線,抓包
6.邏輯控制器:
6.1如果(if)控制器:
6.2循環控制器:
6.3ForEach控制器:
7.定時器:
7.1同步定時器:
7.1.1使用同步定時器的操作步驟?
1.添加線程組,設置線程數為n
2.添加HTTP請求
3.添加同步定時器
?設置并發線程數:同時發送請求的虛擬用戶數
?設置超時時間:
?建議設置:不設置的話,若沒有達到設置的線程數會一直死等
?不能設置太小:等待時間后還沒達到設置的線程數,會釋放已到達的線程
4.添加查看結果樹
5.添加監聽器-聚合報告
7.2常數吞吐量定時器:
案例:
(1)一個用戶以?20QPS (20 次/s) 的頻率訪問百度首頁,持續一段時間,統計運行情況
案例:1、模擬100個用戶同時訪問百度首頁,統計各種高并發情況下運行情況(2)2個用戶針對 (服務器的QPS要求:20QPS (20 次/s)) 的頻率訪問百度首頁,持續一段時間,統 計運行情況
7.3固定定時器:
案例:
(1)IHRM系統登錄錯誤3次后,鎖定1分鐘,等待1分鐘后重新輸入正確的用戶名密碼登錄成功
請求方法:POST
請求URL:http://ihrm-test.itheima.net/api/sys/login
請求頭:Content-Type: application/json;charset=UTF-8
請求體:{"mobile":"13800000002","password":"123456"}
步驟:
添加線程組
添加HTTP請求1 - 錯誤1次
添加HTTP請求2 - 錯誤2次
添加HTTP請求3 - 錯誤3次
添加HTTP請求4 - 正確用戶名密碼
在HTTP請求4下,添加固定定時器
添加查看結果樹
8.jmeter分布式:
8.1應用場景:
當單個測試機無法模擬用戶要求的業務場景時,可以使用多臺測試機進行模擬,就是Jmeter的分布式測試 .
8.2原理:
8.3分布式相關注意事項:
- 關閉防火墻
- 所有的控制機、代理機、服務器都在同一個網絡上
- 所有機器的Jmeter和JAVA版本必須一致
- 關閉RMI SSL開關
8.4分布式配置與運行:
9.jmeter報告:
9.1聚合報告:
補充:
正常情況下,響應時間的結果取平均值
當響應時間最大值特別高(超出平均水平特別多),導致平均值不能代表正常/大部分水平時,可以使用百分比時間
9.2HMTL報告:
10.并發數計算:
10.1普通方法:?
并發tps = 總請求數/總時間
只能滿足最基本的要求,但是不能很好覆蓋系統正常的使用情況
10.2二八原則:
并發tps = 總請求數?* 80% / 總時間?* 20%
滿足系統絕大多數情況下的應用場景的需要
根據業務運營數據的統計計算(通常用來做穩定性測試)
并發TPS = 有效請求數?* 80% / 有效時間?* 20%
當運營數據統計越精確時,計算出的并發TPS與實際的越接近
根據用戶峰值業務操作來計算(通常用來做壓力測試)
并發TPS = 峰值請求數?/ 峰值時間?* 系數
滿足峰值請求時間段內的負載量,系數取決于項目組對于未來業務量的評估