Successfully reported this slideshow.
Your SlideShare is downloading. ×

テスト駆動開発を継続する

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Upcoming SlideShare
BrowserMob-Proxyのお話
BrowserMob-Proxyのお話
Loading in …3
×

Check these out next

1 of 70 Ad

More Related Content

Advertisement

テスト駆動開発を継続する

  1. 1. テスト駆動開発を 継 るす続 2013/1/13 TDDBC Osaka 2013 1月 外伝 @irof
  2. 2. よく言われること 「動いているコードに触っ てはいけない」 変更し辛いのはテストの コストが高いからだ!
  3. 3. テストがないコードは レガシーコードだ! レガシーコードとの戦いは 苛烈を極める
  4. 4. 自動テストがあれば?
  5. 5. 自動テストがあれば、いくら でも自由に変更出来る!
  6. 6. ……本当に?
  7. 7. 少し考える 自動テストがあったら自由に 変更できる? なんか直感に反する。
  8. 8. 少し考える テストってなんだろう?
  9. 9. 少し考える テストってなんだろう? テストの価値って?
  10. 10. 少し考える テストってなんだろう? テストの価値って? テストが最も輝く瞬間ってい つだろう?
  11. 11. テストの価値は 失敗にある
  12. 12. 無傷のテスト 一度も失敗したことがないテスト そんなテストに価値はない (言い過ぎ←弱気)
  13. 13. 使ったことのない道具を いざと言う時に使えるか?
  14. 14. 使ったことのない道具を いざと言う時に使えるか? 否
  15. 15. 幕間
  16. 16. 知らないコードのメンテをす ることになった俺達は……
  17. 17. こんな状況 TDDで開発されたコード
  18. 18. こんな状況 TDDで開発されたコード 既に実装済みのところが変更になった
  19. 19. こんな状況 TDDで開発されたコード 既に実装済みのところが変更になった テストコードがあるから大丈夫!
  20. 20. 新規開発じゃない時のTDD
  21. 21. やったことのないことには あたりまえで対抗する
  22. 22. あたりまえのこと
  23. 23. TDDのあたりまえ やりたいことをテストで表現 テストを通す最小限の実装 テストを維持しつつリファクタリング
  24. 24. 仕様変更でもあたりまえに 変えたいことをテストで表現 テストを通す最小限の変更 テストを維持しつつリファクタリング
  25. 25. でもテストがあるので まずテストを通す 変えたいことをテストで表現 テストを通す最小限の変更 テストを維持しつつリファクタリング
  26. 26. 不安なら確かめる まずテストを通す 次にテストを確かめる 変えたいことをテストで表現 テストを通す最小限の変更 テストを維持しつつリファクタリング
  27. 27. 確かめたいこと おかしなことをしたら止め てくれるか?
  28. 28. テストの価値は 失敗にある
  29. 29. 有益な失敗をさせる 失敗したときのふるまいを観 察する。 「このメッセージで何したら良 いかわかるか?」を問う。
  30. 30. テストを失敗させる 「こうなったら失敗するはず」 バグを埋め込む ミューテーションテスト
  31. 31. 見ときたいこと 失敗してくれる? 失敗する量は最少? 失敗した内容がわかる?
  32. 32. レガシーコード乙 失敗しない 失敗する量は最少? 失敗した内容がわかる?
  33. 33. 脆いの 失敗してくれる? たくさん失敗する 失敗した内容がわかる?
  34. 34. きついの 失敗してくれる? 失敗する量は最少? 失敗が意味不明
  35. 35. たくさん失敗する 複数のテストで同じことを確 認しちゃってる。 一つのテストで複数のことを 確認しちゃってる。
  36. 36. ついで症候群
  37. 37. ついで症候群 「このときってこうだよね?」 自分のわかっていることを全て書い てしまったりする。 名前で表現できないことは assertしない。
  38. 38. 失敗が意味不明
  39. 39. 失敗が意味不明 なんで落ちたかわかんない 謎の依存関係があったとか? でも「落ちた」だけじゃね……
  40. 40. テストにして欲しいこと 失敗してくれる 失敗する量は最少 失敗した内容がわかる
  41. 41. テストの価値は 失敗にある
  42. 42. 幕間
  43. 43. あたりまえのこと①
  44. 44. テストは落ちるもの
  45. 45. なんかよく見るの 「テストが失敗した!」 誰がした 何をした どうしてした 次しないためには
  46. 46. なんかよく見るの 「テストが失敗した!」 誰がした テスト失敗が 何をした 大イベント どうしてした 次しないためには
  47. 47. 背景 バグを直すのには凄い労力が必要 原因の特定 影響範囲を調査 コードの修正 テストの実施 などなど……
  48. 48. 大変だから 「失敗しない」 ようにしよう!
  49. 49. ちゃうねん……。
  50. 50. テストの価値は 失敗にある
  51. 51. テストは落ちるもの だから 失敗をあたりまえに扱う
  52. 52. あたりまえのこと②
  53. 53. 他人の書いたテスト はわかりづらい
  54. 54. 自分の書いたテスト もわかりづらい
  55. 55. 過去に書いたテスト はわかりづらい
  56. 56. 「わかりづらい」で止まるの は、「コードの変更」が特別 行事になってる だからあまりやらない だから失敗する だからやれない
  57. 57. コードの変更が特別行事だ から、「わかりづらい」を特別 なことにしようとする
  58. 58. テストはわかり辛い だから あたりまえに変更する
  59. 59. 幕間
  60. 60. あたりまえのことはあたりまえ にする とくべつなことをあたりまえに する 自信を持ってできるのはいつ もやってること
  61. 61. 変更を躊躇うのは特別行事 だから もしあたりまえのことなら躊躇 いの枷は外せる(かも) だから「あたりまえ」にする
  62. 62. あたりまえのはなし
  63. 63. 特別なことをしない テストが落ちるのも テストが読みにくいのも テストが変わるのも 全部あたりまえのこと
  64. 64. 特別なことと思ってしまうと失 敗する 特別なことには特別な対応 をしがち 特別な対応には特別な不 具合が紛れ込みやすい
  65. 65. あたりまえにする
  66. 66. 緊急時の規律 平時にTDDの規律を守り、緊急時にそ れを守らないとすれば、TDDの効果を 心から信じていないと言うことだ。 信じられないなら、自信もクソもない。
  67. 67. 普段から失敗させて 普段から失敗に対処する 信じるために成功を積む 失敗に対処することで学べる ものは多い
  68. 68. テストの価値は 失敗にある
  69. 69. 失敗を あたりまえに扱おう
  70. 70. おしまい

×