EZTABLE IDEAS 是 EZTABLE 成員揮灑熱情和大家分享專業及創意的網誌。 EZTABLE 讓消費者 24 小時都可以在網路訂位全台灣最優質的餐廳,同時提供餐廳經營者 e 化的訂位管理系統 (雲端、iPad、智慧型手機)

【Workshop】TDD介紹 (Test-Driven Development, 測試驅動開發)

七月 28 2014 Published by under Engineering

【Workshop@140725】

Topic: TDD介紹 (Test-Driven Development,測試驅動開發)
Speaker: Andy Huang
slideshare: TDD

 

  

相信許多developer聽過、嘗試過所謂的TDD,

前陣子一篇針對 TDD 的文章︰TDD is dead. Long live testing. 在開發者中又引起不少的討論,

但至於何謂TDD?,TDD的重要性又是什麼呢?

今天請到EZTABLE的Andy來為我們介紹  🙂 

 Photo 25-07-2014 14 40 45

 

 

 TDD= Test-driven development

投影片1

  • TDD和寫測試是兩回事 ,TDD是把這個測試的階段,拉在開發前做一個調整,形成紅燈綠燈的概念(紅燈:失敗,綠燈:通過)。

 

 

投影片2

流程

  • 先寫測試→檢查測試有無失敗→再寫code→跑所有的測試→最後清乾淨code。

 

 

 投影片3

The Three Laws of TDD

TDD 若要上手有簡單的三原則可以遵循

1.除非它是讓紅燈變綠燈,否則你不允許寫任何 production code(你沒有先寫測試的話,你不能先寫production code)。
2.你先寫測試,你也不能先寫太多,因為一存檔發現fail,就代表你要寫production code。
3.確保寫測試只針對一個點,所以一有fail,就代表你要寫production code, 開始寫Implementation時,只要Implementation讓紅燈變綠燈,那你就應該繼續回去寫測試。

 

 

投影片4

 

 

 

投影片7

TDD Sucks–對TDD的嘲諷

  • 當我完成主要功能後,我根本沒有足夠的時間來寫測試。
  • 測試是不是我的工作,因為它是QA的工作 。
  • Unit tests不需要,因為我的code非常完美。
  • 我不喜歡TDD,因為我很享受花我時間在debug上!(XDDD)

 

 

投影片8

  • 所以,所以你會花在更多的時間在debug上,因為你很容易寫A壞B!

 

 

Photo 25-07-2014 14 47 58

投影片9

Benefits好處!

  • 我們通常寫一個程式,然後馬上測試它,都是餵一樣的資料,看它結果對不對,TDD把這個自動化了,因為它always幫你自動測,所以增加效率。
  • Code質量──當然因為TDD所有的code都是有經過測試的。
  • Over-engineering (YAGNI)── 一次只做一件事情,做需要的部分!Implement後只需要pass綠燈,所以它可以避免工程師先想很多,然後加了general的東西,結果最後用不到。(YAGNI(You Ain’t Gonna Need It)意思是我們不應該為程式碼加入尚未用到的功能)
  • 更好的界面 ── 你先寫測試的話,是用client的角度去寫module,因為你是個user,所以Implementation都還沒做,而是(憑空)想像我是個user該如何用測試code,所以能幫你寫出更好的Interface。
  • Documentation──測試它的input、output,如果它寫的好的話,你很容易看出每個module,它的input、output寫了什麼,所以它可以順便當Documentation。
  • 測試要更好測話,需要更多的modeule更多的彈性,因為你先寫測試,所以它讓你自然而然有這樣的特性。

 

 

投影片10

Best Practices

  • 要寫的非常的小跑得夠快,因為我們每次都要一直跑它。
  • 每個uni test,不需要測Implementation的detail因為它可能會掛主要程式,只要測結果就對了。
  •  test code、production code是同個等級,你需要好好maintain、善待。
  • 低耦合使每個單位有效地獨立進行測試。 
  • Less Mock & Stub

  

 

 投影片11 

Anti-Pattern

  • Avoid dependencies between test cases. –每個case test都需要獨立,這樣比較容易debug。
  • Do not test implementation details.
  • Avoid slow running tests.
 
 
投影片12
  •  可Google搜尋"TDD is dead"相關文章閱讀。

 

 

當然TDD並不是完美,在不同類型的開發上可能並不試用,

總之,大家可以動手嘗試看看,感受一下紅燈轉綠燈的快感 😛

 

 

 


 

如果您喜歡這篇文章可以點擊「讚」&「分享」

並歡迎訂閱EZTABLE IDEAS!  😀

如果你是學習力強,而且經驗值高的人才,
歡迎一起加入我們 EZTABLE!! 

EZTABLE at Linkedin-Senior Mobile Software Engineer

 


Related Posts Plugin for WordPress, Blogger...

No responses yet

發表迴響