黑盒測試
-
定義:
- 黑盒測試又稱為功能測試,主要檢測軟件的每一個功能是否能夠正常使用。
- 在測試過程中,將程序看成不能打開的黑盒子,不考慮程序內部結構和特性的基礎上通過程序接口進行測試,檢查程序功能是否按照設計需求以及說明書的規定能夠正常打開使用。
- 不需要了解具體代碼,對測試工程師要求不高。
-
測試用例與依據
- 黑盒測試用例設計方法:基於用戶需求的測試、等價類划分方法、邊界值分析方法、錯誤推測方法、因果圖方法、判定表驅動分析方法、正交實驗法、場景法。
- 依據:用戶需求規格說明書,詳細設計說明書。
-
方法細節
- 等價類划分:是把程序的輸入域划分成若干部分,然后從每個部分中取少數具有代表性數據作為測試用例。
- 邊界值分析法: 是對輸入或輸出的邊界值作為測試用例
- 錯誤推測設計方法:基於經驗和直覺推測程序中所有可能存在的各種錯誤,從而有針對性地設計測試用例的方法。
- 因果圖法:利用圖解法分析輸入的各種組合關系,寫出判定表,從而設計相應的測試用例
- 判定表驅動:是把作為條件的所有輸入的各種組合值以及對應輸出值都列出來形成的表格稱為判定表
- 正交試驗設計:從大量的實驗數據中挑選適量的、有代表性的點來設計測試用例
白盒測試
-
定義:
- 白盒測試也稱為結構測試,主要用於檢測軟件編碼過程中的錯誤。
- 程序員的編程經驗、對編程軟件的掌握程度、工作狀態等因素都會影響到編程質量,導致代碼錯誤。
- 對測試人員要求高:測試人員需要具備一定的編程經驗;白盒測試工程師需要具備廣博的知識面
-
測試用例與依據
- 白盒測試用例設計有如下方法:語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋。
- 依據:代碼結構。
-
方法細節
- 覆蓋:至少執行一次
- 語句覆蓋每條語句至少執行一次。
- 判定覆蓋每個判定的每個分支至少執行一次。
- 條件覆蓋每個判定的每個條件應取到各種可能的值。
- 判定/條件覆蓋同時滿足判定覆蓋條件覆蓋。
- 條件組合覆蓋每個判定中各條件的每一種組合至少出現一次。
- 路徑覆蓋使程序中每一條可能的路徑至少執行一次。
-
靜態白盒測試
- 不需要實際運行被測軟件,而是直接對軟件形式和結構進行分析。
- 靜態白盒測試主要包括:代碼檢查、靜態結構分析、代碼質量度量等。
-
ps:
灰盒測試
- 灰盒測試,是介於白盒測試與黑盒測試之間的一種測試
- 灰盒測試多用於集成測試階段,不僅關注輸出、輸入的正確性,同時也關注程序內部的情況。
- 灰盒測試不像白盒那樣詳細、完整,但又比黑盒測試更關注程序的內部邏輯,常常是通過一些表征性的現象、事件、標志來判斷內部的運行狀態。
辨析
-
簡單辨析:
- 黑盒測試:關注程序的功能是否正確,面向實際用戶;
- 白盒測試:關注程序源代碼的內部邏輯結構是否正確,面向編程人員;
- 灰盒測試:介於白盒測試與黑盒測試之間的一種測試。
-
具體辨析
- 測試目標和依據:
- 黑盒面對的是產品設計,白盒針對的是程序功能的實現,灰盒針對兼而有之,既要考慮產品設計要求,又考慮到功能實現的效果。
- 實現者:
- 黑盒在意的是客戶的角度,白盒測試針對的研發人員。
- 測試模塊顆粒度:
- 白盒在意的是代碼實現層面,而灰盒更加側重模塊之間,顆粒度大於白盒。
- 版本:
- 白盒測試一般發生在debug版本,灰盒大多一般在release版本進行。
- 測試效果:
- 大量的bug在黑盒測試階段測試出來,而白盒和灰盒測試的bug數目相對較少。
- 耗時:
- 在同等時間內,一般白盒和灰盒的耗時長,bug數量少,一般表現為時間產出比較低,很難大范圍普及白盒。
- 黑盒相對bug時間投入產出比較高。
- 入門:
- 黑盒入門較為容易,其次是灰盒,白盒入門門檻教黑盒高很多。
- 測試目標和依據: