第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

在單元測試中使用隨機(jī)數(shù)與硬編碼值

在單元測試中使用隨機(jī)數(shù)與硬編碼值

Go
烙印99 2023-06-26 17:43:45
當(dāng)我編寫測試時,我喜歡使用隨機(jī)數(shù)來計算。例如 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  }這當(dāng)然有一個缺點expected := calcExpected(amount, cnt)因為測試的預(yù)期值需要根據(jù)隨機(jī)值計算。如果這種方法受到批評:它使測試變得不必要的復(fù)雜由于隨機(jī)性,可重復(fù)性較差我認(rèn)為雖然沒有隨機(jī)性,我實際上可以:彌補(bǔ)我的結(jié)果,例如測試僅適用于特定值。隨機(jī)性證明我的測試是“穩(wěn)健的”捕獲更多邊緣情況(有爭議,因為邊緣情況通常是特定的,例如 0,1,-1)使用隨機(jī)數(shù)真的那么糟糕嗎?(我意識到這是一個意見問題,但我對人們的觀點非常感興趣,不介意投反對票)。
查看完整描述

1 回答

?
精慕HU

TA貢獻(xiàn)1845條經(jīng)驗 獲得超8個贊

您的問題不是特定于 Go 的。這適用于任何語言和任何類型的單元測試。

測試的預(yù)期值需要根據(jù)隨機(jī)值計算。

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

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

在單元測試中使用固定值進(jìn)行測試可以使測試變得簡單并練習(xí)代碼。

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


查看完整回答
反對 回復(fù) 2023-06-26
  • 1 回答
  • 0 關(guān)注
  • 201 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號