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 のこころ

8,507 views

Published on

The spirit of TDD - Oct 22, 2010 at Cybozu Developers Conference

Published in: Technology, Business
  • Be the first to comment

TDD のこころ

  1. 1. TDDの こころ和田 卓人 (a.k.a id:t-wada or @t_wada) Oct 22, 2010 @Cybozu Developers Conference 2010
  2. 2. 自己 紹介
  3. 3. 自己紹介 名前: 和田 卓人 (わだ たくと) ブログ: http://d.hatena.ne.jp/t-wada メール: takuto.wada@towersquest.jp Twitter: http://twitter.com/t_wada タワーズ・クエスト株式会社 取締役社長
  4. 4. これまで書いたもの WEB + DB PRESS vol.35 「実演! テスト駆動開発」 vol.37 「実演! リファクタリング」 vol.42 「REST特集」 vol.49 「DRY特集」 LifeHacks PRESS オープンソースマガジン(リレーコラム) 他いろいろ
  5. 5. gihyo.jpの連載 『[動画で解説]和田卓人の テスト駆動開発 講座』 http://gihyo.jp/dev/serial/01/tdd/ 全20回すべて動画付き解説 ニコニコ動画でも見れます WEB+DB過去記事の特設サイトと動画も
  6. 6. デベロッパーテスティング・ライブ - 自信を持ってコードを書くための 心・技・体 - 【徹底討論】テストなんていらない?! -テストを、どこまでやる べきか? パネルディスカッション:テストを行うこと、テストを続けること
  7. 7. TDD Boot Camp 東京
  8. 8. TDD Boot Camp 北陸
  9. 9. TDD Boot Camp 名古屋
  10. 10. 普段やってること •商用 Rails プラグイン(自社製 品)の開発 •コンサルティング •TDD の啓蒙 •Twitter
  11. 11. プログラマが知るべき97のこと 乞う ご期待 日本人寄稿者 (邦訳オンリー) @omo2009 @m_seki @hyoshiok @miyagawa @hotchpotch @dankogai @yukihiro_matz @t_wada
  12. 12. よろしく おねがい します
  13. 13. TDD の背景
  14. 14. テストの分類 Developer Testing 開発者 開発促進 Customer Testing 顧客 (のロール) 進捗管理 QA Testing 品質保証 担当者 (のロール) 品質保証 「テスト」
  15. 15. 三本柱 ©Artek ( http://www.artek.fi/ )
  16. 16. バージョン管理 テスティング 自動化
  17. 17. バージョン管理
  18. 18. テスティング
  19. 19. 自動化 自働化 XFD
  20. 20. バージョン管理 テスティング 自動化
  21. 21. Developer Testingとは •プログラマの •プログラマによる •プログラマのための •プログラムとしてのテストを書きながら •開発を行っていく手法
  22. 22. TDD とは?
  23. 23. 動作する、きれいなコードへ きれい 汚い (すぐには)動かない 動作する 二つの道がある
  24. 24. TDDのサイクル 1. テストを書き 2. そのテストを実行して失敗させ(Red) 3. 目的のコードを書き 4. 1で書いたテストを成功させ(Green) 5. テストが通るままでリファクタリング を行う(Refactor) 6. 1∼5を繰り返す
  25. 25. きれい 汚い (すぐには)動かない 動作する Red Green Refactoring TDDと黄金の回転
  26. 26. TDDの こころ
  27. 27. 一つずつ 少しずつ
  28. 28. ひとりずつ 対処する。 複数を相手 にしない。
  29. 29. すばやく まわす
  30. 30. 自分が最初の ユーザ
  31. 31. 不安を テストに
  32. 32. 祈るのではダメ
  33. 33. 安心して 飛び込む
  34. 34. 道具にこだわる
  35. 35. テストは目的 ではなく手段
  36. 36. •即座にフィードバックを得るため •書いたコードに自信を持つため •これから書くコードに自信を持つため Developer Testing, TDD に ソフトウェア工学的なメリットはいろいろある けれど、最大の理由は工学的なものではない。 最大の理由は心理的なもの
  37. 37. TDDの 真の目的
  38. 38. 健康
  39. 39. 変化に対応す るのは健康体 のコード
  40. 40. 変化に対応す るのは健康体 のチーム
  41. 41. 不安の克服 健康の維持
  42. 42. 事例
  43. 43. © Towersquest, Inc. 2010. all rights reserved. TDD導入効果(MS, IBM) 45 IBM Driver MS Windows MS MSN MS Visual Studio ソースコードサイズ (KLOC) 41.0 6.0 26.0 155.2 テストコードサイズ (KLOC) 28.5 4.0 23.2 60.3 TDDを採用していない類似プロ ジェクトでの欠陥密度を1とし たときの欠陥密度 0.61 0.38 0.24 0.09 TDD採用により増加したコード 実装時間(管理者の見積による) 15∼20% 25∼35% 15% 25∼20% N. Nagappan, M. E. Maximilien, T. Bhat and L. Williams: Realizing quality improvement through test driven development: results and experiences of four industrial teams, Journal of Empirical Software Engineering, vol. 13, pp. 289-302 (2008)
  44. 44. © Towersquest, Inc. 2010. all rights reserved. TDD導入効果(エリクソン他) • TDDを実施した場合に報告されている知見 ‣ 機能テストでの不具合検出数が18%削減された ‣ コーディング(実装)の時間が16%増えた ‣ テストのカバレッジが大きくなった • 被験者を対象としたアンケート ‣ 96%の被験者がデバッグの工数を減らすと感じた ‣ 88%の被験者が要求が洗練されると感じた ‣ 92%の被験者がコードの品質を上げると感じた ‣ 50%の被験者が開発工数を減らすと感じた 46 Boby George, a and Laurie Williams: A structured experiment of test-driven development, Journal of Information and Software Technology Vol. 46, No. 5, p. 337-342(2004)
  45. 45. おわりに
  46. 46. acts_as_professional
  47. 47. きれい 汚い (すぐには)動かない 動作する Red Green Refactoring TDDと黄金の回転
  48. 48. TDDはスキルです • テストやTDDはスキルです。つまり… • 才能ではなく、習得可能です • 量は質に転化します • 写経!!
  49. 49. ご清聴 ありがとう ございました

×