文章目錄
- 一、白盒測試(結構測試)
- 二、黑盒測試(功能測試)
- 三、灰盒測試
- 四、其他測試類型
- 五、覆蓋準則對比
- 六、應用場景
軟件測試主要根據測試目標、技術手段和覆蓋準則進行分類。分為白盒測試、黑盒測試、灰盒測試及其他補充類型
一、白盒測試(結構測試)
基于代碼內部邏輯設計測試用例,關注程序結構和覆蓋準則:
- 語句覆蓋
確保每條代碼語句至少執行一次。 - 分支(判定)覆蓋
覆蓋代碼中所有分支(如if-else
的所有可能結果)。 - 條件覆蓋
覆蓋每個邏輯條件(如a>0 && b<5
中的每個子條件)。 - 條件組合覆蓋
覆蓋所有條件組合(如a>0
與b<5
的真假組合)。 - 路徑覆蓋
覆蓋代碼中所有可能的執行路徑(復雜度高,常用于關鍵模塊)。 - MC/DC(修正條件/判定覆蓋)
航空領域常用,確保每個條件能獨立影響判定結果。
二、黑盒測試(功能測試)
基于需求規格設計用例,不關注代碼實現:
- 等價類劃分
將輸入劃分為有效/無效類,每類選代表性用例。 - 邊界值分析
針對輸入邊界(如最小值、最大值)設計用例。 - 決策表測試
基于條件組合生成表格,覆蓋所有規則。 - 狀態轉換測試
針對系統狀態遷移(如登錄失敗后的鎖定機制)。 - 因果圖分析
將輸入條件與輸出結果關聯,生成邏輯組合。 - 錯誤猜測法
基于經驗猜測易錯場景(如空輸入、超長字符串)。
三、灰盒測試
結合白盒與黑盒,部分了解內部邏輯:
- 基于模型的測試
使用狀態機或流程圖生成用例。 - 接口測試
驗證模塊間接口數據傳遞(如API參數校驗)。 - 日志與監控分析
結合日志數據定位代碼問題。
四、其他測試類型
- 組合測試
- Pairwise(配對測試):覆蓋參數兩兩組合,減少用例數量。
- 基于經驗的測試
- 探索式測試:動態設計用例,依賴測試者直覺。
- 安全測試
- 模糊測試(Fuzzing):輸入隨機/異常數據檢測漏洞。
- 自動化測試
- 數據驅動測試:分離測試邏輯與數據。
- 關鍵字驅動測試:用自然語言描述測試步驟。
五、覆蓋準則對比
覆蓋類型 | 描述 | 強度排序(低→高) |
---|---|---|
語句覆蓋 | 每行代碼至少執行一次 | 最低 |
分支覆蓋 | 每個分支(如if結果)覆蓋 | 高于語句 |
條件覆蓋 | 每個子條件(如a>0)覆蓋 | 可能低于分支覆蓋 |
條件組合覆蓋 | 所有子條件組合覆蓋 | 高(組合爆炸問題) |
路徑覆蓋 | 所有執行路徑覆蓋 | 最高(但通常不可行) |
MC/DC | 條件獨立影響判定結果 | 航空標準,高于分支覆蓋 |
六、應用場景
- 白盒測試:單元測試、代碼審查、高可靠性系統(如航空航天)。
- 黑盒測試:功能驗證、用戶場景模擬、驗收測試。
- 灰盒測試:集成測試、性能優化、接口驗證。
根據項目需求選擇合適的方法,通常需要組合多種策略以達到效率與覆蓋率的平衡。