目錄
1、安裝并啟動jemeter
2、重點組件
2.1、線程組:
2.2、HTTP取樣器?編輯
2.3、查看結果樹
2.4、HTTP請求默認值
2.5、HTTP信息頭管理器
2.6、JSON提取器
2.7、JSON斷言
2.8、同步定時器
2.9、CSV數據文件設置
2.10、HTTP Cookie管理器
3、測試報告
4、性能分析
通過三大指標來分析性能問題:4.1、響應時間
4.2、錯誤率(可靠率)
4.3、吞吐量
1、安裝并啟動jemeter
法一:
法二:將文件路徑復制一下,配置環境變量,打開cmd,輸入jmeter就可以打開
2、重點組件
2.1、線程組:
添加一個線程組去管理所有的線程。
開發者工具:network表示監視網絡
點擊XHR篩選出一些后端的接口
線程數:虛擬用戶數/并發數
Ramp-Up:性能測試運行的時間,上面的線程數運行完的時間。
循環次數:如果線程數為10,循環次數為2,那么總共就發送了20次請求
如果選擇了永遠,就必須要配置調度器,否則性能測試就是一個死循環。
如果配置了調度器,配置了持續時間,就會在2s內不斷發送請求
2.2、HTTP取樣器
我們就可以在聚合報告中查看在兩秒內一個發送了多少次請求
2.3、查看結果樹
出現錯誤時:
我們應該重點關注Load time響應時間和Response code狀態碼
2.4、HTTP請求默認值
如果是在同一個web系統那么他的每個界面的協議、ip、端口號、內容編碼(utf-8)都是一樣的,因此我們就可以設置HTTP請求默認值,這樣就不用每次都填寫了。
2.5、HTTP信息頭管理器
列表頁要添加請求信息,否則就會報錯
添加HTTP管理頭,只作用在列表頁
這樣運行結果正確
下圖是開發者工具中列表頁的User_token_header? 需要添加這個名稱和值 到HTTP信息頭管理器才可以請求成功
因為我們是給了一個固定的值,它會過期,所以我們就必須要使用JSON提取器來解決問題
2.6、JSON提取器
接口響應成功,通過提取返回值對應字段,可用于其他接口的參數配置
我們可以用登錄頁的data值來配置別表頁
可以對表達式進行測試,看寫的對不對:在查看結果樹中,將響應數據的格式改為JSON Path Tester,在JSON Path Expression中輸入表達式,可以測試提取表達式是否正確
補充知識:如何對JSON進行提取
[{"postTime": "2024-04-18 05:20:16","title": "ddddd","blogId": 13,"userId": 3,"content": "# 在這?寫下?篇博客\r\ndddd"},?{"postTime": "2022-10-22 02:38:21","title": "同學,請問你今天學習了嗎","blogId": 12,"userId": 3,"content": "今天是2022年10?22?17:42分,為了能夠早?將最新版本的測試課件呈現給同學們,我已經開始奮..."}]獲取相應中的所有blogId元素:$..blogId獲取第?個blogId元素:$.[0]blogId
測試提取正確之后,就將值寫到JSON提取器中。
書寫格式:${變量名}
那為什么要添加這個呢???
HTTP協議本身是無狀態的,服務器需要通過會話標識來識別用戶身份。
用戶登錄之后,服務器返回一個認證憑證,后續請求必須攜帶該憑證(如訪問列表頁),否則服務器會返回401/403未授權
瀏覽器在登錄后會自動管理Cookie/Token,并在后續請求中自動附加這些信息。
JMeter需要手動實現這一過程,否則列表頁請求會被視為“未登錄用戶”的請求。
JMeter如何實現?
通過?提取器(正則/JSON)?+?HTTP信息頭管理器?或?Cookie管理器?動態傳遞憑證。
若多個接口中都有符合條件JSON字段,則會發生覆蓋
要將提取用戶憑證(JSON提取器)放在登錄的下面,然后只要一個HTTP信息頭管理器
token只取登錄接口返回值里的data字段。然后直接保存在HTTP信息頭管理器
不能只看通過了、和響應時間、還有狀態碼沒問題就代表沒有問題,還要查看響應體,要返回博客的標題和博客的內容
當有兩百個詳情頁接口,每個接口都要用到寫死的id值,而這個id值后續可能需要修改----最好的方式就是用批量修改的方式
補充:
為什么postman可以請求成功,但是放到jmeter之后就請求失敗了?
我們可以將把開發者工具上的數據和jmeter的數據進行對比進行對比。在postman上驗證一下是不是這個問題,但是修改的時候要注意作用域問題。
2.7、JSON斷言
舉例:
1、檢查字段是否存在
1)JOSN Path exists:這個值是點擊查看結果樹,將格式選為JSON Path Tester 然后在輸入框中輸入JSON提取的書寫格式,對JSON進行提取
2)不選中同時驗證字段值
3)不選中選使用正則匹配
4)不輸入預期值
如果?
userId
?存在,斷言通過;否則失敗2、驗證字段值
1)JOSN Path exists:這個值是點擊查看結果樹,將格式選為JSON Path Tester 然后在輸入框中輸入JSON提取的書寫格式,對JSON進行提取:$.code
2)選中同時驗證字段值
3)不選中使用正則匹配
4)輸入預期值:200
如果?
code
?等于?200
,斷言通過;否則失敗。3、使用正則表達式匹配
1)JOSN Path exists:這個值是點擊查看結果樹,將格式選為JSON Path Tester 然后在輸入框中輸入JSON提取的書寫格式,對JSON進行提取:$.email
2)選中同時驗證字段值
3)選中使用正則匹配
4)輸入預期值:
.+@.+\\..+
?(匹配郵箱格式)如果?
前后JSON的關系
? ? ? ? ?通過變量提取+斷言機制
2.8、同步定時器
我們要實現線程并發執行就必須添加同步定時器
如果沒有打開循環,那么最好配置和開始設定的線程數相同的數字,大于就會一直等,小于就小于就會導致后面的線程數量達不到就不運行。打開循環之后是可以的。
添加了同步定時器之后,線程是在都準備好之后才開始的,就可以做到并發
2.9、CSV數據文件設置
為了模擬更真實的登錄環境,我們需要提供更多的用戶和密碼來實現登錄操作
在當前文件的相同文件夾里面添加一個execl表格,里面寫用戶名和密碼。遇到文件結束符再次循環選True,就會循環的去模擬登錄。
2.10、HTTP Cookie管理器
HTTP Cookie管理器像Web瀏覽器?樣存儲和發送Cookie。如果HTTP請求并且響應包含cookie,則 Cookie管理器會?動存儲該cookie,并將其?于將來對該特定?站的所有請求。每個JMeter線程都有 ??的"cookie存儲區"。因此,正在測試使?cookie存儲會話信息的?站,則每個JMeter線程都將擁 有??的會話。此類Cookie不會顯?在Cookie管理器顯?屏上,可以使?"查看結果樹監聽器"查看。緩存配置可選擇standard(標準)或compatibility(兼容的),當然也可以??添加?些cookie.
每次啟動5個線程,隔3s就啟動五個線程,這5個線程在1s內啟動完成
讓線程持續運行60s,最后每隔1s結束5個線程。
補充:查看結果樹一般在調試階段會用到,在運行的時候的一般不用
3、測試報告
當性能測試完畢之后,我們要出具測試報告
打開cmd
可以先進入存放當前測試文件的同級目錄
輸入命令 jmeter -n -t 測試的文件(第一個測試案例.jmx) -l first.jtl -e -o ./first/.(先創建一個文件夾)
4、性能分析
通過三大指標來分析性能問題:
4.1、響應時間
4.2、錯誤率(可靠率)
錯誤率高的原因:
4.3、吞吐量
吞吐量越大,性能越好;吞吐量相對穩定或者變低,可能系統達到了性能瓶頸
吞吐量變化規律:
波動很大:代表系統不穩定
慢慢變高再趨于穩定:和并發量強相關。如果并發量小于吞吐量,慢慢增大并發量,吞吐量也會隨之增加
慢慢變低,并發量也減少了:說明性能測試要結束了,并發減少;也可能是系統變得卡頓,從而導致響應時間變慢,導致單個線程發起的并發量變少。