什麼是壓力測試(Stress Testing)?
壓力測試(Stress Testing),顧名思義,就是在「極端或超出正常使用情境」下,測試一個系統、組織或機制是否還能正常運作、維持穩定,或至少可預期地失效。
它的核心精神只有一句話:
👉 不是測「平常好不好」,而是測「最糟的時候會發生什麼事」
為什麼壓力測試會出現在各行各業?
因為所有行業都有三個共通風險:
-
需求暴增
-
資源受限
-
錯誤不可避免
不同產業只是「被測的對象」不一樣。
各行各業中的壓力測試代表什麼?
| 行業 | 壓力測試在測什麼 |
|---|---|
| 金融業 | 在金融危機、利率劇烈波動或大量違約發生時, 銀行或金融機構的資本是否足夠,是否能承受市場衝擊而不倒閉。 |
| 製造業 | 生產設備在長時間滿載或高負荷運轉下, 是否會出現故障、品質下降或產線停擺的情況。 |
| 航空業 | 飛機在極端天氣、零件故障或突發狀況下, 是否仍能維持飛行安全與基本操作能力。 |
| 醫療產業 | 醫院在疫情爆發或大量傷患同時湧入時, 是否有足夠的人力、設備與流程來應對醫療需求。 |
| 科技業 | 系統在流量暴增、資源耗盡或異常行為發生時, 是否仍能穩定運作,或至少能以可預期的方式失效。 |
你會發現:
👉 壓力測試 = 風險管理的一種具體化手段
壓力測試在科技業是做什麼?
在科技業,「壓力測試」通常指的是:
刻意把系統推到接近或超過設計上限,觀察它的行為
常見的測試對象
-
Web / API 服務
-
資料庫
-
分散式系統
-
雲端基礎架構
-
金流 / 核心交易系統
-
身分驗證與登入機制
科技業常見的壓力測試項目
1️⃣ 流量壓力(Load / Spike Test)
-
同時 1,000 / 10,000 / 100,000 人請求
-
秒級流量暴增(例如搶票、秒殺)
2️⃣ 資源耗盡測試
-
CPU / Memory / Disk / Connection 用滿
-
Thread / Connection Pool 耗盡
3️⃣ 長時間穩定性測試(Soak Test)
-
連續跑 24~72 小時
-
是否有 memory leak、效能劣化
4️⃣ 失效與復原測試(Failover)
-
節點掛掉
-
網路中斷
-
DB 主從切換
5️⃣ 極端錯誤輸入
-
非預期參數
-
超長字串
-
非法請求
做壓力測試的優點與缺點
✅ 優點
✔ 提前發現「會出事的地方」
-
比用戶先發現系統瓶頸
-
比駭客先發現弱點
✔ 有數據,而不是感覺
-
不再是「我覺得系統撐得住」
-
而是「在 5 萬 QPS 時開始失敗」
✔ 幫助容量規劃(Capacity Planning)
-
要不要擴機?
-
擴多少才夠?
⚠ 缺點與風險
❌ 成本高
-
測試環境、雲端資源都要錢
-
模擬真實流量不容易
❌ 測試 ≠ 真實世界
-
真實使用者行為比測試複雜
-
有些問題只有「真的出事」才會出現
❌ 做不好反而有風險
-
在正式環境亂跑壓測可能把系統打掛
-
影響真實用戶
為什麼壓力測試會跟「資安」有關?
這一點很多人會忽略,但其實非常關鍵。
因為:
👉 很多資安事件,本質上就是一種「惡意壓力測試」
壓力測試與資安的關聯
1️⃣ DDoS 本身就是極端壓力
-
海量請求
-
刻意耗盡系統資源
👉 如果你沒做過壓力測試
= 你不知道系統在攻擊下會怎麼死
2️⃣ 壓力下的錯誤,常導致資安漏洞
在高壓狀態下,系統可能出現:
-
驗證流程被跳過
-
Timeout 導致邏輯錯誤
-
Race condition
-
錯誤訊息外洩內部資訊
👉 很多漏洞只會在「快撐不住時」出現
3️⃣ 資安防護本身也需要壓力測試
例如:
-
WAF 能撐多少流量?
-
Rate limit 是否有效?
-
Login protection 在暴力嘗試下是否失效?
實際例子:電商搶購 + 資安問題
情境說明
某電商在雙 11 搶購活動:
-
正常流量:2,000 QPS
-
活動瞬間:暴增到 50,000 QPS
❌ 沒做壓力測試的結果
-
API response timeout
-
Session 狀態錯亂
-
驗證流程被跳過
-
攻擊者發現:
-
可以繞過驗證直接下單
-
或重放請求導致超賣
-
👉 效能問題,最後變成資安事件
✅ 有做壓力測試的情況
-
提前發現 DB 是瓶頸
-
加入:
-
Rate limiting
-
Queue / Async 處理
-
熔斷(Circuit Breaker)
-
-
在高壓下仍能:
-
正確驗證
-
有序拒絕請求
-
壓力測試到底在測什麼?
壓力測試不是為了證明系統很強,而是為了知道它什麼時候會崩、怎麼崩
對科技業來說,它同時關係到:
-
系統穩定性
-
使用者體驗
-
商業損失
-
資安風險
留言
張貼留言