jmeter接口性能測試【CSV文件讀取+接口關聯+設置集合點】


一、前言

周計划上安排了個接口性能測試的任務,便開始了職業生涯的第一個接口性能測試。。。

接口進行壓測之前,首先需要調通腳本。有兩種方式,一種是通過抓包工具(如fiddler)抓取業務接口;另一種是通過jmeter進行腳本錄制。

兩者分別有各種的優缺點:

(1)Fiddler手工抓包:【優點】直接抓取業務接口;【缺點】對於性能測試小白可能比較困難(比如筆者自身,很難找到業務接口間的關聯關系);

(2)Jmeter錄制腳本:【優點】各業務接口間的關聯關系可以從腳本中體現;【缺點】需要自己過濾無關緊要的相關接口(如下圖中圈出部分已禁用的接口);

因筆者還是性能測試小白,所以選擇了用jmeter進行腳本錄制這種方式。

二、腳本錄制

 根據性能測試要求,對所需要測的業務系統進行分析大概有多少個事務。如上圖,分析得出業務系統有信息自檢、填寫信息、填寫表單、上傳材料、提交辦件這5個事務。在測試計划下添加HTTP請求默認值、察看結果樹、聚合報告,接下來添加線程組。

(1)測試計划右鍵添加線程組

(2)線程組右鍵新增事務控制器

 

添加事務控制器后,在錄制腳本時,可以在“目標控制器”中選擇對應的事務。

Generate parent sample:是否生成一個父取樣,即將事務控制器下的請求看成一個整體(一般勾選該選項)。勾選后,在察看結果樹和聚合報告中,只顯示事務名稱,不顯示事務下具體的請求。

 (3)工作台右鍵添加HTTP代理服務器,(對應瀏覽器設置代理后)選擇對應的目標控制器,並啟動錄制。

啟動錄制后,可去業務系統進行相關操作,此時jmeter會錄制相關的腳本,產生的腳本就會顯示在對應事務下,如圖中“信息自檢”下的很多接口,就是錄制產生的。事務操作結束后,記得回到jmeter代理服務器頁面停止錄制,此時該事物的腳本錄制結束。

PS:上圖中,事務“基本信息”、“填寫表單”、“上傳材料”、“完成”的錄制步驟同上,此處不過多描述。

三、關聯參數

存在這樣場景:上一個接口產生的數據,是下一個接口的入參。因此,可以用正則表達式提取器,提取上一個接口產生的數據,在下一個接口的傳入參數中進行引用。 

 (1)通過正則表達式提取響應參數

選擇對應接口>右鍵,添加>后置處理器>正則表達式提取器。以提取userCode為例。在正則表達式中填寫引用名稱、正則表達式以及匹配規則,在接口執行后即可提取對應參數;可通過添加Debug PostProcessor驗證提取的參數值是否正確。

-------------------------------------------------------------------

正則表達式提取器相關說明:

Apply to:應用范圍;

要檢查的響應字段:數據源;

引用名稱:其他地方引用時的變量名稱,可自定義設置。引用方法為:${引用名稱}

正則表達式:正則提取器,()括號里為要獲取的的值。"userCode":"為左邊界 ,"為右邊界。括號里為正則表達式,用來匹配所需要獲取的數據;

".":匹配除了換行符以外的任何字符;

"+":重復一次或更多次;

"?":重復零次或一次;

模板:$$對應正則表達式提取器類型。-1全部,0 隨機,1第一個2第二個,以此類推,若只有一個正則一般就填寫$1$;

匹配數字:匹配數據的所有結果。-1表示全部,0隨機,1第一個,2第二個,以此類推。若只要獲取到匹配的第一個值,則填寫1;

缺省值:匹配失敗時的默認值。可以不寫。

---------------------------------------------------------------------

(2)引用參數

在對應的接口對應的入參的值中進行引用,引用方法:${引用名稱}。這樣提取的參數值就會變成下一個接口的入參值,接口參數實現關聯。

四、讀取CSV文件

腳本基本跑通之后,為了可以進行多用戶的並發,可以通過讀取CSV文件引用多個用戶變量(userCode)。上篇文章中有提及jmeter如何讀取CSV文件,這里不過多描述。

(上篇博文傳送門:https://www.cnblogs.com/dnjiang/p/11290521.html#4349303)

五、設置集合點

在進行接口性能測試(多用戶並發)時,為了對一些接口施加壓力,可以在對應的地方設置集合點(添加Synchronizing Timer)。根據Synchronizing Timer設置的集合點【一般小於或等於線程數】,當請求沒有達到集合點時,會處於等待狀態;當請求達到集合點時,會一起執行,從而實現並發的效果。

執行腳本,可在察看結果樹中查看同時提交的請求效果。同時可在聚合報告中查看各事務的性能測試結果分析。

 六、自定義變量

日常接口壓測過程中,存在每個接口請求頭中都有帶token的情況,當token過期后,執行腳本異常;因此我們需要替換接口請求頭中的token信息,一個一個替換的話麻煩費時,因此我們可通過自定義變量並在對應位置引用;替換token時,只需改變量值即可。

 

 七、番外話

性能測試還可能存在對接口進行持續施壓的要求,可在線程組中進行設置。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM