Soft_Job 板


LINE

大家都選1嗎?我覺得二比較好 Google的guideline是Prefer Realism Over Isolation 詳見 https://abseil.io/resources/swe-book/html/ch13.html TotT有關fakes的討論也提到 Fakes are useful for when you can't use the real implementation in a test https://testing.googleblog.com/2013/06/testing-on-toilet-fake-your-way-to.html 總之能用real implementation的時候就不要用fake ※ 引述《shane87123 (陽光大肥宅)》之銘言: : 先說我對 Unit test 的看法:測試單元(可能是 function)的邏輯是否正確 : 好,進入正題 : 小弟最近剛工作,稍微讀了一下負責的 project 的程式碼後, : 要開始開發 Unit test。 : 現況是,各個 file (.c) dependency 很重, : 常常會有一份 code 內其實呼叫了很多別份 code 的 function, : 舉例來說 : A() { : B(); : C(); : if (check) : D(); : } : 族繁不及備載, : 而我目前設計有兩個方向, : 1. : 將 B() C() D() 全部 fake ,單純去測試 A() 的邏輯是否正確 : 這樣做感覺上會比較單純,一個 test case 只去 test A(), : 而且不需要去 include B() C() D() 的 header, : 這樣一來 build 起來也比較容易,因為 include 那些 header 又會 dependency 到其他檔 : 情況會非常複雜 : 缺點是 coverage 比較差,B() C() D()要額外去寫 test case : 2. : 直接把他們 include 進來,build failed 就 include,直到 build 過為止 : 這樣的好處是不用去實作 B() C() D() 的 fake, : 但就會讓整個 unit test 的 dependency 很重 : 個人偏向1.,畢竟 unit test 就是去測試 function 的邏輯性, : 在其他 function 對測試 function 沒有 side effect 的情況下(如不會改變某變數的值? : 將他們 fake 掉而只是單純的去 test 該 function 而已 : 但我第一次接觸,不太知道何時應該去 fake (或 mock) 一個 function QQ : 我只是有這兩種想法,兩個其實天差地遠XDD : --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 75.172.24.41 (美國)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1667948850.A.92B.html
1F:推 bnd0327: 端看單元如何定義,如果有些類別或函式只是為了服務特定 11/09 08:49
2F:→ bnd0327: 類別或函式,那本質上相當於私有,就可以不用特地mock 11/09 08:50
3F:推 CRPKT: 它主要的考量是維護成本,fake 一樣是需要維護的 11/09 09:42
4F:推 shibin: https://martinfowler.com/bliki/UnitTest.html 11/09 09:55
5F:→ shibin: 這篇也有相關討論,供大家參考 11/09 09:55
6F:推 lovdkkkk: 有可能估狗的員工素質與程式品質搭上測試適合那句估狗的 11/09 10:10
7F:→ lovdkkkk: guideline, 其它公司未必適用 11/09 10:10
確實,其他公司大概沒有Google的monorepo還有CI infra? ※ 編輯: Keyword (75.172.24.41 美國), 11/09/2022 11:10:30
8F:推 lovdkkkk: 如果 e2e 測出問題後能被快速定位就適合,而能快速定位 11/09 12:26
9F:→ lovdkkkk: 有很多可能,可能是工程師很會找問題,或錯誤訊息很清楚 11/09 12:27
10F:→ lovdkkkk: 或者有很完善的 log 追踪規劃等等 11/09 12:28
11F:→ lovdkkkk: 亦即這個 guideline 有效 多半也是搭配其它多個面向的條 11/09 12:30
12F:→ lovdkkkk: 件或其它 guideline,整體湊齊之後有效 11/09 12:30
13F:推 neo5277: 如果都用介面方式用1,再用套件模擬這樣就最單純其他多的 11/09 13:40
14F:→ neo5277: 再做 11/09 13:40
15F:推 CaptainH: fake 太多跟本反應不出真實情況 11/09 18:40
16F:推 s06yji3: Unit test不需要考慮真實情況,而是該單元的實作有沒有 11/09 19:24
17F:→ s06yji3: 問題。 11/09 19:24
18F:推 s0914714: 反應真實情況 那不就相同code跑ut結果可能不一樣 11/09 23:49
19F:推 drajan: 用整合測試 integration test來測 11/10 06:57
20F:推 arhtur945: Unit test 配合後續的e2e 11/10 12:41







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP