2010-07-25 75 views
12

單元測試隨機過程是否有一種理智的方法?例如說你已經爲特定的系統模型編寫了一個模擬器。模擬器根據rngs的種子隨機地工作,因此係統的狀態不能被預測,並且如果可能的話,每次測試都應該在系統試圖測試任何類別的方法之前使系統處於特定狀態。有一個更好的方法嗎?隨機過程的單元測試?

回答

3

以下是涵蓋此主題的nice blog post。基本上你需要將一個受控隨機性注入到被測對象中。

7

兩個明顯的選擇是去除隨機性(即,使用固定的,已知的種子用於單元測試,並從那裏繼續進行),或者以統計測試(即,運行相同的測試案件一百萬次,並驗證平均數和方差(等)符合預期)。後者可能是您的系統的更好測試,但您必須忍受一些虛假警報。

+3

固定種子方法的一個弱點可能是如果你改變你正在測試的算法,使得它對隨機生成器執行更多的調用(或更少的調用),那麼你還必須再次修復單元測試以滿足這個變化。 – Michelrandahl 2015-06-08 17:31:41