讓最終用戶自己來驗證軟件的功能正確。它的作用不僅在于防止破壞用戶數據的bug,而且可以幫助發現你的軟件在新的環境中可能出現的無法預料的問題。新的環境包括不同的,新的硬件,不同的網絡配置,或者各種各樣的其它差異。自動測試可以把你的測試轉移到其它平臺上,確保你的程序在任何地方都能正確運行。
四、工具(Tools)
下面的幾個工具對自動測試非常有用:
JUnit。JUnit是單元測試的鼻祖。其它工具經常在JUnit基礎上創建,因為JUnit提供了單元測試和功能測試都必須用到的兩項功能:斷言檢查和結果報告??梢栽趙ww.junit.org找到JUnit.
HttpUnit。HttpUnit是在JUnit之上構建的測試框架,它支持web應用的黑盒測試和in-container測試。它是功能,你可以用它驗證軟件符合業務需求,在可視的級別符合預期行為。有趣的是,HttpUnit的基礎代碼實際上跟測試沒什么關系。HttpUnit庫的目的是加強HTTP對web應用的訪問,它支持的特征包括狀態管理(cookies)、請求提交、應答解析(解析),以及網絡蜘蛛(web spider)工具包需要的一些特征。HttpUnit還有一個支持容器內測試的類ServletUnit。在JUnit提供的斷言功能和結果報告功能的基礎上,HttpUnit成為了一個測試web應用非常有用的工具??梢栽趙ww.httpunit.org找到HttpUnit。
jUnit. jWebUnit是在HttpUnit上創建的一個輔助工具包,它減少測試web程序需要你寫的代碼。簡單的說,你可以把它當作HttpUnit的宏程序庫,提供到HttpUnit代碼段的快捷方式,簡化web程序測試中的大多數行為。HttpUnit提供相對底層的接口讓你自己定制許多事情。你可能覺得 jWebUnit有用,也可能不,如果用HttpUnit可以解決你的所有問題,jWebUnit也可以。它可能帶來更多的代碼,但你有更好的控制??梢栽趆ttp://jwebunit.sourceforge.net/找到jWebUnit。
StrutsTestCase. StrutsTestCase是為測試Struts應用在JUnit基礎上創建的測試框架。Struts是用Java開發web應用的程序員非常喜歡的模型-試圖-控制器(MVC)平臺,它簡化了數據、表示和邏輯分離的易維護性組件式代碼開發。Struts使web程序容器間(in-container) 的功能測試和單元測試變得復雜,因為它們夾在servlet容器和你的程序之間。這就意味著這個測試框架要認識Struts,能處理Struts的容器間測試。由于不需要知道web程序的內部實現,HttpUnit的黑盒測試仍然工作得很好。然而你無法用HttpUnit做Struts應用的容器間測試,因為HttpUnit要獨立的位于你的程序和servlet容器之間。StrutsTestCase是專為Struts程序的的容器間測試設計的。 StrutsTestCase可以在http://strutstestcase.sourceforge.net/獲得。
五、總結(Conclusion)
如果你同意測試是重要的,而不僅僅是需要的,那么你就會開始自動化你的測試,或者繼續已經使用的自動測試。如果你同意自動測試比手工測試優越,那么在開發程序代碼的同時發展自動測試就是合理的。維護測試代碼只是增加了一點點負擔,但它使你不必擔心程序是否滿足測試代碼的需求。采用了自動測試和程序代碼修改的同時維護測試代碼這兩個原則,你就是采用了測試驅動的開發。程序的可靠性和質量都會得到提高,你的客戶,不管是外面的零售客戶,還是其他部門的同事,可能會感謝你,也可能更少的因為軟件不穩定打擾你,或者兩都都有。最后,寫測試代碼比反復的用鼠標點來點去的測試軟件有趣得多。
現在準備閱讀測試驅動的開發系列的下一篇論文。這篇標題為“業務層測試驅動的開發”(“Test-driven Development for the Business Tier”)的論文將探討服務器端組件測試的細節,包括EJB和普通的Java類。
原文轉自:http://www.uml.org.cn/Test/200911101.asp