九號工具站
返回列表

效能測試入門指南:從負載測試到壓力測試的完整教學

效能測試入門完整指南 - 涵蓋負載測試、壓力測試、浸泡測試,介紹 JMeter、k6、Locust 三大工具實戰用法,從零學會找出系統瓶頸確保上線穩定

QA 軟體測試 效能測試 負載測試 JMeter k6

最後更新:2026-03-16

本文提供效能測試入門指引,實際工具選擇與測試策略需依專案需求調整。

1. 為什麼需要效能測試

功能正確不代表系統能扛住真實流量。電商大促時網站掛掉、活動頁面開很慢、API 回應逾時,這些都是效能問題。效能測試的目標就是在上線前找出系統的極限與瓶頸,避免在真實用戶面前翻車。 常見的效能問題包括:資料庫查詢太慢、記憶體洩漏、連線池耗盡、快取命中率低、第三方 API 回應慢拖累整體效能。

2. 效能測試的四種類型

模擬預期的正常與尖峰流量,驗證系統是否能在目標負載下正常運作。例如:系統預期同時有 1000 位用戶,測試 1000 位虛擬用戶的情境。 逐漸增加負載超過系統容量,觀察系統在超載時的行為。重點不在「能不能扛住」,而在「超載時是否優雅降級而非直接崩潰」。 在正常負載下持續運行數小時甚至數天,檢測記憶體洩漏、連線池耗盡等長時間才會出現的問題。 模擬流量突然暴增的場景,例如行銷活動開始瞬間湧入大量用戶。測試系統能否快速擴展並在流量降低後恢復正常。

3. 效能測試的關鍵指標

執行效能測試時,你需要關注這些核心指標:

  • 回應時間 (Response Time)

    P50(中位數)、P95、P99 分位數。P99 比平均值更能反映真實用戶體驗

  • 吞吐量 (Throughput)

    每秒處理的請求數 (RPS)。代表系統的處理能力

  • 錯誤率 (Error Rate)

    失敗請求的比例。負載增加時錯誤率不應急速上升

  • 併發用戶數 (Concurrent Users)

    同時在線的用戶數量

  • 資源使用率

    CPU、記憶體、磁碟 I/O、網路頻寬的使用情況

4. 三大效能測試工具比較

Apache 基金會的開源工具,歷史最悠久,社群最大: Grafana Labs 維護的現代效能測試工具,用 JavaScript 寫測試腳本: Python 寫的效能測試框架,用 Python 定義用戶行為:

  • 優點

    GUI 操作直覺、外掛豐富、支援多種協定(HTTP、FTP、JDBC、SOAP)

  • 缺點

    Java 寫的比較吃資源、腳本維護成本高、不適合版本控制

  • 適合

    入門學習、需要 GUI 操作、非工程師背景的 QA

  • 優點

    腳本用 JS 撰寫易讀易維護、CLI 執行適合 CI/CD、資源消耗低

  • 缺點

    只支援 HTTP/WebSocket/gRPC、不支援 GUI 錄製

  • 適合

    現代 Web API 測試、CI/CD 整合、有程式背景的 QA

  • 優點

    Python 生態系豐富、分散式執行容易、Web UI 即時監控

  • 缺點

    Python GIL 限制單機效能、需要 Python 知識

  • 適合

    Python 技術棧團隊、需要複雜用戶行為模擬

5. 效能測試實戰流程

在開始測試前,先與團隊確認效能目標: 效能測試應該在與生產環境盡可能相似的環境中執行。關鍵注意事項: 根據真實用戶行為設計測試場景: 執行測試時同步監控系統資源: 測試完成後,分析結果並產出報告:

  • 首頁載入時間必須在 2 秒內(P95)

    首頁載入時間必須在 2 秒內(P95)

  • API 回應時間必須在 200ms 內(P99)

    API 回應時間必須在 200ms 內(P99)

  • 系統必須支撐同時 5000 位用戶

    系統必須支撐同時 5000 位用戶

  • 錯誤率必須低於 0.1%

    錯誤率必須低於 0.1%

  • 硬體規格應與生產環境一致(或按比例縮小並換算)

    硬體規格應與生產環境一致(或按比例縮小並換算)

  • 資料庫要有接近真實量級的測試資料

    資料庫要有接近真實量級的測試資料

  • 關閉不必要的監控與日誌,避免干擾結果

    關閉不必要的監控與日誌,避免干擾結果

  • 分析生產環境的流量模式(哪些 API 最常被呼叫)

    分析生產環境的流量模式(哪些 API 最常被呼叫)

  • 定義用戶行為路徑(瀏覽首頁 → 搜尋 → 查看商品 → 加入購物車)

    定義用戶行為路徑(瀏覽首頁 → 搜尋 → 查看商品 → 加入購物車)

  • 設定合理的思考時間(用戶在頁面停留的時間)

    設定合理的思考時間(用戶在頁面停留的時間)

  • 準備測試資料(不同帳號、不同商品)

    準備測試資料(不同帳號、不同商品)

  • 使用 Grafana + Prometheus 監控伺服器指標

    使用 Grafana + Prometheus 監控伺服器指標

  • 觀察資料庫慢查詢日誌

    觀察資料庫慢查詢日誌

  • 記錄應用程式日誌中的錯誤

    記錄應用程式日誌中的錯誤

  • 注意垃圾回收(GC)頻率與暫停時間

    注意垃圾回收(GC)頻率與暫停時間

  • 比較實際數據與效能目標的差距

    比較實際數據與效能目標的差距

  • 找出瓶頸點(是 CPU、記憶體、資料庫還是網路)

    找出瓶頸點(是 CPU、記憶體、資料庫還是網路)

  • 提出具體的優化建議與優先順序

    提出具體的優化建議與優先順序

  • 記錄基準數據,作為後續迴歸比較的基礎

    記錄基準數據,作為後續迴歸比較的基礎

6. 常見效能瓶頸與解法

以下是效能測試中最常遇到的瓶頸及對應的解決方案:

  • 資料庫查詢慢

    加索引、優化查詢、使用快取

  • 記憶體洩漏

    用 profiler 找出洩漏點,檢查未釋放的資源

  • 連線池耗盡

    調整連線池大小、檢查連線是否正確歸還

  • CPU 滿載

    找出 CPU 密集型操作,考慮非同步處理或水平擴展

7. 常見問題 FAQ

建議在功能穩定後、上線前進行完整效能測試。但更好的做法是在 CI/CD 中加入輕量級效能測試(例如 API 回應時間門檻),每次部署都自動檢查效能是否退化。 可以。k6 或 Locust 都能在單機上執行基本的負載測試。重點是先從小規模開始,學會分析結果,再逐漸增加測試複雜度。 效能測試結果有變異是正常的。建議每個場景至少跑 3 次取平均值,排除首次暖機的影響。也要確保測試期間沒有其他程式在競爭資源。

ℹ️

一般聲明

本站提供之資訊僅供參考,不保證其完整性與正確性。使用者應自行判斷資訊之適用性。

意見反饋