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