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