寫(xiě)單元測(cè)試有什么好處?

消滅低級(jí)錯(cuò)誤

基本的單元測(cè)試,可以在系統(tǒng)測(cè)試之前,把大部分比較低級(jí)的錯(cuò)誤都消滅掉,減少系統(tǒng)測(cè)試過(guò)程中的問(wèn)題,這樣也就減少了系統(tǒng)測(cè)試中定位和解決問(wèn)題的時(shí)間成本了。

找出潛在的bug

某些類(lèi)型的bug,靠系統(tǒng)測(cè)試是很難找到的。例如一些代碼分支,平時(shí)99%的場(chǎng)景基本上都走不到,但一旦走到了,如果沒(méi)有提前測(cè)試好,那么可能就是一個(gè)災(zāi)難。

上庫(kù)前的保證

加了新代碼,上庫(kù)前跑一把單元測(cè)試,都通過(guò),說(shuō)明代碼可能沒(méi)有影響到之前的邏輯,這樣上庫(kù)也比較放心。如果之前的單元測(cè)試跑不過(guò),那么很有可能新的代碼有潛在的問(wèn)題,趕緊修復(fù)去吧。

重構(gòu)代碼的機(jī)會(huì)

寫(xiě)單元測(cè)試的過(guò)程中,你可能會(huì)順手把一些code重構(gòu)了,為什么?舉例,一些長(zhǎng)得非常像的代碼,如果每次都要寫(xiě)一堆測(cè)試代碼去測(cè)同樣的code,你會(huì)不會(huì)抓狂?不測(cè)吧,覆蓋率又上不去,于是我就會(huì)想方設(shè)法把待測(cè)試的code改得盡量的精簡(jiǎn),重復(fù)代碼減少,這樣覆蓋率上去了,測(cè)試也好測(cè)了,代碼也簡(jiǎn)潔了。如果沒(méi)有單元測(cè)試和覆蓋率的要求的話,坦白說(shuō)可能一來(lái)自己不會(huì)發(fā)現(xiàn)這些重復(fù)的code,另一方面即使發(fā)現(xiàn)了,可能也沒(méi)有太大的動(dòng)力去改進(jìn)。

另外,由于單元測(cè)試中,你需要嘗試去覆蓋一些異常分支,這是系統(tǒng)測(cè)試常常走不到的地方,于是就會(huì)引起你的一些思考,例如這個(gè)異常分支是否真的需要?是否真的會(huì)發(fā)生?對(duì)于一些實(shí)際上絕對(duì)不會(huì)出錯(cuò)的函數(shù),那么我覺(jué)得可能異常分支是沒(méi)必要存在的。

重新review代碼的機(jī)會(huì)

寫(xiě)UT的過(guò)程中,我總是會(huì)好好看哪些代碼執(zhí)行到了,哪些代碼沒(méi)有執(zhí)行到,這其實(shí)也是一個(gè)review自己代碼的機(jī)會(huì),有些時(shí)候,并不是UT本身幫我找到bug,而是回頭review自己代碼的時(shí)候發(fā)現(xiàn)的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容