這是最新一期IBM developworks的專題,摘錄了一些挺有用的建議和概念。高質量代碼中往往缺陷更少!確保高的 Java 代碼質量有兩個步驟:盡早并經常地編寫各個層次的測試用例,以及持續的監測質量狀況

什么是軟件質量?

軟件質量(software quality)是與軟件產品滿足明確或隱含需求的能力有關的特征和特性的總和。高質量的軟件通常具備了這樣一些特性:

滿足用戶的需求。
合理的進度、成本、功能關系。
具備擴展性和靈活性,能夠適應一定程度的需求變化。
足夠的強壯、足夠的魯棒,能夠有效的處理例外的情況。
保持成本和性能的平衡。
能夠可持續的發展。

什么是軟件測試?

軟件測試是為了發現程序代碼中的錯誤(Bug)而執行程序的過程,是軟件質量保證的重要手段,屬于軟件工程領域。其目的是:

為了尋找錯誤,并盡可能地為修正錯誤提供更多的信息;
為了證明軟件有錯誤,而不是證明軟件沒有錯誤;
軟件測試技術根據測試原理,又分為:
靜態測試:不實際運行程序,而是通過代碼檢查的手段來發現錯誤并評估代碼質量的軟件測試技術;
動態測試:實際運行程序,并通過觀察程序運行的實際結果來發現錯誤的軟件測試技術;

什么是測試驅動開發(TDD)?

測試驅動開發(Test-Driven Development)起源于極限編程(XP)開發過程中所提倡的測試先行實踐。測試先行實踐重視單元測試(Unit Testing),強調程序員除了編寫代碼之外,還應該編寫單元測試代碼。在開發的順序上,它改變了以往先編寫代碼,再編寫測試的過程,而采用先編寫測 試,再編寫代碼來滿足測試的方法。這種方法在實際中能夠起到非常好的效果,使得測試工作不僅僅是單純的測試,而成為設計的一部分。

靜態分析工具

靜態分析工具承諾無需開發人員費勁就能找出代碼中已有的缺陷。當然,如果有多年的編寫經驗,就會知道這些承諾并不是一定能兌現。盡管如此,好的靜態分析工具仍然是工具箱中的無價之寶:

FindBugs 是一個靜態分析工具,它檢查類或者 JAR 文件,將字節碼與一組缺陷模式進行對比以發現可能的問題:

PMD 是一個開源的靜態分析工具,它分析 Java 源代碼,并找出潛在的 bug:

Eclipse 靜態分析插件,能在構建代碼前便發現代碼中潛在的問題:

IBM Checking Tool for Bugs Errors and Mistakes,可用于分析并查找 C、C++ 和 Java 代碼中的一些不容易發現的潛在錯誤: