[心得] RIP TDD(BY Kent Beck)
前言:
本翻譯有翻譯不精準且有自行增添字眼,請邊參考原文對照著看。
https://www.facebook.com/notes/kent-beck/rip-tdd/750840194948847
=============
TDD是一種用測試來進行開發的模式,所以他的本質其實是為了開發而非測試。
Kent Beck(設計模式的先驅者)在RIP TDD裡舉出了8個你應該使用TDD的理由。
1. Over-engineering(過度設計):
EX:
今天你被授命要做一個會員登入的系統,你老闆只要你串facebook登入,結果你多寫了一個google登入。
這樣就過度設計了,程式碼裡不要擺用不到的東西,會造成後面維護上的困擾。
TDD每一個測試都是需求,而你不應該寫需求以外的程式,TDD力求以最簡單的方法讓測試通過。
2. API feedback(介面回饋):
因為TDD會根據使用者的需求寫測試,當你發現 你的介面不敷使用於測試時,就會去修改介面,這會使你的介面越來越貼近使用者。
3. Logic errors(邏輯錯誤):
TDD裡面不會有任何的邏輯(if else)判斷,所以如果出來的結果不符合就是你的method有問題。
而且TDD一次只會有一個測試失敗,所以一定是你剛增加的code有問題。
4. Documentation(文件):
每個工程師都會跟你說他討厭程式沒有文件,但實際上會寫文件的很少,後面會繼續維護的更少了。
TDD的測試即文件,當你看完測試你就會瞭解這隻程式怎用了。
而且如果需求改變,你的測試也會改變,就會很自然地維護它了。
5. Feeling overwhelmed:
標題無關。
TDD的宗旨是先寫測試在開發,意味著即使沒有程式依然可以先寫測試,
6. Separate interface from implementation thinking(從邏輯來實踐獨立介面):
EX:
今天有個需求是串金流API,但是開發API的人說他要等上線前10天才能給你測試。
TDD遇到這種問題時就會做一個介面,測試時實作這個介面,去模擬API的行為。
這樣你就不用因為別人拖延自己的進度。
7. Agreement(同意)
當你把需求解掉了以後,你要如何說服發出需求的人妳已經把問題解決掉了?
顯然用測試是一個好方法。
8. Anxiety(焦慮)
當老闆問你一切是否OK時,TDD可以不用讓你提心吊膽的說OK。
工商廣告時間XD:
https://skilltree.my/events/mbh
十分推薦,我覺得每個程式設計師都應該聽聽TDD,而91的課淺顯易懂,
絕對讓你滿載而歸。
我本身就是學員之一,聽完有如獲重生的感覺。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.30.31
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1446442345.A.17D.html
推
11/02 13:46, , 1F
11/02 13:46, 1F
→
11/02 13:47, , 2F
11/02 13:47, 2F
根據我寫的經驗,一個unit test case應該10行內可以寫完。
更何況套一句FB流行的話。
你有想過QA測你的程式的心情嗎?沒有,因為你只想到你自己。
沒有測試的情況下,你敢跟QA保証說沒有任何錯誤嗎?
※ 編輯: y2468101216 (118.163.30.31), 11/02/2015 13:57:41
推
11/02 13:58, , 3F
11/02 13:58, 3F
推
11/02 14:06, , 4F
11/02 14:06, 4F
推
11/02 14:09, , 5F
11/02 14:09, 5F
→
11/02 14:09, , 6F
11/02 14:09, 6F
TDD的精神:測試即開發。
→
11/02 14:25, , 7F
11/02 14:25, 7F
→
11/02 14:25, , 8F
11/02 14:25, 8F
→
11/02 14:26, , 9F
11/02 14:26, 9F
→
11/02 14:27, , 10F
11/02 14:27, 10F
下一篇應該是BDD吧,不過BDD也只不過是給PM看的TDD,另外可以推薦新理論嗎?
我打算有空就翻譯這樣。
※ 編輯: y2468101216 (118.163.30.31), 11/02/2015 14:36:10
→
11/02 14:53, , 11F
11/02 14:53, 11F
→
11/02 14:54, , 12F
11/02 14:54, 12F
→
11/02 14:55, , 13F
11/02 14:55, 13F
樓上不夠鄉民,不懂反串XD。
→
11/02 15:37, , 14F
11/02 15:37, 14F
※ 編輯: y2468101216 (118.163.30.31), 11/02/2015 15:53:15
推
11/02 17:07, , 15F
11/02 17:07, 15F
→
11/02 17:07, , 16F
11/02 17:07, 16F
→
11/02 17:08, , 17F
11/02 17:08, 17F
→
11/02 17:09, , 18F
11/02 17:09, 18F
→
11/02 17:10, , 19F
11/02 17:10, 19F
→
11/02 17:10, , 20F
11/02 17:10, 20F
→
11/02 17:11, , 21F
11/02 17:11, 21F
→
11/02 17:43, , 22F
11/02 17:43, 22F
推
11/02 18:10, , 23F
11/02 18:10, 23F
→
11/02 18:10, , 24F
11/02 18:10, 24F
→
11/02 18:10, , 25F
11/02 18:10, 25F
→
11/02 18:11, , 26F
11/02 18:11, 26F
→
11/02 18:32, , 27F
11/02 18:32, 27F
→
11/02 18:32, , 28F
11/02 18:32, 28F
→
11/02 18:32, , 29F
11/02 18:32, 29F
→
11/02 18:54, , 30F
11/02 18:54, 30F
推
11/02 19:08, , 31F
11/02 19:08, 31F
→
11/02 20:22, , 32F
11/02 20:22, 32F
如果是舊程式的話,其實重點寫一寫測試就好了,新程式或重構再用TDD。
再強調一遍TDD是開發模式,只是他利用測試作為開發工具,一魚兩吃。
推
11/02 22:07, , 33F
11/02 22:07, 33F
→
11/02 22:07, , 34F
11/02 22:07, 34F
我都自己TDD,我初期開發起來穩很多,設計起來快很多。
推
11/02 23:00, , 35F
11/02 23:00, 35F
→
11/02 23:01, , 36F
11/02 23:01, 36F
→
11/02 23:02, , 37F
11/02 23:02, 37F
→
11/02 23:02, , 38F
11/02 23:02, 38F
→
11/02 23:04, , 39F
11/02 23:04, 39F
推
11/02 23:35, , 40F
11/02 23:35, 40F
→
11/02 23:36, , 41F
11/02 23:36, 41F
→
11/02 23:37, , 42F
11/02 23:37, 42F
→
11/02 23:37, , 43F
11/02 23:37, 43F
→
11/02 23:37, , 44F
11/02 23:37, 44F
→
11/02 23:39, , 45F
11/02 23:39, 45F
→
11/02 23:40, , 46F
11/02 23:40, 46F
→
11/02 23:41, , 47F
11/02 23:41, 47F
推91。
推
11/03 08:05, , 48F
11/03 08:05, 48F
→
11/03 08:05, , 49F
11/03 08:05, 49F
node.js做起來比php簡單(遠目,因為是新語言的關係,mocha.js用起來硬是比
phpunit好用很多。facebook/webdriver的文件寫的就是比nightwatch.js爛。
我最近應該會fork facebook/webdriver的example,2年前的範例到現在都不能用了= =。
※ 編輯: y2468101216 (118.163.30.31), 11/03/2015 09:22:10
→
11/03 11:00, , 50F
11/03 11:00, 50F
→
11/03 11:00, , 51F
11/03 11:00, 51F
→
11/03 11:48, , 52F
11/03 11:48, 52F
→
11/03 11:49, , 53F
11/03 11:49, 53F
→
11/03 11:49, , 54F
11/03 11:49, 54F
推
11/03 11:50, , 55F
11/03 11:50, 55F
Soft_Job 近期熱門文章
13
51
PTT職涯區 即時熱門文章