這幾天在北京參加qcon,覺得scrum和敏捷在這裡提到的比較多,而單元測試作為敏捷方法的乙個重要配套工具,了解和真正進入實施的卻並不是很多。
在我6年的技術工作中,如果問我什麼技術對我的影響最大,我會毫不猶豫的說是單元測試。我比大多數人幸運的地方就是我的第乙份寫**的工作就是編寫單元測試;沒錯,是單元測試,儘管不是tdd的實踐。但至少為我理解tdd打下了乙個堅實的基礎。而6年來,我一直希望能夠有乙個地方可以真正的將這些東西用起來,現在來看暫時算是等到了希望。
我輾轉過很多公司,也曾經提過很多次關於單元測試的問題。然而每每提及的時候會得到支援,但最終實施都不了了之。我一直在思索為什麼?為什麼乙個明明覺得很好的東西大家都嘴上說好而就一直不肯去實踐?下面是我認為的幾個原因:
1、開發成本的高昂。單元測試會加重開發人員的負擔,因為有了更多的**需要編寫。而這種成本的增加在小作坊是乙個很重的負擔,畢竟對於他們生存是第一要務。即使是在大公司,鑑於很多人沒有這樣的經驗,因此培訓和指導如何編寫單元測試也是一塊很大的成本。
2、時間上的緊迫。從乙個軟體專案的角度來看,儘管編碼所佔的時間並不多。但如果是乙個小的軟體作坊形式的公司,其生存的要點在於能夠短平快的做完專案,實施單元測試會延長專案的交付時間。即使是在乙個比較規範性的公司,由於客戶或者內部需求的時間壓力,也很多時候只能選擇放棄採用這樣的過程,畢竟滿足客戶需求才是專案的最終目標。
3、開發人員的素質。為什麼會有這一條,是因為接觸過很多人開發人員,他們僅僅把完成任務當做目標,他們希望的就是盡量以自己熟悉的方式來盡快完成任務,剩下的時間就可以做自己的事了。而這部分人恰恰卻是推動過程中的最大阻力。如何說服他們,採取什麼措施,後面的系列可能會有這方面的思考。
鑑於中國的軟體公司多數還處於小作坊時代以及開發人員的素養還有待提高,我一直比較悲觀的認為,就不說敏捷了,就是單元測試的普及,在中國還有很長的路要走。我也希望自己的這個系列,能夠為這個事情的推動盡自己的綿薄之力!
為什麼需要單元測試
軟體開發的標準過程包括以下幾個階段 需求分析階段 設計階段 實現階段 測試階段 發布 其中測試階段通過人工或者自動手段來執行或測試某個系統的過程,其目的在於檢驗它是否滿足規定的需求或弄清預期結果與實際結果之間的差別。測試過程按4個步驟進行,即單元測試 整合測試 系統測試及發版測試。其中功能測試主要檢...
為什麼需要單元測試
軟體開發的標準過程包括以下幾個階段 需求分析階段 設計階段 實現階段 測試階段 發布 其中測試階段通過人工或者自動手段來執行或測試某個系統的過程,其目的在於檢驗它是否滿足規定的需求或弄清預期結果與實際結果之間的差別。測試過程按4個步驟進行,即單元測試 整合測試 系統測試及發版測試。其中功能測試主要檢...
為什麼要做單元測試
我們幾乎都是以這樣的順序做開發 寫若干 然後執行一下,如果有問題,就做除錯,查出 bug,修改 然後再執行一下,直到沒有問題,然後接著寫 我也一直是這樣做的,到現在也是。以前每次我寫完 200 行 然後就啟動伺服器執行一下,結果發現問題,我會想 天哪,我又要大幹一場 於是從 jsp 開始仔細檢查 直...