單元測試------理論篇[3] 單元測試方法
1、 編寫單元測試太花時間了。
我們知道,在開發時越早發現BUG,就能節省更多的時間,降低更多的風險。
下圖表摘自<<實用軟件度量>>(Capers Jones,McGraw-Hill 1991),它列出了準備測試,執行測試,和修改缺陷所花費的時間(以一個功能點為基準),這些數據顯示單元測試的成本效率大約是集成測試的兩倍,是系統測試的三倍(參見條形圖)。
術語:域測試(Field test)意思是在軟件投入使用以后,針對某個領域所作的所有測試活動。
如果你仍然認為在編寫產品代碼的時候,還是沒有時間編寫測試代碼,那么請先考慮下面這些問題:
1)、對于所編寫的代碼,你在調試上面花了多少時間。
2)、對于以前你自認為正確的代碼,而實際上這些代碼卻存在重大的bug,你花了多少時間在重新確認這些代碼上面。
3)、對于一個別人報告的bug,你花了多少時間才找出導致這個bug 的源碼位置。
回答完這些問題,你一定不再以“太花時間”作為拒絕單元測試的借口。
2、 運行測試的時間太長了。
合適的測試是不會讓這種情況發生的。實際上,大多數測試的執行都是非?斓,因此你在幾秒之內就可以運行成千上萬個測試。但是有時某些測試會花費很長的時間。這時,需要把這些耗時的測試和其他測試分開。通?梢悦刻爝\行這種測試一次,或者幾天一次。
3、 測試代碼并不是我的工作。
你的工作就是保證代碼能夠正確的完成你的行為,恰恰相反,測試代碼正是你不可缺少的工作。
4、 我并不清楚代碼的行為,所以也就無從測試。
如果你實在不清楚代碼的行為,那么估計現在并不是編碼的時候。如果你并不知道代碼的行為,那么你又如何知道你編寫的代碼是正確的呢?
5、 但是這些代碼都能夠編譯通過。
文章來源于領測軟件測試網 http://www.anti-gravitydesign.com/