Tdd

1,472
-1

Published on

Published in: Technology, Health & Medicine
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,472
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Tdd

  1. 1. TDD テスト駆動開発 Test Dr i ven Devel opment
  2. 2. 自己紹介 おおいしつかさ 1975年生まれ 6月1日付けで入社 webで仕事をはじめて9ヶ月
  3. 3. ht t p: / / w w kaeruspoon. net w.
  4. 4. Amazon Resour ces Rai l sのプラグイン gi t : //gi t hub. com sukasaoi sh /t i /am azonr esour ces. gi t kaer u_keywor d キーワードリンク TRI E
  5. 5. TDD歴 ・半年 ・Test Uni t -> Rspec
  6. 6. TDD テスト駆動開 発 Test Dr i ven Devel opm ent
  7. 7. 今までの開発 コーディング → テスト TDD テスト → コーディング
  8. 8. 注意!!
  9. 9. TDD(Test Dr i ven Devel opm )の ent テストとは、テストのことではない
  10. 10. TDDのテストとは プログラムの 仕様 のこと
  11. 11. 仕様とは何か インターフェース インターフェースとは何か 振る舞い
  12. 12. BDD 振る舞い駆動開発 Behavi or Dr i ven Devel opment
  13. 13. TDDのテストでは振る舞いを書く 関係ないことは 書かない
  14. 14. 内部実装はどうでもいい プログラムの目的は 決められた 仕様( 振る舞い) のとおりに動くこと
  15. 15. TDDのテストは プログラムが仕様通りに 動くことを保証する
  16. 16. TDDのテストは プログラムの品質を (完全には)保証しない
  17. 17. 基本的 な流れ
  18. 18. 3つのフェーズ レッド グリーン リファクタリング
  19. 19. レッド テスト(仕様)を書く ↓ まだ本体はコーディングしてい ないのでテストは失敗する
  20. 20. レッド ひとつのテストの粒度は できるだけ 細かく 小さく
  21. 21. グリーン 本体をコーディングする ↓ テストが成功する
  22. 22. グリーン テストに書かれていないこ とは実装しない テストが通ることだけを目 標に汚くコーディングする 何も考えない
  23. 23. グリーン 「きれいだけど動かないコー ド」に一片の価値もなし 「汚いけど動くコード」を まずは目指す
  24. 24. リファクタリング どんなにコードを変容させ てもテストが通ればOK 保証されている安心感
  25. 25. コミット テストが終わったらコミッ トする コミットできる安心感
  26. 26. 実践
  27. 27. 舞台 Ruby on Rai l s Rspec on Rai l s 機能 GET /user s/(ユーザ名) 指定されたユーザのページを表 示
  28. 28. コントローラの責任 リクエストに対し、適切なレスポンス を返す 適切なビューを選択する ビューが必要なデータをモデルから取 得する
  29. 29. レッド descr i be User sCont r ol l er , “ のshowアクショ ン” do i t “ において、ステータスコード200を返すこ と” do get : show, : user _nam => “ t sukasa” e r esponse. shoul d be_success end end
  30. 30. レッド ひとつのテストの粒度は できるだけ 細かく 小さく
  31. 31. レッド 1) Act i onCont r ol l er : : UnknownAct i on i n ' User sCont r ol l er のshowアクション において、 ステータスコード200を返すこと' No act i on r esponded t o show . /spec/cont r ol l er s/user s_cont r ol l er _spec. r b: 6 : Fi ni shed i n 0. 222733 seconds 1 exam es, 1 f ai l ur e pl
  32. 32. グリーン cl ass User sCont r ol l er < Appl i cat i onCont r ol l er def i ndex end end
  33. 33. グリーン Fi ni shed i n 0. 127367 seconds 1 exam es, 0 f ai l ur es pl リファクタリングは不要
  34. 34. レッド i t “ において、指定されたユーザ名のユーザオ ブジェクトを取得すること” do get : show, : user _nam => “ t sukasa” e assi gns[: user ]. shoul d be_ki nd_of (User ) assi gns[: user ]. shoul d == user s(: t sukasa) end ↓ 失敗
  35. 35. グリーン cl ass User sCont r ol l er < Appl i cat i onCont r ol l er def i ndex @user = User . f i nd(: f i r st , : condi t i ons => [“ nam = e ?” , par am user _nam s[: e]) end end ↓ 成功
  36. 36. リファクタリング cl ass User sCont r ol l er < Appl i cat i onCont r ol l er def i ndex @ user = User . f i nd_by_name(par am user _nam s[: e]) end end ↓ 成功
  37. 37. まとめ
  38. 38. TDDとは ふつうのプログラマのために 用意された開発のための 考え方の指標
  39. 39. TDDの目指すもの 仕様通りに動作する きれいなコード
  40. 40. TDDのすごいところ 実装とインターフェースを わけて考える ことができる
  41. 41. TDDのすごいところ 安心感
  42. 42. TDDのルール レッドの章 1. インターフェースだけに注目しろ 2. 絶対に実装を考えるな 3. 一度にひとつのことだけ考えろ
  43. 43. TDDのルール グリーンの章 1. きれいに書くな 2. よけいなものを絶対に書くな 3. テストが通ることだけを目的にしろ 4. グリーンの状態でコードを書くな
  44. 44. TDDのルール リファクタリングの章 1. 後回しするな 2. やりすぎるな 3. 躊躇なくぶち壊せ
  45. 45. TDDのこつ ・リズム感重要 ・小さく細かくを繰り返す ・一度にひとつずつ
  46. 46. TDDのやりにくいところ ・ビューのテスト  →タグやクラス名が変わっただけで    テストがこける ・pr i vat eメソッドのテスト  →publ i cメソッドを通して確認する    しかない
  47. 47. おしまい
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×