Re: [閒聊] 笑談軟體測試的幾個階段(四) 累積測資

看板Soft_Job作者 (眠月)時間12年前 (2012/03/26 22:49), 編輯推噓6(603)
留言9則, 8人參與, 最新討論串3/4 (看更多)
※ 引述《TonyQ (自立而後立人。)》之銘言: : ----------------------------------- : 本文開始 : ----------------------------------- : 上一篇我們談到程式碼的可測試性,然後你會發現, 看了你經歷這麼多,慢慢靠自己體悟到可測試性的重要,很感動 XD 也很慶幸自己,在還沒有經歷這些之前,就已經被灌輸可測試性的重要。 忘記是在什麼地方看到別人推薦這個影片: 《Unit Testing》http://youtu.be/wEhu57pih5w
GoogleTechTalks 影片開始沒多久,就直接點明重點: 「我沒辦法教你寫測試,只能教你寫出可測試的程式碼。」 因為不可測試的程式碼,交給誰都沒辦法測試(意指單元測試)。 很多人都會面臨一個問題:「我不知道怎麼測我的程式碼,但是我知道怎麼測你的!」 兩份程式碼的差異就在可測試性。 怎麼寫可測試的程式碼,比較難教, 但是怎麼寫不可測試的程式碼,大家應該是一看就懂 XD 《How to Write 3v1L, Untestable Code》http://tinyurl.com/633e97 其實不用看就懂了,大家平常寫出來的就是不可測試的程式碼 XD 我自己第一次看的時候真的很訝異: 「天哪……我從來沒想過我寫的程式碼根本是不可測試的……」 好在作者也有說,他自己也花了好幾年才學會這件事, 要寫出可測試的程式碼是需要學習跟練習的。 文章裡某些點我初看覺得根本沒道理而且違反直覺, 但是後來在工作上就慢慢體會到其價值。 慢慢的,我看一份程式碼好壞的標準改變了, 回頭看到自己以前的程式就覺得很多地方架構設計不良。 我想到我在某處曾經看到一篇 D Programming Language 的文章, 講的是 pure 這個用來修飾函數的關鍵字,描述 pure function 的特點。 pure function 就是這個函數的結果僅跟傳給他的參數有關。 (pure member function 的結果僅跟傳入的參數跟 data member 有關) 後來我想想,那篇《How to Write 3v1L, Untestable Code》, 講的好幾點其實都是在講 non-pure function。 所以後來我領悟一件事,要怎麼寫 testable code? 只要寫程式的時候把一個想法惦念在心上就可以了: 「我的 function 要盡可能的 pure」 只要滿足這條,寫出來的程式碼就很接近 testable co -- To iterate is human, to recurse, divine. 遞迴只應天上有, 凡人該當用迴圈.   L. Peter Deutsch -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 182.235.170.158

03/26 22:50, , 1F
阿勒... 不小心按到送出... 算了 XDDD
03/26 22:50, 1F

03/26 23:23, , 2F
感謝分享,有空再來體會看看
03/26 23:23, 2F

03/26 23:30, , 3F
XD
03/26 23:30, 3F

03/26 23:35, , 4F
同意, 如何寫出 testable 的 code 比較重要
03/26 23:35, 4F

03/27 07:22, , 5F
藉這標題問一下,能不能寫個範例,說明可測試和不可測試的
03/27 07:22, 5F

03/27 07:22, , 6F
差別啊?坊間的書有去找過了,沒找到我想要看的
03/27 07:22, 6F

03/27 08:55, , 7F
http://alturl.com/3k2sw <- 另一篇經驗談
03/27 08:55, 7F

03/27 10:25, , 8F
推~
03/27 10:25, 8F

04/13 00:29, , 9F
push
04/13 00:29, 9F
文章代碼(AID): #1FS87xEJ (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1FS87xEJ (Soft_Job)