單元測試實踐的主要問題與解決(2)

1.3 單元測試的效益

    
單元測試的效益可以說是立竿見影,並且會推動整個開發過程的改進。

    首先,單元測試可以保證代碼的質量。因爲只有單元測試,能夠全面檢測代碼單元的功能邏輯,排除代碼中大量的、細小的錯誤。
    
    其次,排錯成本最小。如果在編碼階段同時進行單元測試,排錯成本可以忽略不計。但若到了後期,排錯成本可能會增長上百倍,要是產品已經到了用戶手裏,那造成的損失就更難說了。
    
    第三,提升開發效率。
單元測試可以讓程序行爲一目瞭然,也就是程序行爲可視化。什麼叫程序行爲呢?就是什麼輸入下,會執行哪些代碼,會產生什麼輸出。如下圖,黑色的代碼是當前輸入下所執行代碼。
    

    如果我們寫幾行代碼,就可以看到程序的行爲,相當於寫文章時上下文可見,這可以促進我們的開發思維。如果我們的思維有了偏差,也可以及時發現。如果代碼中有了錯誤,也可以隨時排除。

    那麼,是不是整個項目的所有代碼都做了單元測試,才能得到這些效益呢?不是的。80:20規則,在軟件開發過程中也存在。也就是說,80%的代碼錯誤,可能存在於20%的代碼中;80%的編碼、調試成本,可能會消耗在20%的代碼上。這20%,就是算法密集度高的代碼,也就是功能邏輯複雜的代碼。
    

    這些代碼可能只有20%,但是卻可能包含了80%的錯誤,消耗了80%的編碼、調試時間,即使只對這部分代碼進行單元測試,在提升產品的質量和開發效率方面,也會產生立竿見影的效果。

    第四,自動迴歸。如果沒有單元測試,系統測試發現了錯誤,當然要修改代碼,而修改代碼可能引入新的錯誤,又要進行全面的系統測試,這樣就可能陷入循環,這通常也是項目延期的主要原因。

    如果有了單元測試,修改代碼時可以通過迴歸測試馬上檢測是否引入了新的錯誤。所謂迴歸,就是回覆到原來正確的狀態。
    

    正是迴歸測試,使單元測試對整個開發過程的改進都產生積極影響,使項目適應頻繁變化的需求。單元測試是敏捷開發的基礎和核心,反過來說,有了單元測試,開發過程會自動趨於敏捷。單元測試也降低了後期測試的壓力。
    








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章