NO IMAGE

以下內容來自《Microsoft .NET企業級應用架構設計》

Bruce Eckel曾提出一句流行的口號,表明軟體測試的重要性:

若軟體沒有經過測試,那麼可定無法完成工作。

測試會位於不同的層次上,比如用單元測試來判斷軟體的各個獨立單元是否符合功能性需求,用整合測試來判斷軟體能否適應執行環境和基礎設施,以及多個元件能否正常協同工作。最後,驗收測試用來判斷完成的系統是否符合客戶的需求。

單元測試和整合測試屬於開發團隊的工作,進而讓團隊對軟體質量產生信心,測試結果會說明團隊的開發狀態是否朝著良好的方向發展。通常而言這些測試不會覆蓋整個程式碼,程式碼的覆蓋程度和程式碼的質量一般也沒有清晰的關係。

而客戶通常對但單元測試和整合測試的結果並不在意,他們所關心的僅僅只是驗收測試而已。驗收測試著眼於完成的系統,屬於客戶和開發團隊合同的一部分。驗收測試可以由客戶書寫,也可以由負責專案的團隊和客戶協助完成。在驗收測試中你會發現如下的核對清單:

1. 使用如下資料(….)插入一個客戶

2. 使用現有的ID修改該使用者

3. 觀察系統反應,得到期望的結果

另一個驗收測試結果如下:

1. 在批處理過程中,關閉應用程式伺服器的某個節點

2. 觀察系統反應以及事務的結果

若驗收測試順利通過,那麼專案也就宣告結束,產品也宣告成功。

 

單元測試實戰

我們推薦用一個專門的程式集包含測試程式碼。此外,對每個類庫都要提供測試。最好的實踐是對程式集中每個xxx類,都有一個對應的xxxTestCase類用來測試。

我們可以使用偽物件(Fake)消除依賴

例子:public class FakeLogger: ILogger
   {

Public void Log(string message)
{

Return;

}

}


軟體可以正常工作的概率與它所需的程式碼行數成反比。

Bug出現的機率與正在檢視該軟體地人數及這些人的重要程度成正比。

任何人都可以寫出計算機能夠理解的程式碼,而只有優秀的程式設計師才能寫出別人可以理解的程式碼。    –Martin Fowler