當我編寫測試時,我喜歡使用隨機數來計算。例如 func init() { rand.Seed(time.Now().UnixNano()) } func TestXYZ(t *testing.T) { amount := rand.Intn(100) cnt := 1 + rand.Intn(10) for i := 0; i < cnt; i++ { doSmth(amount) } //more stuff }這當然有一個缺點expected := calcExpected(amount, cnt)因為測試的預期值需要根據隨機值計算。如果這種方法受到批評:它使測試變得不必要的復雜由于隨機性,可重復性較差我認為雖然沒有隨機性,我實際上可以:彌補我的結果,例如測試僅適用于特定值。隨機性證明我的測試是“穩健的”捕獲更多邊緣情況(有爭議,因為邊緣情況通常是特定的,例如 0,1,-1)使用隨機數真的那么糟糕嗎?(我意識到這是一個意見問題,但我對人們的觀點非常感興趣,不介意投反對票)。
1 回答

精慕HU
TA貢獻1845條經驗 獲得超8個贊
您的問題不是特定于 Go 的。這適用于任何語言和任何類型的單元測試。
測試的預期值需要根據隨機值計算。
這是主要問題。如果您的應用程序邏輯稍微復雜,那么當應用程序中的邏輯發生變化時,您也必須在測試中更改相同的邏輯。您必須實施這些更改兩次。
想必每一個都同樣復雜,并且每一個的實現都有些不同,因為如果您只是在測試中復制粘貼或重用應用程序中的代碼來計算預期值,那么他們就會同意并且測試毫無意義。
在單元測試中使用固定值進行測試可以使測試變得簡單并練習代碼。
使用隨機值進行測試,稱為模糊測試。我不是測試模糊方面的專家。使用隨機值進行測試是模糊測試的一方面,但細微差別在于測試隨機值,這些隨機值可能會發現邊緣情況、捕獲錯誤、執行未使用的代碼分支或發現泄漏。
- 1 回答
- 0 關注
- 165 瀏覽
添加回答
舉報
0/150
提交
取消