這裏邁克·克利夫頓介紹了24種測試模式,從2004年它是一個有用的啓發設計單元測試時。
http://www.codeproject.com/Articles/5772/Advanced-Unit-Test-Part-V-Unit-Test-Patterns
合格/不合格模式
這些模式是你的第一道防線(或攻擊,這取決於你的觀點),以保證良好的代碼。但要注意的是,他們在代碼中告訴你的是欺騙性的。
數據交易模式
數據交易模式是在擁抱開始數據持久性和溝通的問題。有關此主題的更多信息將在「模擬模式」下討論。另外,這些模式有意忽略壓力測試,例如在服務器上加載。這將在「壓力測試模式」下討論。
徵收管理模式
很多的哪些應用程序做管理信息的集合。儘管程序員可以使用各種各樣的集合,但驗證(並因此證明)代碼使用正確的集合非常重要。這會影響順序和約束。
- 收集,整理格局
- 枚舉格局
- 收藏約束模式
- 收集,索引模式
性能模式
單元測試應該不只是關心功能,而且與形式。被測代碼如何有效地執行其功能?多快?它使用多少內存?它是否有效地爲數據檢索交換數據插入?它是否正確地釋放資源?這些都是單元測試範圍內的事情。通過在單元測試中包含性能模式,實現者可以達到目標,從而獲得更好的代碼,更好的應用程序和更快樂的客戶。
過程模式
單元測試旨在測試,那麼,單位...基本的應用程序的功能。可以說,測試過程應該被降級到驗收測試程序,但是我並不贊成這種說法。一個過程只是一個不同類型的單位。使用單元測試器進行測試可以提供與其他單元測試相同的優勢 - 它記錄了過程的工作方式,並且單元測試人員可以通過按順序測試過程來快速識別潛在的用戶界面問題,從而幫助實施人員好。術語「過程」還包括狀態轉換和業務規則,兩者都必須經過驗證。
模擬模式
數據處理,難以測試,因爲他們往往需要預設配置,開放連接和/或在線設備(僅舉幾例)。模擬對象可以通過模擬代碼進行交易的數據庫,Web服務,用戶事件,連接和/或硬件來拯救。 Mock對象還可以建立故障情形是很難在現實世界中繁殖能力 - 有損連接,一個緩慢的服務器,一個失敗的網絡集線器等
- 實體模型對象模式
- 在服務模式模擬
- 誤碼仿真模式
- 組件仿真模式
多線程模式
單元測試多線程應用程序可能是最困難的事情之一,因爲您必須設置一種條件,其本質意圖是異步的,因此是非確定性的。這個主題本身可能是一篇重要的文章,所以我在這裏只提供一個非常通用的模式。此外,爲了正確地執行許多線程的測試中,測試器單元應用程序必須本身執行測試作爲分開的線程,使得單元測試儀沒有被禁用當一個線程處於等待狀態
壓力測試模式
大多數應用程序都在理想的環境下進行試驗 - 程序員使用快速MACHIN幾乎沒有網絡流量,使用小數據集。現實世界是非常不同的。在某些事情完全中斷之前,應用程序可能會遭受降級,並且對用戶反應不佳或出錯。驗證代碼在壓力下的性能的單元測試應該在理想環境中以相同的熱情(如果不是更多)滿足單元測試。
- 大容量數據的壓力測試模式
- 資源,應力測試圖案
- 的加載測試式樣
表示層模式
之一單元測試最具挑戰性的方面是驗證信息在表現層本身以及內部工作中獲得用戶權利應用程序的國王正確設置表示層狀態。通常,表示層與業務對象,數據對象和控制邏輯糾纏在一起。如果您打算對錶示層進行單元測試,那麼您必須認識到,必須清楚分離關注點。部分解決方案涉及開發適當的模型 - 視圖 - 控制器(MVC)架構。 MVC體系結構提供了在使用表示層時開發良好設計實踐的手段。但是,它很容易被濫用。需要一定的紀律來確保你實際上正確地實現了MVC架構,而不僅僅是單純的用詞。