測試先行的12個好處
J.Timothy King寫了一篇很不錯的文章:“先寫單元測試的12個好處”(Twelve Benefits of Writing Unit Tests First)。個人認為后半部分的文章有點多余。
然而,如果你還是不愿改掉你之前先寫代碼的老毛病,至今還認為個人習慣比先設計好的軟件還重要,那我也只能嘆息了。
J.Timothy King的文章寫的有點弄巧成拙了,雖然單元測試的主張是重要,但是他的普遍接受已經是過去幾年里軟件開發市場上的進步了!
軟件上的難題你是怎樣解決的?開始會先做什么?在解決難題的時候會常問自己要編寫怎樣的代碼才行,首先的重點是我要用什么樣的方法才能解決這個問題。
每個人的思維里總是喜歡有一個假設,假設一些不會發生或是不存在的事情,我們已經有了判斷的結果可還是要做上一些的事情,這種思維對于大部分人來也是難以改變的!
J.Timothy King羅列了12個方法,幫大家接受“測試先行”的觀念:
- 1.測試可證明你的代碼是可以解決問題的
- 2.一面寫單元測試,一面寫實現代碼,這樣感覺更有興趣
- 3.單元測試也可以用于演示代碼
- 4.會讓你在寫代碼之前做好計劃
- 5.它降低了Bug修復的成本
- 6.可以得到一個底層模塊的回歸測試工具
- 7.可以在不改變現有功能的基礎上繼續改進你的設計
- 8.可以用于展示開發的進度
- 9.它真實的為程序員消除了工作上的很多障礙
- 10.單元測試也可以讓你更好的設計
- 11.單元測試比代碼審查的效果還要好
- 12.它比直接寫代碼的效率更高
以上幾條如果你有幾條是認同的,那么至少有一半是正確的吧!對于同業都來說也是一個很大的進步吧。關于單元測試的重要性,個人是沒有別的不同意見。
我一直覺得單元測試的倡導者在個人立場上有點急于求成了,總是希望從業者們會在短時間內改變開發軟件的方式。特別是一些開發人員從來都沒有用過,如果他們還沒有打算把單元測試納為每個開發項目的標準方法,個人覺得他們還不具備這個條件。
過于推崇單元測試也有可以會適得其反!如果真的變成我所說的那樣,就真的是可惜了,關于軟件測試這個問題來說,個人是認為測總是比不測的好。其實他也就是一種正式的隨機測試,Fowler有段話說得非常好:
譯者注:在軟件測試中,除了根據測試樣例和測試說明書進行測試之外,還需要進行隨機測試,主要是根據測試者的經驗對軟件進行功能和性能方面的抽查。
譯者注:Martin Fowler是世界級軟件開發大師,在面向對象分析設計、UML、模式、XP和 重構等領域都有卓越貢獻,現為著名軟件開發咨詢公司 ThoughtWorks的首席科學家。他的 多部著作,如《分析模式》、《UML精粹》、《企業應用架構模式》、《重構:改善既有代 碼的設計》 等,都已經成為膾炙人口的經典。
總的來說還是望大家能夠從新認識單元測試的價值和重要性。希望能改掉之前編寫代碼的老毛病,若能改變一些,可能在以后的工作中會有突飛猛進的效果,當然,也不能夠急于求成,首先還是要先學會慢慢適應!
[原創翻譯,英文, CC Licensed]
來自:http://www.techug.com/twelve-benefits-of-writing-unit-tests-first