二、如何做好單元測試?
要做好單元測試,首先必須弄清楚單元測試的對象是代碼,以及代碼的基本特征和產(chǎn)生錯誤的原因,然后必須掌握單元測試的基本方法和主要技術(shù)手段,比如什么是驅(qū)動代碼、樁代碼和 Mock 代碼等。
第一,代碼的基本特征與產(chǎn)生錯誤的原因
開發(fā)語言多種多樣,程序?qū)崿F(xiàn)的功能更是千變?nèi)f化,可以提煉出代碼的基本特征,并總結(jié)出代碼缺陷的主要原因么?答案是肯定,你靜下心來思考時,會發(fā)現(xiàn)其中是有規(guī)律可尋的。
因為無論是開發(fā)語言還是腳本語言,都會有條件分支、循環(huán)處理和函數(shù)調(diào)用等最基本的邏輯控制,如果拋開代碼需要實現(xiàn)的具體業(yè)務(wù)邏輯,僅看代碼結(jié)構(gòu)的話,你會發(fā)現(xiàn)所有的代碼都是在對數(shù)據(jù)進行分類處理,每一次條件判定都是一次分類處理,嵌套的條件判定或者循環(huán)執(zhí)行,也是在做分類處理。
如果有任何一個分類遺漏,都會產(chǎn)生缺陷;如果有任何一個分類錯誤,也會產(chǎn)生缺陷;如果分類正確也沒有遺漏,但是分類時的處理邏輯錯誤,也同樣會產(chǎn)生缺陷。
可見,要做到代碼功能邏輯正確,必須做到分類正確并且完備無遺漏,同時每個分類的處理邏輯必須正確。
在具體的工程實踐中,開發(fā)工程師為了設(shè)計并實現(xiàn)邏輯功能正確的代碼,通常會有如下的考慮過程:
- 如果要實現(xiàn)正確的功能邏輯,會有哪幾種正常的輸入;
- 是否有需要特殊處理的多種邊界輸入;
- 各種潛在非法輸入的可能性以及如何處理。
講到這里,有沒有回想起“等價類”。沒錯,這些開發(fā)工程師眼中的代碼“功能點”,就是單元測試的“等價類”。
軟件測試52講---筆記整理