軟件工程師必知的12個單元測試技巧[1] 單元測試工具
單元測試是敏捷軟件開發的一個重要組成部分。這種方法最初由Kent Beck引入,現在已經深入人心在很多企業系統中使用。單元測試可以幫助開發人員降低漏洞數量,減少花費在調試上的時間,有助于開發更健壯更穩定的軟件。
在本篇文章中我們將介紹軟件工程師都可以使用的12個單元測試技巧,適用于任何編程語言和編程環境。
1、使用單元測試降低風險
新手可能會問“為什么我應該編寫測試代碼?”的確,很多人會這樣想:測試工作不是應該由進行驗收工作的測試人員來完成嗎?這種想法在現代軟件工程學中已經沒有立足之地。軟件團隊的目標是開發高質量的軟件。無論是個人用戶,還是企業用戶,已經無法接受上世紀80年代和90年代充滿漏洞的軟件。
現在你可以使用豐富的類庫資源、Web服務和支持重構及單元測試的綜合開發環境,在軟件中再出現漏洞就沒有任何借口可找了。
單元測試背后的思想是,為每一個軟件單元、模塊和構建創建一個測試代碼。單元測試讓軟件持續測試變得很簡單;與手動測試不同,你可以輕松的重復執行單元測試。
隨著你的軟件規模變大,單元測試部分也隨之變大。每一個測試都是系統正常運行的保障。代碼中存在漏洞就意味著軟件具有潛在風險。通過利用一系列單元測試,開發者可以大大降低漏洞的數量,降低未經實際運行驗證的程序的風險。
2、為每一個主要構件編寫一個測試用例
當人們開始使用單元測試時,常常會先問“我應該編寫什么測試?” 軟件測試
人們最初的想法可能是要編寫大量的功能測試,也就是對系統不同的功能進行測試驗證。其實這種想法這是不對的。正確的做法應該是為每一個主要構件創建一個測試用例。
測試的重點應該是一個構件。在每一個構件內找到它的所有接口,也就是這個組件對外公開的方法集。然后你才應該為每一個公開的方法編寫一個測試。
3、創建抽象測試用例和添加測試工具
無論任何程序,都有一些共性的東西需要你對其進行測試。那么你首先應該為你的語言尋找一個單元測試。
舉個例子來說,很多Java開發者使用Junit來進行單元測試,它是一個簡單但強大的測試框架。它具有一個TestCase類,是所有測試的基類。
在你的開發環境中增加方便的方法和可用的工具。這樣所有你的測試用例可以具有共同的基礎構架,維護起來就非常容易。
4、編寫敏捷測試
測試工作非常耗時,因此請確保你的測試是有效的。好的測試應該針對每個模塊的核心功能,而不是事無巨細挨個測試。
舉個例子來說,你沒有理由來為Java Bean的Setter和getter方法來單獨編寫測試代碼,因為它們肯定會測試中被涉及到的。
相反,你應該針對軟件系統的行為來編寫測試代碼。你不需要面面俱到;為現在想到的東西先創建測試,然后想到別的再回來增加更多測試。
5、為每一個測試創造干凈的環境
軟件工程師們總是很在乎效率,視效率如生命。因此如果你告訴他們,每一個測試需要單獨創建的話,他們會認為比較浪費時間。
然而這一點是非常重要的,如果一個測試因為使用了一些其它測試的老數據而失敗,顯然這是你最不想發生的事情。因此請確保每一個測試被正確的創建,而不要擔心所謂的效率。
如果你所有的測試具有一個共同的環境,它并不隨著測試的運行而改變,那么你可以在你的測試基類中增加一個靜態的創建區。
6、使用模擬對象(Mock Objects)進行有效測試
建立測試并不總是一件簡單的事情,在有些時候你的第一感覺往往是沒有辦法進行測試。
舉個例子來說,如果在你的程序中使用了Amazon Web服務,如何在不影響真實系統的前提下在測試中模仿它呢?
其實有很多方法可用。你可以創建一些虛假的數據,然后在測試中使用它們。在有用戶的系統中,可以創建一系列專門用于測試的賬號。
對一個生產系統進行測試是一件非常危險的做法:如果發生點什么錯誤,你可能會誤刪真正的用戶數據。一個可行的辦法就是使用假數據,又叫做模擬對象(stubs or mock objects)。
文章來源于領測軟件測試網 http://www.kjueaiud.com/