這一階段的成果是一些有用的實踐經驗,開發人員可以通過這些實踐預防bug而不是修正bug。這些實踐不應該是某個具體問題的解決方案。在我們線程同步的例子中,可能得到這樣一個實踐:是否有審計范圍機制來獲取和釋放資源?這種實踐(不一定適合所有編程語言)可以指導開發人員用一個類(class)封裝資源, 這樣構造(constructor)函數容易分配和而與析構(destructor) 函數釋放資源。如果遵守這樣的約定, 當程序結束這方法時,不管控制路徑是怎樣的,資源(上述例子中獲得的mutex)總能被釋放。
Bug預防分析是整個bug分析過程的核心。這一階段總結出的實踐可以在更廣泛的范圍內預防潛在的缺陷。由于分析結果的廣泛應用性,分析某個具體問題的投入將很容易被收回。
非常重要的是我們前面所舉的例子是一個隨機性的bug。開發人員由于疏忽而忘記了釋放資源。在代碼實現時,這樣的bug是隨機產生的,但是類似bug產生的幾率卻非常高。所以,盡管這一類bug是隨機的,但仍然可以被預見并防止發生。
(4) 發布經驗
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/