這是最新一期IBM developworks的專題,摘錄了一些挺有用的建議和概念。高質量代碼中往往缺陷更少!確保高的 Java 代碼質量有兩個步驟:盡早并經(jīng)常地編寫各個層次的測試用例,以及持續(xù)的監(jiān)測質量狀況
什么是軟件質量?
軟件質量(software quality)是與軟件產(chǎn)品滿足明確或隱含需求的能力有關的特征和特性的總和。高質量的軟件通常具備了這樣一些特性:
滿足用戶的需求。
合理的進度、成本、功能關系。
具備擴展性和靈活性,能夠適應一定程度的需求變化。
足夠的強壯、足夠的魯棒,能夠有效的處理例外的情況。
保持成本和性能的平衡。
能夠可持續(xù)的發(fā)展。
什么是軟件測試?
軟件測試是為了發(fā)現(xiàn)程序代碼中的錯誤(Bug)而執(zhí)行程序的過程,是軟件質量保證的重要手段,屬于軟件工程領域。其目的是:
為了尋找錯誤,并盡可能地為修正錯誤提供更多的信息;
為了證明軟件有錯誤,而不是證明軟件沒有錯誤;
軟件測試技術根據(jù)測試原理,又分為:
靜態(tài)測試:不實際運行程序,而是通過代碼檢查的手段來發(fā)現(xiàn)錯誤并評估代碼質量的軟件測試技術;
動態(tài)測試:實際運行程序,并通過觀察程序運行的實際結果來發(fā)現(xiàn)錯誤的軟件測試技術;
什么是測試驅動開發(fā)(TDD)?
測試驅動開發(fā)(Test-Driven
Development)起源于極限編程(XP)開發(fā)過程中所提倡的測試先行實踐。測試先行實踐重視單元測試(Unit
Testing),強調程序員除了編寫代碼之外,還應該編寫單元測試代碼。在開發(fā)的順序上,它改變了以往先編寫代碼,再編寫測試的過程,而采用先編寫測
試,再編寫代碼來滿足測試的方法。這種方法在實際中能夠起到非常好的效果,使得測試工作不僅僅是單純的測試,而成為設計的一部分。
靜態(tài)分析工具
靜態(tài)分析工具承諾無需開發(fā)人員費勁就能找出代碼中已有的缺陷。當然,如果有多年的編寫經(jīng)驗,就會知道這些承諾并不是一定能兌現(xiàn)。盡管如此,好的靜態(tài)分析工具仍然是工具箱中的無價之寶:
FindBugs 是一個靜態(tài)分析工具,它檢查類或者 JAR 文件,將字節(jié)碼與一組缺陷模式進行對比以發(fā)現(xiàn)可能的問題:
PMD 是一個開源的靜態(tài)分析工具,它分析 Java 源代碼,并找出潛在的 bug:
Eclipse 靜態(tài)分析插件,能在構建代碼前便發(fā)現(xiàn)代碼中潛在的問題:
IBM Checking Tool for Bugs Errors and Mistakes,可用于分析并查找 C、C++ 和 Java 代碼中的一些不容易發(fā)現(xiàn)的潛在錯誤: