?
本篇文章主要介紹Jmeter中如何使用
JSON斷言、同步定時器、事務控制器、CSV數據文件設置、HTTP?Cookie管理器
目錄
一:JSON斷言
1:正確結果展示
2:錯誤結果展示
3:JSON配置
(1)Additionally? ?assert? ?value添加斷言值
(2)Match? ?as? regular? expression正則匹配
4:正則表達式
(1)\d匹配數字?
(2)\s匹配字符
(3)最小匹配多少次
5:使用展示
二:同步定時器
1:場景引入
2:實現并發效果
3:前后對比
4:如果模擬用戶組數量大于線程組數量
三:事務控制器
1:創建事務控制器
2:聚合報告的信息講解
四:CSV數據文件設置
1:場景引入
2:創建我們要的信息
(1)創建一個表格
(2)保存文件
3:參數介紹
4:結果展示
五:HTTP? Cookie管理器
1:瀏覽器請求訪問場景引入
2:Jmeter中不設置Cookie管理器演示
3:設置HTTP Cookie管理器
一:JSON斷言
1:正確結果展示
2:錯誤結果展示
使用錯誤的名稱
登錄返回的數據中沒有code1這個數據,所以沒有找到這個result,換成data
3:JSON配置
(1)Additionally? ?assert? ?value添加斷言值
①若不選Additionally? ?assert? ?value,表?添加斷?值,則可?來判斷字段是否存在
②選擇Additionally? assert? value,則必須添加Expected? Value期望的斷?值(這里區分大小寫)
?
(2)Match? ?as? regular? expression正則匹配
③若不選Match? ?as? regular? expression正則匹配,則Expected? Value必須填寫完整,少?個字符都會導致斷?失敗
④若選擇Match? ?as? ?regular? ?expression正則匹配,則Expected? ? Value可以僅寫上部分關鍵詞即可斷?成功
去匹配我們的token字符串
4:正則表達式
(1)\d匹配數字?
(2)\s匹配字符
\s匹配所有空白符,包括換行;\S非空白符,不包括換行;
(3)最小匹配多少次
5:使用展示
?
二:同步定時器
1:場景引入
配置了五個線程,我們想要讓這個五個線程達成同步并發的效果,但是看我們當前的執行情況,這些線程是在1s內陸陸續續的完成,沒有達成我們預想中并發執行的效果。(這里就是誰先準備好,誰就先發起請求)
2:實現并發效果
想象一個場景:我們行人在過馬路前需要等待紅燈跳轉到綠燈,行人在這個等待的過程中越聚越多,綠燈一亮,行人則蜂擁而過。
?同步定時器可以理解為集合點,當線程數量達到指定值后,再?起釋放,可以瞬間產?很?的
壓?。這樣,可以更好地模擬真實的??并發訪問場景,提?測試的準確性和可靠性。
配置的數量與我們前面設置好的線程組的數量保持一致
3:前后對比
所有線程都準備好了,一起發送請求,達到并發的效果
4:如果模擬用戶組數量大于線程組數量
這里就會卡主,因為沒有它會一直等待到50個線程準備完畢,才發送請求。所以這里設置的數量不可以大,那可以小嗎?
答案也是不可以的,假設我們當前設置的模擬用戶組數量為3,那么我們就是分3個一組請求一次,但是我們設置的是5個線程呀,還有2個線程湊不出來3,所以就遲遲不能發送請求。也會卡主
那又有一個問題了:?若小于配置的線程數,線程組中的線程數與當前配置的數據必須成整數倍。這個結論是否正確呢?
也是不可以的,假設我們的線程組數量為(6),我們第一輪準備好的線程數(5)>=配置的數量3,就直接發送請求了(3),此時還有一個就落單了,落單的那個線程就會一直等
所以當配置的數量小于線程數時,最好把循環打開,避免最后一次為準備好的線程數量達不到并發數
三:事務控制器
我們現在有5個接口
打開聚合報告,就會顯示五個接口的相關測試信息
1:創建事務控制器
思考:我們現在如果想要把登錄接口和列表接口合并成一個事物,應該怎么做呢?
執行合并操作
再打開聚合報告,就會發現,多了一行我們的登錄事務
2:聚合報告的信息講解
登錄和用戶信息接口平均響應時間分別為34ms和22ms,相加登錄事務為56ms
列表頁返回的data數據比較多,所以響應的時間比較高是正常的
一般看90%的請求對應的響應時間
(1)異常就是錯誤率
(2)吞吐量——有兩種劃分方式
①請求的數量劃分
TPS——每秒處理的事務數量(常用)發送很多請求,每秒處理的事務數越高,tps越高,性能越高
QPS——每秒的查詢率
②網絡數據包劃分
四:CSV數據文件設置
1:場景引入
以登陸接?為例,當我們執?登陸接?的性能測試時,?動配置了??名和密碼為固定的username和password,然?實際使?中不可能只有?個??登陸,為了模擬更真實的登錄環境,我們需要提供更多的??username和password來實現登錄操作
我們現在不把用戶名和密碼寫死,
2:創建我們要的信息
(1)創建一個表格
word文檔
(注:如果我們數據庫當中的用戶數量不多的話,可以自己添加一些數據進去,這里在查看數據庫是可以格式化查看,比如select * from user\G)無分號,格式化查看
(2)保存文件
3:參數介紹
?件名:填寫csv?件的路徑。建議使?絕對路徑。
? ?件編碼:UTF-8
? 變量名稱:從csv數據?件中讀起的數據需要保存到的變量名。有多個變量時?逗號分隔
? 是否忽略??:是否從csv數據?件第??開始讀取。
? 分隔符:要求與csv數據?件中多列的分隔符?致
? 遇到?件結束符再次循環:若選擇為True當數據不夠的時候會從頭取。若選擇False,則需要勾選
下?的配置,遇到?件結束符停?線程,這?如果不勾選,請求將會報錯。
4:結果展示
配置多個線程數,我們才能看到多個不同的用戶,發起請求
五:HTTP? Cookie管理器
1:瀏覽器請求訪問場景引入
我們訪問第一個login登錄接口,會設置這個Cookie信息,
進行302臨時重定向之后,第二次訪問最下方的login,也會帶上一次的Cookie信息
2:Jmeter中不設置Cookie管理器演示
這里沒有加入Cookie管理器所以第二次登陸請求頭當中就沒有攜帶上我們當前線程的Cookie信息,所以瀏覽器就找不到對應的Session會話
3:設置HTTP Cookie管理器
結果展示
總結:如果沒有設置HTTP Cookie管理器,那么第一個接口中獲取到的Cookie信息是不會帶入到其他的接口當中的。