測試策略

測試策略 (Testing Strategies) #

QA 的角色再定義 #

在專業的開發團隊中,QA (Quality Assurance) 的職責不僅僅是「找 Bug」,他們更像是團隊中的規格定義者與系統描述者。

1. 需求規約定義者 (Specifier) #

QA 協助定義系統在各種狀況下應有的表現,特別是開發者容易忽略的角落:

維度定義範例預期目的
極端情況 (Corner Cases)發生機率低且複雜的組合情境空值 (Null)、極大/極小值、不合法的資料類型確保系統在極限狀態下不崩潰
邊界條件 (Boundary Conditions)範圍切換的臨界數值陣列的 index 0、輸入長度的限制上限、剛好符合條件的門檻值避免「差一錯誤 (Off-by-one)」
異常路徑 (Unhappy-path)偏離正常預期的錯誤流程用戶輸入錯誤、資料庫連線超時、權限不足等失敗情境驗證系統的回復力與錯誤處理

2. 特性描述者 (Characterizer) #

QA 透過探索式測試,觀察並描述系統在真實運行下的實際運作情況,確保系統行為符合業務預期。


自動化測試金字塔 (The Test Pyramid) #

作者依據負責人員、目的與覆蓋範圍,將測試策略分為五個層次。專業的測試策略應呈現金字塔狀:底層數量最多,越往上越精簡。

測試種類一覽表 #

測試種類負責人員目的與定義關鍵指標與備註
單元測試
(Unit Tests)
程式設計師在最低層次上定義系統行為。確保個別函式或類別運作正常。• 覆蓋率應接近 100%
• 這是 TDD 的產物。
元件測試
(Component Tests)
QA業務人員針對封裝後的系統元件進行測試,確保業務規則被正確執行。• 覆蓋率約達 50%
• 重點在於驗收功能。
• 此階段主要測試正常路徑,測試異常路徑意義不大(應在單元測試完成)。
整合測試
(Integration Tests)
系統架構師
首席設計師
聚焦於編排性 (Choreography)。測試各個元件組合在一起時是否協調運作。• 適合較大型系統。
• 通常在此階段進行性能測試。
系統測試
(System Tests)
QA / 系統整合方對「整合完畢的系統」執行自動化測試。• 確保系統構造正確 (Correct Construction)。
• 注意:這不等於確保系統行為正確 (Correct Behavior)。
人工探索式
(Exploratory)
人類 (QA/User)結合人類的直覺與創意,驗證預期行為並挖掘非預期行為。• 機器做不到的測試。
• 探索系統預期之外的缺陷。

策略細節解析 #

為什麼元件測試不測異常路徑? #

在元件測試層級(通常對應到驗收測試),重點在於驗證「業務邏輯是否如預期運作」。至於輸入驗證、錯誤捕捉等底層的異常處理,應該在成本較低、回饋較快的單元測試層級就已經被攔截並驗證完畢。

整合測試 vs. 系統測試 #

這兩者常被混淆,區別在於關注點不同:

類別關注核心範例目標
整合測試 (Integration)通訊與協作資料庫連線是否成功、Microservices 接口格式是否對齊組件間交互正確性
系統測試 (System)整體組裝系統是否能正確啟動、各模組與環境變數是否部署於正確位置軟體交付完整性

專業的測試策略不是「所有測試都混在一起」,而是各司其職。程式設計師顧好單元邏輯,架構師顧好元件連接,QA 顧好業務規則與系統全貌。

不要讓人類去做電腦能做的事(如回歸測試)。人類智慧應用於探索式測試,發現那些自動化腳本想像不到的邊緣問題。