《單元測試之道C#版——使用NUnit》測試哪些內容 Right-BICEP

來源:互聯網
上載者:User
文章目錄
  • 1、Right——結果是否正確?
  • 2、B——是否所有的邊界條件都是正確的?
  • 3、I——能查一下反向關聯嗎?
  • 4、C——能用其他手段交叉檢查一下結果嗎?
  • 5、E——你是否可以強制錯誤條件發生?
  • 5、P——是否滿足效能要求?
1、Right——結果是否正確?

       對於測試而言,首要的也是最明顯的任務就是查看所期望的結果是否正確——驗證結果。

       對於許多有大量測試資料的測試,考慮用一個獨立的資料來儲存測試資料,然後讓單元測試讀取該檔案。不過需要多注意一下測試資料。不管是檔案中的還是代碼中的測試資料,都很有可能是不正確的。實際上,經驗告訴我們,測試資料比代碼更有可能是錯的,特別是人工計算的,或者來自原有系統計算結果的測試資料。因此,當測試資料顯示有錯誤發生的時候,你應該在懷疑代碼前線對測試資料檢查兩三遍。

2、B——是否所有的邊界條件都是正確的?

       找邊界條件助記短語CORRECT

       Conformance(一致性)——值是否和預期的一致

       Ordering(順序性)——值是否如應該的那樣,是有序或者無序的。         Range(區間性)——值是否位於合理的最小值和最大值之內

       Reference(依賴性)——代碼是否引用了一些不在代碼本身控制範圍之外的外部資源。

       Existence(存在性)——值是否存在(例如,是否是非null,非0,在一個集合中等等)。

       Cardinality(基數性)——是否恰好有足夠的值?

       Time(相對或者絕對的時間性)——所有事情的發生是否是有序的?是否在正確的時刻?是否恰好及時?

3、I——能查一下反向關聯嗎?

       例如,可以用對結果進行平方的方式來檢查一個計算平方根的函數,然後測試結果是否和原資料很接近。

4、C——能用其他手段交叉檢查一下結果嗎?

       通常而言,計算一個量會有一種以上的演算法。我們可能會基於運行效率或者其他的特性來選擇演算法。那是我們要在產品中使用的;但是在測試用的系統中,可以使用剩下演算法中的一個來交叉測試結果。

       另一種方法就是:使用類本身不同組成部門的資料,並且確信它們能“合起來”。例如,圖書館的資料系統,借出數加上躺在架子上的庫存數應當永遠等於總藏書量。這些就是資料的兩個分開的不同組成部門(借出數和庫存數),它們甚至可以由不同類的對象來彙報它們,但是它們仍然必須遵循上面約束(總數恒定)。

5、E——你是否可以強制錯誤條件發生?

       搞一個無效參數之類的做法是小菜一碟,但是不拔網線要類比網路錯誤就需要一些特殊的技術了,使用Mock對象可以解決此類問題。

       以下是常見的環境方面的因素:

  •   記憶體耗光
  •   磁碟用滿
  •   時鐘出問題
  •   網路不可用或有問題
  •   系統過載
  •   受限的調色盤
  •   顯示解析度過高或者過低
5、P——是否滿足效能要求?

        一個檢查起來會很有益處的部分是效能特性,而不是特性效能本身。然後效能特性卻又一種類似“隨著輸入尺寸慢慢變大,問題慢慢變複雜”的趨勢。

        我們想要的是一個效能特性的快速迴歸測試。很多時候,也許我們發布的第一個版本工作正常,但是第二個版本不知道為何變得很慢。我們不知道為什麼,也不知道改變了什麼,或者什麼時候誰敢的,幾乎一切都是未知的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.