Jmeter接口測試
- Jmeter設置成中文
- 實操練習-跨線程組提取參數,使用值
- HTTP請求默認值&HTTP信息頭管理器
相信打算從事測試工程師的同學們,肯定對Jmeter是耳熟能詳的。使用Jmeter可以進行接口測試、性能測試、壓力測試等等;這個章節介紹如何使用Jmeter針對【登錄查詢圖紙組】的相關接口測試。
Jmeter設置成中文
Jmeter語言設置如下,可設置為中文簡體
Jmeter首頁:打開Jmeter首頁默認為下方所示,左側默認一個“測試計劃”,點擊測試計劃,右側顯示如下,一定要勾選上“獨立運行每個線程組(例如在一個組運行結束后啟動下一個)”,不然,比如在登錄場景,后面的接口需要獲取到登錄的令牌token進行驗證,點擊執行可能會出現一些難以發現的錯誤,而這些錯誤其實就是因為執行的順序出現了錯誤,導致有些參數獲取不到。
實操練習-跨線程組提取參數,使用值
1. 創建一個線程組: 鼠標右擊測試計劃,選擇添加,選擇線程,選擇線程組
HTTP請求默認值&HTTP信息頭管理器
當我們在jmeter上創建多個http的請求時,每個請求都需要重新的在請求里添加協議,端口號和路徑等,會重復操作很多次,因此使用jmeter上的http請求默認值可以解決這個麻煩。所有在該請求默認值層級下的HTTP請求都會默認帶上這個請求值,于是我們只需要選擇每個HTTP的請求方法和路徑即可。
2. 創建一個HTTP請求默認值: 表示當前層級下所有HTTP請求都會默認帶上這個請求默認值;
操作步驟: 右擊測試計劃、選擇添加、選擇配置元件、選擇HTTP請求默認值。
Jmeter的作用域: 在測試計劃層級下創建一個HTTP請求默認值,表示測試計劃層級下的所有HTTP請求都會帶上這個默認值,如果該層級下某個HTTP請求填寫了協議、域名,那么不會去拿請求默認值里的協議、域名,以自己填寫的值為準。類似于全局變量和局部變量的作用域。
-
字段解釋:以這類接口為例
https://www.ceshi.com:8080/auth/password
- 協議:即當前接口遵守的是HTTP協議 還是 HTPPS協議,此處填寫
https
- 服務器名稱或IP:填寫當前接口的前綴域名,那么此處就填寫
www.ceshi.com
- 端口號:沒有就不填寫,此處可填寫
8080
- 路徑:可不填寫
- 內容編碼:可填寫
utf8
- 協議:即當前接口遵守的是HTTP協議 還是 HTPPS協議,此處填寫
創建一個HTTP信息頭管理器: 如果不創建信息頭管理器,那么后續的HTTP請求可能就會報錯,原因就是HTTP請求里的請求頭錯誤。此操作也是有作用域,Jmeter的每個操作都存在作用域。筆者是在測試計劃下創建的信息頭管理器,那么意味著所有的HTTP請求都會帶上這個請求頭內容。
3. 添加一個HTTP請求: 鼠標右擊線程組、選擇取樣器、選擇HTTP請求
4. 添加接口路徑 :由于在HTTP請求默認值里填寫了協議類型和IP,所有后面的HTTP請求我們只能填寫請求方法類型和路徑;這里的參數是JSON格式的,于是可以選擇 “消息體數據”。
$ {username}、$ {password}:是Jmeter的固定語法,用于獲取自定義參數、獲取從其他接口里提取到的參數;不會Jmeter語法的同學可以搜索自學一下哦~
5. 創建一個自定義參數: 右擊HTTP請求,選擇添加,選擇配置元件,選擇用戶定義的變量。
名稱(變量):即上一步操作寫的$ {username} 里的username
值(變量取值):就是username里存放的值。
6. 添加一個查看結果樹:可以查看每個HTTP請求的返回內容,根據返回的內容,在下一步里的JSON提取器里填寫JSON Path expressions,前提是返回的內容必須是JSON格式的。當然如果不是JSON格式,那么需要使用其他的提取器。
- 右擊測試計劃,創建一個“查看結果樹”,那么所有線程組里的HTTP請求返回的響應都可以在這個結果樹里查看。
- 點擊運行,查看結果樹內容
- 測試是否可以提取到值:JsonPath解析器可以參考下這個網站
6.1 添加一個JSON提取器: 方便后面的查詢操作,有權限訪問查詢接口。右擊HTTP請求,選擇添加,選擇后置處理器嗎,選擇JSON提取器。
- 填寫提取器里的內容:Names of created variables=
token
,JSON Path expressions=$.data
,Match No. (0 for Random)=1
,Defaylt Values=null
;關于不會這個Json語法表達式的同學,可以去度娘搜索一下,學習一下~
- Names of created variables: 自定義一個變量名,把提取到的值存放在這個變量里。可以多個,用分號
;
進行分隔。 - JSON Path expressions: 使用JSON語法的表達式,提取值。可以填寫多個,要求與變量名數量一致,用分號
;
進行分隔。 - Match No. (0 for Random): 表示提取幾個值。
- 此處取值有:0代表隨機、-1代表所有,1則代表取值第1個,2則代表取值第2個,以此類推。
- Compute conxatenation var (suffix_ALL): 該選項如果勾選,則將所有的值用逗號拼接,并保存到一個變量中。注意只有Match NO為
-1
時該功能打鉤才有效果。 - Defaylt Values: 當提取不到值時,返回一個默認值,用戶自定義,可以多個,注意當變量名為多個時,默認值也要求多個。
Apply to:作用范圍(返回內容的取值范圍)
-
Main sample and sub-samples:作用于父節點的取樣器及對應子節點的取樣器。
-
Main sample only:僅作用于父節點的取樣器。(選默認的 main sample only 就行了)
-
Sub-samples only:僅作用于子節點的取樣器。
-
JMeter Variable Name to use:作用于JMeter變量(輸入框內可輸入JMeter的變量名稱),從指定變量中提取需要的值。
-
和JSON提取器配套使用的操作有:調試取樣器。右擊當前的線程組,選擇添加,選擇取樣器,選擇Debug Sampler,可以在結果樹里查看這個調試取樣器的結果,方便查看JSON提取器提取到的值是否正確
- 添加一個BeanShell 后置處理程序,用于跨線程組獲取參數值
- 生成一個函數
- 把函數字符串復制到BeanShell 后置處理程序里
- 設置一個斷言:在對應的HTTP請求下,右擊,選擇添加, 選擇斷言,選擇響應斷言,添加測試模式(可以填寫這個HTTP請求響應里的內容,一般填寫code:200和msg:成功)
- 重復前面的創建線程組的步驟,在該線程組下創建一個HTTP請求用來操作查詢圖紙
10.在HTTP請求下,創建一個HTTP信息頭管理器:右擊HTTP請求,選擇添加,選擇配置元件,選擇HTTP信息頭管理器
- 點擊函數助手,選擇
property
,此處的Name of Property填寫BeanShell 后置處理程序的Name of Property,點擊生成,最后把函數字符串復制下來。
- 在剛才第10步創建的HTTP信息頭管理器里新增一條信息:
- 最后點擊運行,查看結果樹,發現可以提取參數值,跨線程組使用這個值