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