亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在單元測試中使用隨機數與硬編碼值

在單元測試中使用隨機數與硬編碼值

Go
烙印99 2023-06-26 17:43:45
當我編寫測試時,我喜歡使用隨機數來計算。例如 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 的。這適用于任何語言和任何類型的單元測試。

測試的預期值需要根據隨機值計算。

這是主要問題。如果您的應用程序邏輯稍微復雜,那么當應用程序中的邏輯發生變化時,您也必須在測試中更改相同的邏輯。您必須實施這些更改兩次。

想必每一個都同樣復雜,并且每一個的實現都有些不同,因為如果您只是在測試中復制粘貼或重用應用程序中的代碼來計算預期值,那么他們就會同意并且測試毫無意義。

在單元測試中使用固定值進行測試可以使測試變得簡單并練習代碼。

使用隨機值進行測試,稱為模糊測試。我不是測試模糊方面的專家。使用隨機值進行測試是模糊測試的一方面,但細微差別在于測試隨機值,這些隨機值可能會發現邊緣情況、捕獲錯誤、執行未使用的代碼分支或發現泄漏。


查看完整回答
反對 回復 2023-06-26
  • 1 回答
  • 0 關注
  • 165 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號