作為一名測試人員,更多的是執行功能測試、自動化測試、性能測試。而對于白盒測試,了解的不是甚多。主要是因為測試人員對編程語言,代碼的掌握不是很好。在企業中進行白盒測試,也就是我們常常提到的單元測試,通常是由開發人員進行。而隨著測試行業的不斷的發展,白盒測試已經開始由專職的測試人員接手。掌握白盒測試技能也將成為測試人員提升自己的一個途徑。
白盒測試即在了解到代碼的基礎上進行測試,包括但不限于單元測試、接口測試、代碼靜態檢查等等。
傳統的白盒測試主要指全面了解程序內部邏輯結構、對所有邏輯路徑進行測試,方法上主要單元測試。但這一做法成本極高,需要超過1:1的測試開發比。
為什么要做白盒測試呢?
我們從代碼質量**和潛在BUG挖掘這兩層面說明白盒測試的必要性:
確保以下幾點:
(1)確保模塊中所有獨立路徑至少被執行一次。
(2)確保所有合乎邏輯的判斷都要驗證其真假值。
(3)確保所有循環邊界值,及其操作范圍內的內部數據結構的有效性。
盡可能發現由于以下因素引起的BUG:
(4)當我們還未將功能的設計實現及其相關條件控制用代碼來實現時,邏輯錯誤往往會潛入到我們的工作中;
(5)程序邏輯與實際實現的差異而導致的設計錯誤;
(6)程序語法語義錯誤及程序書寫不規范引起的錯誤;
由于我們需要編寫測試用例來確保程序邏輯的完整覆蓋,對程序的了解和認知是先決條件,我們必須詳細理解被測代碼及測試需求。對于大型系統進行全面測試是不可能的,畢竟這非常耗時耗力,我們不可能針對程序中循環的每一條路徑進行測試,這就意味著測試人員需要通過選擇重要的邏輯路徑和數據結構進行切實有效且可行的測試。
在企業中進行白盒測試時,開發人員和測試人員往往會協同工作,例如分析哪一行代碼被實際執行的,哪一行代碼由于邏輯缺失而未被執行,哪些片斷的代碼存在拼寫錯誤等。因此,白盒測試對代碼的能力要求較高,需要對被測試代碼使用的語言及代碼間的邏輯關系有相當程度的認知及駕馭能力。