根據各項目研究(1),單元測試發現缺陷(平均30%)的15..50%。這不會使他們成爲你的武器庫中最糟糕的bug發現者,但也不是銀彈。有是沒有銀彈,任何好的QA策略都是由多種技巧組成。
是自動化測試更多的時候運行,因此它會更早發現缺陷和減少這些巨大的總成本 - 這是測試自動化的真正價值。
明智地投資您的資源並首先選擇低掛果。
我發現自動化測試最容易編寫和維護小代碼單元 - 獨立的函數和類。最終用戶功能更容易手動測試 - 一個好的測試人員會發現超出所需測試的許多古怪事物。不要把它們放在對方身上,你們都需要。
開發與測試人員開發人員是在測試自己的代碼不好是衆所周知的:原因是心理,技術和持續至少不經濟 - 測試通常比開發商便宜。但開發人員可以儘自己的一份力,並使測試更容易。 TDD使得測試成爲程序構建的一個固有部分,而不僅僅是事後的考慮,這就是TDD的真正價值。
關於測試的另一個有趣的觀點:100%的覆蓋率沒有意義。統計上,錯誤遵循80:20的規則 - 大部分錯誤都是在小部分代碼中找到的。 Some studies表明這更加尖銳 - 測試應該關注bug出現的地方。
(1)編程生產力Jones 1986 u.a.引自Code Complete,2nd。編輯。但正如其他人所說,單元測試只是測試的一部分,集成,迴歸和系統測試也可以部分自動化。
我對結果的解釋是:「許多眼睛」具有最佳的缺陷檢測能力,但只有當你有一些正式的過程才能使它們看起來真實。
單元測試可以提供一種代碼形式的文檔,如果代碼作者以外的其他人員需要修改bug或添加新功能/增強功能,那麼這些代碼可能非常有用。開發人員應該測試他們的代碼,但這些測試不應該是唯一的,IMO。 – 2009-03-13 20:54:31