Jmeter系列(47)- 針對需要登錄的接口如何做性能測試?


如果你想從頭學習Jmeter,可以看看這個系列的文章哦

https://www.cnblogs.com/poloyy/category/1746599.html

 

前言

  • 在實際業務場景中,很多業務都需要先登錄才能正常使用
  • 在做接口性能測試的時候,需要測試登錄后才能訪問的接口肯定是無法避免的
  • 那么,我們怎么才能完成先登錄后發出請求的性能腳本呢

 

思路

  1. 發出登錄請求
  2. 提取響應的認證內容
  3. 后面的請求引用認證內容

 

提出問題

做性能測試,是模擬多個虛擬用戶實現並發的,那我們的登錄接口也需要重復發起嗎?

可以類比一個場景

做 UI 自動化的時候肯定也需要登錄的,一般我們會將登錄放到全局前置來操作,所以整個測試流程下來只需要登錄一次

關鍵點

一個用戶只需要登錄一次,避免重復發起登錄請求,造成不必要的資源消耗

 

最簡單的場景

  • 所有虛擬用戶使用同一個用戶賬戶,每次都是先調登錄接口,再調登錄之后接口請求嗎?
  • 如果你的系統,業務上允許一個用戶在不退出情況下,反復登錄,且沒有登錄次數限制,這種最理想的情況,你完全可以這么做
  • 做完了,你可能會想,我不用一個賬戶,100個並發用戶數,我就用100個獨立賬戶,

 

每個用戶擁有獨立賬戶

靈魂拷問

每個虛擬用戶都試用一個獨立賬戶,還是先調登錄,再調登錄之后接口請求,這樣可以嗎,要怎么做?

 

當然可以

  • 在你的線程組里面用上 csv 數據文件設置讀取出用戶賬戶信息,或者用 JDBCrequest 從數據庫獲取出用戶信息
  • 然后再在登錄接口中用取出的用戶信息來登錄
  • 這樣,在性能測試時,就會循環使用你用戶總量中的用戶來發送請求
  • 這樣,理論上是行的通的,但是,現實有些骨感
  • 因為做性能測試,使用的是高並發,可能存在競爭關系,可能出現后續接口,使用的關聯參數取不到值的情況
  • 從而導致請求報錯,而這種錯誤,不是性能測試服務器響應報錯,而是腳本問題導致報錯,影響我們對性能結果的判斷

 

那么,我們就會問,還有沒有其他辦法呢?

 

終極好辦法

上面也說了一個關鍵點:一個用戶只需要登錄一次

既然我們一個線程就是一個模擬用戶,那我們只需要針對每個線程做到只發出一次登錄請求,其他接口可以無限次發起

具體步驟

  1. 在線程組下添加一個邏輯控制器【僅一次控制器】
  2. 在該邏輯控制器下添加登錄請求
  3. 登錄請求下添加提取器,提取登錄響應內容
  4. 和邏輯控制器平級下添加需要並發的請求

 

運行查看聚合報告

可以看到 login 登錄接口總共調用了 5 次,針對重置密碼接口進行了並發請求

注意:並發請求並不代表在測試過程中,每個用戶的並發總次數會相等

 


免責聲明!

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



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