Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Tdd with rspec.md

295 views

Published on

Tdd with rspec

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Tdd with rspec.md

  1. 1. TDD with RSpec ● TDD ● RSpec ● Build a Markdown editor
  2. 2. TDD? Test-Driven Development, 測試驅動開發 ● 開發方法 ● spec (specification 規格)確認的設計活動 ● 快速取得回饋 ● 限定變動在可以掌握的範圍內
  3. 3. TDD 是明確且可執行的規格 ● 把 test 當作 spec ● 可以執行,也能讓人閱讀
  4. 4. TDD 用規格杜絕浪費 ● 等待與搬運的浪費:前後端可以同步開發 ● 不良品的浪費:明確定義什麼是正確的,因為可以被執行,所以可以隨時檢查有 無錯誤產生 ● 動作與加工的浪費:可以很方便的進行小部分功能開發驗證 ● 製造過多或過早的浪費:不會發散開發出規格以外的功能
  5. 5. TDD 兩頂帽子 ● 實現功能的帽子:在測試的輔助下,快速實現其功能。 ● 重構的帽子:在測試的保護下,通過去除多餘的程式,提高程式質量
  6. 6. TDD 三個階段 紅燈、綠燈、重構 Red, Green, Refactor
  7. 7. 在還沒有主要功能之前,先寫單元測試。由於主要功能都還沒有撰寫,自然無法通過 剛剛寫出來的單元測試,所以會亮出紅色的燈號。
  8. 8. 快速實作主要功能,直到可以通過單元測試,讓測試的燈號變成綠色。
  9. 9. 若我們需要更大的彈性,就整理程式碼,消除重覆設計。並保証功能仍然綠燈可運 行。
  10. 10. Why RSpec? We use Ruby on Rails
  11. 11. What is RSpec? Test framework for Ruby
  12. 12. Let's TDD with RSpec 小步快跑!
  13. 13. 99 Bottles https://www.youtube.com/watch?v=Xy-da43E6Lo
  14. 14. 99 Bottles describe "#verse" do end describe "#verse" do context "99" do end end describe "#verse" do context "99" do expected = <<-VERSE 99 bottles of beer on the wall, 99 bottles of beer. Take one down and pass it around, 98 bottles of beer on the wall. VERSE expect(expected).to eq(Bottles.new.verse(99)) end end
  15. 15. 99 Bottles → class Bottles def verse(number) "99 bottles of beer on the wall, 99 bottles of beer.n" "Take one down and pass it around, 98 bottles of beer on the wall.n" end end
  16. 16. 99 Bottles → → (♻ ) → → ...
  17. 17. 99 Bottles 測試 → 開發 → (重構) → 測試 → 開發 ... more... http://bit.ly/2koOVLU
  18. 18. Live Demo
  19. 19. Your turn!
  20. 20. Your turn!
  21. 21. Your turn! ♻
  22. 22. Next: TDD by User Story
  23. 23. 時時勤拂拭,何處惹塵埃 TDD style: 規格明確,杜絕浪費,小步快跑
  24. 24. Bug 退散!

×