單元測試 之 簡介

  單元測試屬於白盒測試,它是全部測試的第一個環節,也是最重要的一個環節。程序員

  它主要是針對一個類的public的方法來作測試。服務器

  編寫單元測試是一種驗證類功能的行爲,和優化設計的重要手段,所以它是程序員的工做。ide


  編寫單元測試的過程memcached

  1. 從測試列表中取出一個測試case工具

  2. 定義一個測試方法單元測試

    public void Test_{MethodName}_{InputParameter}_{Expectation}測試

    {優化

            //準備測試數據設計

            //執行被測試方法對象

            //驗證指望結果  

    }

  3. 準備測試數據

    這個主要包括構建被測試方法的參數,模擬被測試方法調用到的依賴對象,並經過set屬性給被測試對象賦值等

  4. 執行被測試的方法

  5. 驗證指望結果

    對被測試方法進行斷言,對模擬對象的被調用狀況進行斷言


這裏是一個具體例子:

[Test]
        public void Test_Read_SingleKey_Successful()
        {
            MemcachedClient memcachedClient = schoonerStorage.MemcacheClient.CacheClient;


            //準備測試數據          

            string businessKey = "100_1";
            byte[] returnData = new byte[]{1,23,12,1};
            Expect.Call(memcachedClient.Get(businessKey)).Return(returnData);
            memcachedClient.Replay();


            //執行被測試方法          

            byte[] actualData = schoonerStorage.Read(businessKey);


            //驗證指望結果
            Assert.AreEqual(returnData, actualData);
            memcachedClient.VerifyAllExpectations();
        }



單元測試命名規範

  1. 存放測試類的工程命名爲{被測試個工程名}.UnitTest

  2. 測試類保持和被測試工程同樣的目錄結構或包結構,而且命名爲{被測試類}Test

  3. 測試類中的測試用例採用Test_{被測試方法}_{測試點}_{指望的測試結果}的命名方式

    其中{測試點}能夠是參數類型,參數邊界值等等



單元測試注意事項

隔離測試用例的依賴性(目前單元測試工具如xUnit通常會保證這一點)

測試用例要覆蓋到正常工做流程,異常工做流,輸入參數的邊界值等

測試用例的粒度不能太大,若是一個測試用例要驗證的點太多,看能不能拆成更小的用例


測試驅動開發(TDD)

 

 TDD是一種全新的開發模式,其迫使開發人員先編寫單元測試,再編寫產品代碼。其過程以下:

  1. 以特性(feature)爲單位,抽象出該特性涉及的相關類和接口,以及它們之間的依賴關係。

  2. 針對類編寫測試用例(首先在測試類的頭部列出你要測試列表,而後依照必定的優先級來編寫測試用例)

  3. 執行測試用例,用例沒有經過

  4. 編寫產品代碼

  5. 執行測試用例,用例經過

  6. 重複3-5步,完成整個類的測試用例

  7. 對產品代碼或測試用例進行重構消除重複設計,並優化代碼結構

  8. 確保全部測試用例都經過

  9. 提交代碼到產品庫

  10. CI服務器對因此單元測試進行集成測試

  11. 若是有任何測試用例失敗,在開發新的產品代碼以前,優先修復失敗的測試用例


TDD有助於開發人員站在使用者角度來開發產品代碼,始終保持產品代碼的簡潔可用

相關文章
相關標籤/搜索