效能測試

迷糊的我發表於2024-09-19

一、什麼是效能測試?

效能測試是一種非功能性測試,主要目的是評估系統在特定負載條件下的響應時間、吞吐量、資源利用率和穩定性。效能測試不僅僅關注系統是否能正常執行,還關心在不同負載下是否會發生效能瓶頸,確保應用程式能夠應對大規模併發使用者的訪問。

二、效能測試流程

  1. 需求分析

    • 明確效能目標,比如最大支援使用者數、響應時間、吞吐量等。
  2. 測試設計

    • 設計測試場景,明確要測試哪些業務功能、使用者行為,以及對應的負載和壓力。
  3. 指令碼編寫(注意引數化、關聯)

    • 根據業務場景編寫測試指令碼,確保指令碼能真實地模擬使用者行為。
  4. 執行測試

    • 按照設計好的場景執行測試,逐步增加負載以觀察系統效能變化。
  5. 監控與分析

    • 在測試期間監控伺服器效能,收集資料。
  6. 結果分析與最佳化

    • 透過分析測試結果,發現效能瓶頸,提出最佳化方案。

三、效能指標

  吞吐量 (Throughput)

    • 單位時間內系統能夠處理的請求數量或資料量。高吞吐量通常意味著系統具備更高的併發處理能力。

  響應時間(一般不高於1.5s)

    • 從使用者傳送請求到收到響應的時間。這個指標通常會影響使用者體驗。

  資源利用率(一般低於80%)

    • 監控CPU、記憶體、磁碟、網路頻寬等資源的使用情況,幫助識別是否有瓶頸。

  成功率(一般是99.99%):

四、效能測試的分類

  1. 基準測試(Benchmark Testing):
    • 目的是確定系統在單個介面單個使用者,沒有壓力下的基準效能指標。
  2. 負載測試 (Load Testing)(加壓)

    • 目的是確定系統在期望的負載條件下的表現。它透過模擬預期的使用者數量來測試系統的響應時間和穩定性。
    • 示例:測試電商網站在促銷活動時能否同時處理成千上萬的訂單請求。
  3. 壓力測試 (Stress Testing)(極限)

    • 將系統推到極限,甚至超出預期負載,測試在異常高負載下系統的表現。
    • 目的是找出系統的崩潰點以及在壓力下的恢復能力。
    • 示例:測試系統在高流量、資料庫崩潰或硬體故障時的響應。
  4. 容量測試 (Capacity Testing)

    • 測試系統能夠處理的最大負載,以確定其最大處理能力。
    • 幫助確定系統是否需要擴充套件資源來處理更多使用者。
  5. 穩定性測試 (Stability/Soak Testing)(恆定壓力)

    • 長時間執行負載測試,檢查系統是否會在持續高負載下出現記憶體洩漏、效能下降等問題。
    • 示例:模擬網站24小時不停歇地處理請求,檢查記憶體使用情況。
  6. 峰值測試 (Spike Testing)

    • 測試系統在短時間內大量請求的情況下是否能夠快速適應並恢復,模擬突然的流量激增情況。

五、效能測試工具:

  1. JMeter

    • 一個開源的效能測試工具,適用於Web應用、資料庫、FTP伺服器等的測試。
  2. LoadRunner

    • 商業級效能測試工具,功能強大,支援廣泛的協議和複雜場景的模擬。
  3. Gatling

    • 針對開發者的開源效能測試工具,基於Scala編寫,擅長高併發測試。
  4. k6

    • 現代化的開源負載測試工具,提供指令碼化和雲端整合,適用於測試API和微服務。

六、定位效能問題:

  1. 程式碼層:如:日誌、exception、error。
  2. 資料庫層:如:慢查詢、資料連線池、死鎖。
  3. 架構層:JVM、中介軟體nginx、MQ。
  4. 配置層:伺服器。

相關文章