TDD のこころ @ OSH2014

10,236 views

Published on

at Open Seminar Hiroshima 2014 (#osh2014)
2014.02.01 (Sat)
http://osh-2014.github.io/

Published in: Technology

TDD のこころ @ OSH2014

  1. 1. TDDの こころ 和田 卓人 (a.k.a id:t-wada or @t_wada) Feb 1, 2014 @ OSH2014
  2. 2. 和田 卓人 id: t-wada @t_wada github: twada
  3. 3. よろしく おねがい します
  4. 4. こんな風景
  5. 5. 荒みきったコード
  6. 6. 疲弊しきった現場
  7. 7. 爆弾処理のようなリリース
  8. 8. なぜこうなっ てしまうのか?
  9. 9. http://blogs.itmedia.co.jp/hiranabe/2012/09/rightwing-and-leftwing-of-agile.html
  10. 10. 左サイドだけでは点は取れない
  11. 11. 誰がシステム を作り続ける のか
  12. 12. TDD とは?
  13. 13. 最後に残った4つの章では、 私が「問答無用で実践すべ き」だと考えているアジャイ ルなソフトウェアエンジニア リングのプラクティスを紹介 していきたい。具体的には次 の4つだ。
  14. 14. アジャイルなプログラミング • 第13章 リファクタリング • 第14章 テスト駆動開発 • 第15章 継続的インテグレー • 第12章 ユニットテスト ション
  15. 15. 絶版!
  16. 16. 「動作するきれいなコード」、ロン・ジェフ リーズのこの簡潔な言葉は、TDD(テスト駆 動開発)の目標である。動作するきれいなコー ドは、あらゆる理由で価値がある。 ─ Kent Beck
  17. 17. 動作する、きれいなコードへ きれい 二つの道がある 汚い (すぐには)動かない 動作する
  18. 18. TDDのサイクル 1. 次の目標を考える 2. その目標を示すテストを書く 3. そのテストを実行して失敗させる(Red) 4. 目的のコードを書く 5. 2で書いたテストを成功させる(Green) 6. テストが通るままでリファクタリングを行 う(Refactor) 7. 1∼6を繰り返す
  19. 19. TDDと黄金の回転 きれい 汚い Refactoring ed R Green (すぐには)動かない 動作する
  20. 20. 絶版!
  21. 21. TDDの こころ
  22. 22. 一つずつ 少しずつ 段を 小さく
  23. 23. 複数を相手 にしない。 ひとりずつ 対処する。
  24. 24. すばやく まわす
  25. 25. 自分が最初の ユーザ
  26. 26. 不安を テストに
  27. 27. 命綱を編む
  28. 28. TDD や Developer Testing に ソフトウェア工学的なメリットはいろい ろあるけれど、最大の理由は工学的なも のではない。最大の理由は心理的なもの •即座にフィードバックを得るため •書いたコードに自信を持つため •これから書くコードに自信を持つため
  29. 29. テストは目的 ではなく手段
  30. 30. TDDの 真の目的
  31. 31. 健康
  32. 32. 変化に対応す るのは健康体 のコード
  33. 33. 変化に対応す るのは健康体 のチーム
  34. 34. 不安の克服 健康の維持
  35. 35. デモ
  36. 36. FizzBuzz問題 Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”. 1から100までの数をプリントするプログラムを書け。ただし3 の倍数のときは数の代わりに「Fizz」と、5の倍数のときは 「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」と プリントすること。 http://tickletux.wordpress.com/2007/01/24/using-fizzbuzz-to-find-developers-who-grok-coding/ http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm
  37. 37. 事例
  38. 38. TDD導入効果(MS, IBM) IBM Driver MS Windows MS MSN MS Visual Studio ソースコードサイズ (KLOC) 41.0 6.0 26.0 155.2 28.5 4.0 23.2 60.3 0.61 0.38 0.24 0.09 15∼20% 25∼35% 15% 20∼25% テストコードサイズ (KLOC) TDDを採用していない類似プロ ジェクトでの欠陥密度を1とし たときの欠陥密度 TDD採用により増加したコード 実装時間(管理者の見積による) 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 © Towersquest, Inc. 2010. all rights reserved.
  39. 39. TDD導入効果(エリクソン他) • TDDを実施した場合に報告されている知見 ‣ 機能テストでの不具合検出数が18%削減された ‣ コーディング(実装)の時間が16%増えた ‣ テストのカバレッジが大きくなった • 被験者を対象としたアンケート ‣ 96%の被験者がデバッグの工数を減らすと感じた ‣ 88%の被験者が要求が洗練されると感じた ‣ 92%の被験者がコードの品質を上げると感じた ‣ 50%の被験者が開発工数を減らすと感じた 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 © Towersquest, Inc. 2010. all rights reserved.
  40. 40. 応用
  41. 41. テストの無いコードが 既にたくさんある
  42. 42. JUnit を マスターしたい
  43. 43. 既にデータの入った データベースがある
  44. 44. 絶版!
  45. 45. Fragile Tests テストが 脆い
  46. 46. Slow Tests テストが遅い
  47. 47. どこまでテストすればよいのか
  48. 48. 現実のシステムはもっと複雑だ
  49. 49. 画面のテストはどうすれば?
  50. 50. 組み込みシステムはどうすれば?
  51. 51. おわりに
  52. 52. TDDと黄金の回転 きれい 汚い Refactoring ed R Green (すぐには)動かない 動作する
  53. 53. 本をたどる
  54. 54. 絶版! 絶版! 絶版! 絶版! 絶版! 絶版! 絶版!
  55. 55. gihyo.jpの連載 『[動画で解説]和田卓人の テスト駆動開発 講座』 http://gihyo.jp/dev/serial/01/tdd/ 全20回すべて動画付き解説 ニコニコ動画でも見れます WEB+DB過去記事の特設サイトと動画も
  56. 56. TDDはスキルです • ひとりから始められる • テストやTDDはスキルです。つまり… • 才能ではなく、習得可能です • 量は質に転化します • 写経!!
  57. 57. テストはプロの嗜み ご清聴ありがとうございました

×