Jmeter功能概要
JDK常用文件目錄介紹
Bin目錄:存放可執行文件和配置文件
Docs目錄:是Jmeter的API文檔,用于開發擴展組件
printable_docs目錄:用戶幫助手冊
lib目錄:存放JMeter依賴的jar包和用戶擴展所依賴的Jar包
修改默認配置——Jmeter界面的漢化
臨時性:
啟動Jmeter->選擇菜單“option"->Choose language->Chinese(Simplified)
永久性——修改配置文件:
- 找到Jmeter安裝目錄下的bin目錄
- 打開jmeter.properties文件,把第37行修改為”language=zh_CN"
- 重啟Jmeter即可。
修改默認配置——修改主題
Jmeter默認主題是黑色的,可以通過以下步驟修改:
- 啟動Jmeter->選擇菜單“選項”->外觀->windows(選擇自己喜歡的主題即可)
Jmeter元件和組件的介紹
元件的基本介紹
元件:多個類似功能組件的容器(類似于類)
組件的基本介紹
組件:實現獨立的某個功能(類似于方法)
例如:取樣器的組件
Jmeter元件作用域和執行順序
元件的作用域
元件的作用域:是靠測試計劃的樹形結構中元件的父子關系來確定的。
提示:所有的組件都是以取樣器為核心來運行的。組件添加的位置不同,生效的取樣器也不同。
作用域的原則:
- 取樣器:核心,不和其他元件相互作用,沒有作用域
- 邏輯控制器:只對其子節點中的取樣器和邏輯控制器起作用。
- 其他元件:
- 如果是某個取樣器的子節點,則該元件只對其父節點起作用。
- 如果其父節點不是取樣器,則其作用域是該 元件父節點下的其他所有后代節點(包括子節點、子節點的子節點等。)
例:固定定時器3是HTTP請求3的子節點,則該元件只對HTTP請求3起作用
固定定時器1的父節點是線程組 ,其作用域是HTTP請求1 HTTP請求2 HTTP請求3
固定定時器2的父節點是如果(If)控制器,其作用域是HTTP請求2
元件的執行順序
同一個作用域下不同類型元件:
-
配置元件(config elements)
-
前置處理程序(Per-processors)
-
定時器(times)
-
取樣器(Sampler)
-
后置處理程序(Post-processors)
-
斷言(Assertions)
-
監聽器(Listeners)
同一個作用域下多個相同類型元件:
- 按照在測試計劃中從上到下的順序依次執行。
案例:執行順序
定時器1-HTTP請求1-定時器1-定時器2-HTTP請求2-定時器1-定時器3–HTTP請求3
Jmeter使用示例
Jmeter第一個案例
需求:使用Jmeter訪問百度首頁接口,并查看請求和響應信息
步驟:
- 啟動Jmeter
- 在“測試計劃”下添加“線程組”
- 在“線程組”下添加“HTTP請求“取樣器
- 填寫”HTTP請求”的相關請求數據
- 在”線程組“下添加”查看結果樹“監聽器
- 點擊”啟動“按鈕運行,并查看結果
線程組
作用:線程組就是控制JMeter用于執行測試的一組用戶
位置:右鍵點擊”測試計劃“->添加->線程(用戶)->線程組
特點:
- 模擬多人操作
- 線程組可以添加多個,多個線程組可以并行或串行
- 取樣器(請求)和邏輯控制器必須依賴線程組才能使用
- 線程組下可以添加其他元件下組件
線程組分類
-
線程組
普通的、常用的線程組,可以看做一個虛擬用戶組,線程組中的每一個線程都可以理解為一個虛擬用戶。
-
SetUp線程組
一種特殊類型的線程組,可用于執行預測試操作
- TearDown線程組
一種特殊類型的線程組,可用于執行測試后工作
線程組參數詳解:
練習:編寫JMeter腳本,訪問百度
要求:
- 模擬10個用戶并行執行;
- 模擬10個用戶5s內啟動完成;
- 模擬2個用戶各循環3次;
- 模擬2個用戶運行30s;
- 模擬2個用戶等待10s后開始執行。
案例分析:
使用1個線程組,添加HTTP請求(百度)
- 配置線程數為2,循環次數為3時,運行觀察結果
- 配置線程數為3,循環次數為2時,運行觀察結果,對比是否有不同
相同點:從請求數量來說,是完全相同的
不同點:場景不同
- 線程數:代表用戶數,即性能測試時的負載量(線程數為2比線程數為3對應的負載量小)
- 循環次數:代表時間,即性能測試時的運行時間(循環次數3比循環次數2對應的時間長)
HTTP請求
作用:向服務器發送http及https請求
位置:選擇線程組->右鍵->添加->取樣器->HTTP請求
參數:
案例一(使用HTTP請求路徑來傳遞get請求參數)
(1)使用1個線程組,添加HTTP請求(百度),路徑為/S
- 使用HTTP協議,GET請求方法,路徑中添加參數為:wd=test,運行觀察結果
案例二(使用參數列表來傳遞get請求的參數)
- 使用HTTPS協議,GET請求方法,路徑中添加參數為: wd = test,運行觀察結果
案例三(使用參數列表來傳遞POST請求的form格式參數)
- 使用HTTPS協議,POST請求方法,消息體數據中添加參數為: wd = test,運行觀察結果
案例四:
- 使用HTTP協議,POST請求方法,消息體數據中添加參數為: wd = test,運行觀察結果
查看結果樹
案例1:查看結果樹種的HTTP請求種,有多個子請求的HTTP請求
原因分析:
- 第一個HTTP請求中,URL錯誤,導致服務器產生了重定向,提供了新的URL路徑
- JMeter會自動發送第二個HTTP請求(使用第一個HTTP請求中返回的URL路徑)
- 點擊最外層HTTP請求時,顯示的內容與最后一個HTTP請求的請求和響應數據一致
案例2:HTTP響應數據中存在亂碼,需要修改取樣器結果的編碼格式