我經常可以發現許多封裝得很好並且很容易進行單元測試的區域,但是我也發現很多代碼在單元測試中似乎並不起作用 - 通常是數據訪問和用戶界面。無論我嘗試使用什麼單元測試「技術」,我都傾向於發現,在這些地方,創建功能單元測試不僅需要付出很大的努力,而且這些測試往往非常脆弱,並且測試的效果並不是很好。什麼時候應該停止單元測試
你在什麼時候停下來決定單元測試的好處是不值得的?
我經常可以發現許多封裝得很好並且很容易進行單元測試的區域,但是我也發現很多代碼在單元測試中似乎並不起作用 - 通常是數據訪問和用戶界面。無論我嘗試使用什麼單元測試「技術」,我都傾向於發現,在這些地方,創建功能單元測試不僅需要付出很大的努力,而且這些測試往往非常脆弱,並且測試的效果並不是很好。什麼時候應該停止單元測試
你在什麼時候停下來決定單元測試的好處是不值得的?
當你可以通過做別的事情來提供更好的價值。
當項目計劃中沒有時間,並且花時間尋找測試方法而不是努力實現項目目標時。
如果你有權訪問一些實時數據,你可以使用它來進行單元測試。你也可以使用數據生成器和隨機數據。單元測試只會給你一定程度的信心,它不會在未來造成問題。如果你確信你的測試,你可以停止單元測試
我傾向於只測試模式和數據持久。 測試模型是強制性的。 UI(桌面應用程序,webapps,命令行界面等)很難測試,所以我只在罕見的環境中編寫測試。
我喜歡這個問題的標題。此外,我認爲這是一個騙局 Is there such a thing as excessive unit testing?
我會說,當你已經獲得了可以接受的信心水平。而且,就像我的項目在工作中一樣,我們正處於如此緊迫的時間要求之下,我只能測試代碼的某些部分(不是全部),只是爲了給我一個很好的置信度。
通常我只測試模型和控制器。單元測試很難申請UI,通常我更喜歡手動測試應用程序。
如果創建這些測試的成本比每次手動測試都要花費更多的時間,那麼測試是無用的(容易說,但不能評估...)。
如果您需要切斷測試,請刪除集成或端到端測試。谷歌的Misko Hevery解釋得很好here。
「單元測試給你更多的爆炸爲 您的降壓」
是走出他的文章的最佳報價。
除此之外,當您有適當的代碼覆蓋率並處理代碼的幾個邊緣情況時,那麼這是停止單元測試的好時機。
就數據訪問測試而言,您是否嘗試過使用模擬測試來模擬響應。
我會遵循的基本經驗法則是,如果構建單元測試的努力超過了努力重複人工測試功能。
如果您查看測試人員的Visual Studio團隊版中的測試項目,有一個名爲「手動測試」的項目,它本質上是一個說明文檔,告訴人們如何執行測試並手動通過它。某些事情,比如你提到的UI測試,或者在底層框架或者操作系統或者驅動程序中模糊地奇怪或者錯誤的硬件行爲的代碼,可以被人眼更好地驗證。
如果您正在使用TDD,那麼當測試列表中的所有測試都成功時,您將停止單元測試。
否則,當通過單元測試查找更多錯誤的成本超過通過質量檢查流程查找它們的成本時,您會停止單元測試。並且通過組合所有測試達到可接受的代碼覆蓋率水平。
這會在不久的將來造成更大的延誤。 – 2009-07-16 07:36:24
這就是最後期限和目標發揮作用的時候。因此「當項目計劃沒有時間時」 – NikolaiDante 2009-07-16 07:47:09