08-01 Jmeter 核心原理與效能測試理論

Leofighting發表於2021-10-05

Jmeter 核心原理

基於協議,模擬真實使用者場景,並通過多執行緒模擬使用者發起請求。

  1. 基於協議:效能測試的物件是網路分散式架構的軟體,而網路分散式架構的核心是網路協議
  2. 多執行緒:人的大腦是單執行緒的,電腦的 cpu 是多執行緒的。效能測試就是利用多 執行緒的技術模擬多使用者去負載
  3. 模擬真實場景。使用者的訪問時間,訪問頻率都不是固定的

效能測試理論

效能測試的

  • 基本目標:測試系統效能是否達標;通過一定的技術手段,模擬使用者的併發請求,去測試系統最大處理能力與穩定執行的能力,找到效能瓶頸,提升系統整體處理能力
  • 基本方法:基準、負載、壓力……

核心原理

基於協議,通過多執行緒的方式模擬使用者併發,在不同場景下施壓伺服器

  • 基於協議:包括http,https,tcp,udp,socket,websocket,基於協議發起請求
  • 多執行緒:通過多執行緒的方式,模擬併發使用者,施壓伺服器
  • 涉及場景:jmeter 方法,元件;設計使用者使用系統的關聯,思考時間,集合點,對結果進行斷言

應用領域

  • 能力驗證:系統能否在固定條件下具有所宣告的能力

    乙方向甲方提供的專案中,宣告瞭系統可以支援5000使用者同時登入,且響應時間不超過3s;乙方需要通過效能測試得到測試結果,給予甲方驗收報告
  • 瓶頸發現:發現瓶頸與缺陷,無可參照的效能指標與目標

    通過一系列的效能測試手段,發現效能瓶頸與缺陷
  • 效能調優:對系統效能的調優

    針對發現的效能瓶頸做調優
  • TPS 瓶頸
  • 服務資源瓶頸
  • 響應時間瓶頸
  • SQL 瓶頸
  • 容量規劃:系統能否支援未來一段時間內的使用者增長
當前使用者可能只支援5000使用者併發;
預計未來使用者併發量能達到 50000 or 500000;
針對未來可能存在的業務量爆發,以預計的使用者併發量為基數,做對應的效能測試,提前調整硬體設施

測試思路

  • 要測什麼?

前端:web、APP;從使用者角度考慮,更多關注頁面載入時間,與響應時間

服務端:

  1. 工具層面:關注錯誤率與吞吐量
  2. 伺服器層面:CPU,記憶體,IO,JVM

資料庫:包括慢SQL,死鎖……

  • 怎麼測?

需求--計劃--方案--測試環境搭建--設計用例--資料準備--設計場景--指令碼開發--資料監控--結果分析--效能調優--提交報告

  • 測試結果通過的標準:

按照需求:測試結果符合預期

無標準需求的:例如測試一個頁面的最大併發

效能指標

  • 前端效能指標

響應時間:使用者視角最優先關注的指標

  • 258原則:

    • 2s以內,很滿意
    • 5s,一般
    • 8s,無法接受
  • 前端相應時間:

    • 前端資源載入渲染的時間
    • 前後端互動的時間
    • 前端將後端查詢的資料,在頁面呈現出來
  • 網路連線時間:

    • connect time-連線時間:請求發出到服務端接收到,中間的網路時間
    • latency-延遲:網路連線時間+服務處理返回的時間
  • 服務段處理時間=latency - connect time

錯誤率

點選率(HPS):使用者點選按鈕,觸發請求

TPS:

  • 單介面業務:單位時間完成的請求數
  • 多介面業務:單位時間完成的事務數

RPS:直接從服務端角度衡量壓力值

  • 單位時間發起的請求數

TPS 衡量了服務端/系統的效能;RPS 衡量了壓力

  • 服務端效能指標

CPU

記憶體

磁碟IO

JVM

中介軟體:Tomcat、redis、Nginx

測試視角

使用者視角

  • 響應時間
  • 系統穩定

運維視角

  • 硬體設施是否需要更換
  • 資源利用率是否達標

    • 利用率超標
    • 利用率過低
  • 系統容量

開發視角

  • 程式碼是否需要優化
  • SQL 優化
  • 系統架構優化

效能測試工程師的視角

測試型別

基準測試:每一次版本迭代都需要做基準測試,目的是對比上一次的測試結果,給出調優的依據

負載測試:持續不斷地增加壓力;需要保證壓力的持續性;找到系統的瓶頸點

  • 併發使用者模型:持續不斷地增加併發使用者
  • RPS模型:持續不斷地增加請求數

壓力測試:當資源處於一個飽和狀態,持續執行服務,考察系統的穩定性;或者負載處於一個高峰

  • 穩定性測試:最大壓力的80%,持續執行一段時間
  • 破壞性測試:在最大壓力的基礎上,依然不斷增加壓力,目的是讓系統崩潰報錯

失效恢復測試:系統異常之後,能否及時地恢復

容量測試:考察系統在未來時間段內,能支撐的使用者數;測試大容量下,系統需要的硬體設施

相關文章