適用標準:ISO/IEC/IEEE 29119-3:2021(測試文件)、RFC 2544(Benchmarking)
適用階段:測試驗證階段(Testing Phase)
負責角色:效能測試工程師、QA Lead、SRE
📑 章節目錄#
- 文件資訊
- 測試摘要
- 測試環境
- 測試場景與配置
- 測試結果
- 效能瓶頸分析
- 與 NFR 目標對照
- 建議與改善方案
- 結論與決策建議
- 附錄
📝 範本#
1. 文件資訊#
| 項目 | 內容 |
|---|
| 文件名稱 | [系統名稱] 效能測試報告 |
| 文件編號 | [專案代碼]-PTR-[版本號]-[日期] |
| 版本 | v[X.Y] |
| 測試日期 | [YYYY-MM-DD] ~ [YYYY-MM-DD] |
| 測試工具 | [JMeter / k6 / Locust / Gatling] |
| 測試人員 | [姓名] |
| 審核者 | [QA Lead / SA] |
2. 測試摘要#
| 項目 | 內容 |
|---|
| 測試類型 | [負載測試 / 壓力測試 / 耐久測試 / 容量測試] |
| 測試目的 | [驗證系統在預期負載下的回應時間與吞吐量] |
| 測試範圍 | [被測試的模組/API/頁面] |
| 測試結果總評 | [✅ PASS / ⚠️ CONDITIONAL PASS / ❌ FAIL] |
| 關鍵發現 | [一句話總結] |
3. 測試環境#
3.1 系統架構#
| 元件 | 規格 | 數量 | 備註 |
|---|
| Application Server | [CPU/Memory/Instance Type] | [N] | |
| Database Server | [CPU/Memory/Type] | [N] | |
| Cache | [Type/Memory] | [N] | |
| Load Balancer | [Type] | [N] | |
3.2 環境差異說明#
| 項目 | 測試環境 | 生產環境 | 比例 |
|---|
| App 節點數 | [N] | [M] | 1:[ratio] |
| DB 規格 | [spec] | [spec] | 1:[ratio] |
| 資料量 | [N] rows | [M] rows (est.) | 1:[ratio] |
⚠️ 注意:測試結果需依環境比例換算評估生產環境表現
3.3 測試資料#
| 項目 | 內容 |
|---|
| 資料庫記錄數 | [N] 筆 |
| 測試用戶數 | [N] 帳號 |
| 資料產生方式 | [腳本產生 / 生產遮罩資料 / 混合] |
4. 測試場景與配置#
4.1 場景清單#
| 場景 ID | 場景名稱 | 描述 | 權重(%) |
|---|
| SC-001 | [場景名稱] | [使用者操作描述] | [N]% |
| SC-002 | [場景名稱] | [使用者操作描述] | [N]% |
4.2 負載模型#
| 測試類型 | 虛擬用戶 | Ramp-Up | 持續時間 | Think Time |
|---|
| 基準測試 | [N] VU | [N] min | [N] min | [N]s |
| 負載測試 | [N] VU | [N] min | [N] min | [N]s |
| 壓力測試 | [N] VU | [N] min | [N] min | [N]s |
| 峰值測試 | [N] VU (spike) | [N] sec | [N] min | [N]s |
4.3 成功標準#
| 指標 | 目標值 | 來源 |
|---|
| P95 回應時間 | < [N]ms | NFR §3.1 |
| P99 回應時間 | < [N]ms | NFR §3.1 |
| 吞吐量 | ≥ [N] TPS | NFR §3.1 |
| 錯誤率 | < [N]% | NFR §3.1 |
| CPU 使用率 | < [N]% (avg) | Capacity planning |
| Memory 使用率 | < [N]% (avg) | Capacity planning |
5. 測試結果#
5.1 整體結果摘要#
| 指標 | 基準測試 | 負載測試 | 壓力測試 | 目標 | 結果 |
|---|
| Total Requests | [N] | [N] | [N] | — | — |
| Avg Response Time | [N]ms | [N]ms | [N]ms | — | |
| P50 | [N]ms | [N]ms | [N]ms | — | |
| P95 | [N]ms | [N]ms | [N]ms | < [N]ms | [✅/❌] |
| P99 | [N]ms | [N]ms | [N]ms | < [N]ms | [✅/❌] |
| Max Response Time | [N]ms | [N]ms | [N]ms | — | |
| TPS (avg) | [N] | [N] | [N] | ≥ [N] | [✅/❌] |
| Error Rate | [N]% | [N]% | [N]% | < [N]% | [✅/❌] |
5.2 各場景詳細結果#
SC-001: [場景名稱]#
| 指標 | 值 | 目標 | 結果 |
|---|
| Avg Response Time | [N]ms | — | |
| P95 Response Time | [N]ms | < [N]ms | [✅/❌] |
| TPS | [N] | — | |
| Error Rate | [N]% | < [N]% | [✅/❌] |
5.3 資源使用率#
| 資源 | 元件 | Avg | Peak | 閾值 | 結果 |
|---|
| CPU | App Server | [N]% | [N]% | < [N]% | [✅/❌] |
| Memory | App Server | [N]% | [N]% | < [N]% | [✅/❌] |
| CPU | DB Server | [N]% | [N]% | < [N]% | [✅/❌] |
| Memory | DB Server | [N]% | [N]% | < [N]% | [✅/❌] |
| DB Connections | Pool | [N] | [N] | < [N] | [✅/❌] |
| Network I/O | [元件] | [N]Mbps | [N]Mbps | < [N]Mbps | [✅/❌] |
6. 效能瓶頸分析#
6.1 發現的瓶頸#
| # | 瓶頸描述 | 影響範圍 | 嚴重度 | 根因 | 證據 |
|---|
| 1 | [描述] | [場景/API] | [Critical/High/Medium] | [DB slow query / Memory leak / …] | [截圖/數據引用] |
| 2 | [描述] | [場景/API] | [Critical/High/Medium] | [根因] | [證據] |
6.2 效能趨勢分析#
| 負載水位 | 回應時間趨勢 | TPS 趨勢 | 備註 |
|---|
| 50% load | 穩定 | 線性增長 | 正常 |
| 75% load | 略微上升 | 線性增長 | 正常 |
| 100% load | [穩定/上升] | [飽和?] | [觀察] |
| 120% load | [急升?] | [下降?] | [瓶頸?] |
7. 與 NFR 目標對照#
| NFR 項目 | 目標 | 實際結果 | 差距 | 狀態 |
|---|
| [指標1] | [目標值] | [實際值] | [差距] | [✅ PASS / ❌ FAIL] |
| [指標2] | [目標值] | [實際值] | [差距] | [✅ PASS / ❌ FAIL] |
8. 建議與改善方案#
| # | 問題 | 建議方案 | 預估改善幅度 | 優先級 | 負責人 |
|---|
| 1 | [瓶頸描述] | [改善方案] | [預估 %] | [P1/P2/P3] | [姓名] |
| 2 | [瓶頸描述] | [改善方案] | [預估 %] | [P1/P2/P3] | [姓名] |
9. 結論與決策建議#
| 項目 | 內容 |
|---|
| 整體評估 | [✅ PASS / ⚠️ CONDITIONAL PASS / ❌ FAIL] |
| 上線建議 | [可上線 / 需修復後重測 / 不建議上線] |
| 條件(如 CONDITIONAL) | [需滿足的條件] |
| 下次測試建議 | [建議測試時機/項目] |
10. 附錄#
10.1 測試腳本清單#
| 檔案名稱 | 用途 | 版本庫位置 |
|---|
| [script.jmx] | [場景描述] | [repo path] |
10.2 監控截圖 / Grafana Dashboard#
[附上關鍵圖表:TPS over time, Response Time percentiles, Resource utilization]
10.3 Raw Data 位置#
| 資料類型 | 位置 |
|---|
| JMeter/k6 結果 | [path/URL] |
| Server Logs | [path] |
| APM Data | [URL] |
📖 使用說明#
各章節填寫指引#
| 章節 | 填寫時機 | 負責人 | 重點說明 |
|---|
| §3 環境 | 測試前 | 效能測試工程師 | 明確標示與生產的差異 |
| §4 場景 | 測試設計時 | 效能測試工程師 | 場景需反映真實使用模式 |
| §5 結果 | 測試完成後 | 效能測試工程師 | 附上原始數據連結 |
| §6 瓶頸 | 結果分析時 | 效能+Dev | 需找到根因 |
| §8 建議 | 分析完成後 | SA/效能 | 量化改善預期 |
| §9 結論 | 最後 | QA Lead | 明確 Go/No-Go 建議 |
💡 範例(以 HRMS 人力資源管理系統為例)#
範例:測試結果#
| 指標 | 負載測試 (2000 VU) | 壓力測試 (5000 VU) | 目標 | 結果 |
|---|
| Total Requests | 1,200,000 | 2,800,000 | — | — |
| P95 Response Time | 185ms | 420ms | < 200ms | ✅ / ⚠️ |
| P99 Response Time | 350ms | 890ms | < 500ms | ✅ / ❌ |
| TPS (avg) | 680 | 1,250 | ≥ 500 | ✅ |
| Error Rate | 0.02% | 1.5% | < 0.1% | ✅ / ❌ |
範例:瓶頸發現#
| # | 瓶頸 | 嚴重度 | 根因 | 建議 |
|---|
| 1 | 請假餘額查詢 P99 > 1s(壓力測試) | High | DB full table scan on leave_balance (missing index) | 新增 ix_leave_balance_employee_year composite index |
| 2 | 月初薪資計算 Memory 達 95% | Medium | 一次載入全部員工至記憶體 | 改為 batch processing (500筆/批) |
| 3 | 5000 VU 時 Error Rate 1.5% | High | DB connection pool exhausted (max=50) | 提高至 100 + 加入 connection timeout |
📌 審閱重點
- 測試環境與生產環境的差異是否明確標示?
- 負載模型是否反映真實使用模式(不只是均勻壓力)?
- 瓶頸分析是否找到根因(非只描述現象)?
- 改善建議是否有量化的預期效果?
- Go/No-Go 結論是否明確?