Successfully reported this slideshow.

TDDはじめる前に

22

Share

Upcoming SlideShare
Hey It's Not My TDD!
Hey It's Not My TDD!
Loading in …3
×
1 of 69
1 of 69

TDDはじめる前に

22

Share

Download to read offline

Description

アジャイルひよこクラブ(2016.06.24)でのテスト駆動開発についての発表資料です。未経験者~初心者向けになっています。

Transcript

  1. 1. TDD はじめる前に アジャイルひよこクラブ 2016.06.24 安井力 / やっとむ
  2. 2. 安井 力 / やっとむ プログラマー Java Python Ruby JavaScript テスト駆動開発 アジャイルコーチ ワークショップ 現場導入 技術支援 認定スクラムマスター コンサルタント モデリング ユーザーストーリー twitter:@yattom facebook:yattom github:yattom bitbucket:yattom
  3. 3. テスト書いてますか?
  4. 4. • テストしてる? • テスト自動化してる? • TDDしてる?
  5. 5. TDDしたい?
  6. 6. • TDD • Test Driven Development • テスト駆動開発
  7. 7. • 動作するきれいなコード
  8. 8. • 動作する
  9. 9. • きれい
  10. 10. 動作する、きれいなコード きれい 汚い (すぐには)動かない 動作する
  11. 11. テスト駆動開発
  12. 12. • 1. テストを書く • 2. 実行して失敗させる • 3. テストが通る実装を書く • 4. テストを成功させる • 5. テストが通る状態のままリファクタリングする
  13. 13. 動作する、きれいなコードへ きれい 汚い (すぐには)動かない 動作する 二つの道がある
  14. 14. TDDでサイクルにする きれい 汚い (すぐには)動かない 動作する
  15. 15. きれい 汚い (すぐには)動かない 動作する Green Refactoring TDDと黄金の回転
  16. 16. • 自信と安心
  17. 17. テストファースト
  18. 18. テスト駆動開発の効果 IBM ドライバ Microsoft Windows Microsoft MSN Microsoft VisualStudio チーム人数 9 6 5-7 7 コード量(KLOC) 41.0 6.0 26.0 155.2 開発規模(人月) 119 24 46 20 欠陥数 (TDD未使用に 対する) 61% 38% 24% 9% 開発時間の増加 (管理者の見積) 15~20% 25~35% 15% 20~25% Nachiappan Nagappan, E. Michael Maximilien, Thirumalesh Bhat, Laurie Williams “Realizing quality improvement through test driven development: results and experiences of four industrial teams” 2008 http://research.microsoft.com/en-us/groups/ese/nagappan_tdd.pdf
  19. 19. 保守性への影響 生産性 (行数/工数) 保守性 ※1 (工数/変更件数) プロジェクトA (非TDD) 2.3 84 プロジェクトB (非TDD) 2.5 80 プロジェクトC (TDD) 1.8 59 ※1 保守期間(260日間)中、変更要求の対応にかかった工数の平均 "The effectiveness of test-driven development: an industrial case study" (Tomazˇ Dogsˇa • David Baticˇ , Software Qual J (2011))
  20. 20. TDDの効果の研究をまとめた研究 "Effects of Test-Driven Development: A Comparative Analysis of Empirical Studies" Simo Makinen and Jurgen Munch, 2013 • 既存の実証研究を調査し、10の内部・外部品質評価項目で、各 研究の結論を整理した • TDDは欠陥の作り込み(introduced defects)を減らし、メンテナ ンスしやすいコードを産む • TDDで実装されたコードは、部分的に、サイズが小さく、複雑 度が低い場合がある • メンテナンスがしやすくなるものの、初期開発では時間がかか る
  21. 21. TDDの効果の研究をまとめた研究 やっとむ TDD 検索
  22. 22. テスト駆動開発
  23. 23. • TDDのテストはテストではない!! …のか?
  24. 24. http://blog.cleancoder.com/uncle-bob/2014/12/17/TheCyclesOfTDD.html
  25. 25. • テスティング Testing • チェッキング Checking
  26. 26. アジャイルテスト 高品質を追求するアジャイルチームにおけるテストの視点 増田聡 Developer Summit 2010 http://www.slideshare.net/satoshimasuda/ss-3241717
  27. 27. • 品質のためのテスト-ユニットテスト-TDDのテスト
  28. 28. JaSST’11 Tokyo 新しいTDDアプローチ http://togetter.com/li/93719
  29. 29. テスト自動化のメリット • 回帰テスト • 追加/変更が容易、安心 • 品質管理しやすい、品質向上 • 機能横断と多能工 • 依存性排除 • 他にもたくさん!
  30. 30. • システムテスト自動化標準ガイド
  31. 31. • ソフトウェアテスト技法ドリル
  32. 32. テスト書きたい?
  33. 33. • TDD×テスト自動化
  34. 34. • TDD×BDD(振る舞い駆動開発)
  35. 35. 品質の作り込み
  36. 36. 品質の作り込み
  37. 37. • テスト駆動開発≠テスト自動化+開発 • 両方欲しい!
  38. 38. • TDDしていれば自動テストが書ける • 試験性 • ISO/IEC 9126 ソフトウェアの品質特性
  39. 39. TDDしてる? • NO!
  40. 40. IPA 情報処理推進機構 アジャイル型開発におけるプラクティス活用事例調査 http://www.ipa.go.jp/sec/softwareengineering/reports/20130319.html
  41. 41. A Comparative Case Study on the Impact of Test-Driven Development on Program Design and Test Coverage Maria Siniaalto and Pekka Abrahamsson, ESEM, 2007 http://se.inf.ethz.ch/old/teaching/2010-S/0276/slides/pletikosa.pdf 結合度: TDDが悪く見えるけど微妙 凝集度: TDDの経験が足らない テストカバレッジ: TDDは非常に良い
  42. 42. TDDの効果の研究をまとめた研究 やっとむ TDD 検索 良い影響より 影響なしのほうが多い TDDは無意味
  43. 43. Jim Coplien (ジム・コプリン) 『組織パターン』著者 スクラムの成立に影響
  44. 44. https://www.facebook.com/yattom/posts/731467806867197 私がFacebookにTDDのことを書いた ら すごい爆撃を食らった TDDは悪い設計を生 む そういう研究論文が 多数ある TDDより優れた やり方がある 人にTDD勧めるとか お前ふざけんな
  45. 45. DHH(デイヴィッド・ハイネマイヤー・ハンソ ン) Rubyist, Ruby on Railsを作った人 http://david.heinemeierhansson.com/
  46. 46. http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html http://d.hatena.ne.jp/yach/20140424 TDDは死んだ テスティングよ栄えよ
  47. 47. きょんさん (うさ耳) テストアーキテクト マサカリが痛い なごや方面
  48. 48. http://www.slideshare.net/KyonMm/in-tech-talk TDDの自殺
  49. 49. Additionally… TDD damages or breaks an architecture TDD people have forgotten the knowledge of testing and quality (as in Quality Assurance) So TDD has little or even negative effects on quality TDDはアーキテクチャを破壊する TDDやアジャイルの人は テストや品質保証の知識が足らない
  50. 50. https://www.flickr.com/photos/iancarroll/4149865894/
  51. 51. • 「TDD問題解決」 • ≠ • 「壺を買えば幸せに!」
  52. 52. • TDDはツール • 訓練になる • 個人でもチームでも使える • 問題解決に役立つ(こともある)
  53. 53. • Yattom said… • 個人的には好き • チームではできないことが多い • 使うときも100%ではない 知らない領域、試行錯誤
  54. 54. • T-wada said… • ミスったときや、悩んだとき • テストは書く TDDとは限らない • 間合いを調節、制御するのにTDDを利用する • 色々なツールのひとつとして
  55. 55. • 太田健一郎 said… • 徹底的にやり込んで熟練すると使いどころがわかるようになる • Martin Fowlerも同じことを言っている
  56. 56. • 実践テスト駆動開発
  57. 57. TDDするために
  58. 58. • TDDできるようになる • 効果を上げられるようになる • 人に説明できるようになる
  59. 59. • 現状の問題を識別、顕在化する • TDDで解決/改善できる筋道を付ける
  60. 60. • 仲間を増やす • 上達し、実績をつくる • フィードバックのツールとしていつでも使えるようにしておく
  61. 61. 続きは…… • 『テスト駆動開発入門』(絶版中; 復刊の噂も?) • バイブル • [動画で解説]和田卓人の“テスト駆動開発”講座 • http://gihyo.jp/dev/serial/01/tdd/ • 実際に手を動かすために(無料) • [ペアプロ][TDD]ペアプロ・TDDの『お題』をまとめてみた • http://d.hatena.ne.jp/absj31/20120721/1342880403 • 練習、素振り、写経のために • 『レガシーコード改善ガイド』(翔泳社) • テストのないところにテストを書くには • 『実践テスト駆動開発』(翔泳社) • TDDをやりすぎてみる • 『ソフトウェアテスト技法ドリル』(日科技連出版社) • テスト技法を基礎から学ぶ • Hey It’s Not My TDD! http://slideshare.net/yattom/hey-its-not-my-tdd • 今日のスライドよりちょっと突っ込んで解説
  62. 62. おしまい

Description

アジャイルひよこクラブ(2016.06.24)でのテスト駆動開発についての発表資料です。未経験者~初心者向けになっています。

Transcript

  1. 1. TDD はじめる前に アジャイルひよこクラブ 2016.06.24 安井力 / やっとむ
  2. 2. 安井 力 / やっとむ プログラマー Java Python Ruby JavaScript テスト駆動開発 アジャイルコーチ ワークショップ 現場導入 技術支援 認定スクラムマスター コンサルタント モデリング ユーザーストーリー twitter:@yattom facebook:yattom github:yattom bitbucket:yattom
  3. 3. テスト書いてますか?
  4. 4. • テストしてる? • テスト自動化してる? • TDDしてる?
  5. 5. TDDしたい?
  6. 6. • TDD • Test Driven Development • テスト駆動開発
  7. 7. • 動作するきれいなコード
  8. 8. • 動作する
  9. 9. • きれい
  10. 10. 動作する、きれいなコード きれい 汚い (すぐには)動かない 動作する
  11. 11. テスト駆動開発
  12. 12. • 1. テストを書く • 2. 実行して失敗させる • 3. テストが通る実装を書く • 4. テストを成功させる • 5. テストが通る状態のままリファクタリングする
  13. 13. 動作する、きれいなコードへ きれい 汚い (すぐには)動かない 動作する 二つの道がある
  14. 14. TDDでサイクルにする きれい 汚い (すぐには)動かない 動作する
  15. 15. きれい 汚い (すぐには)動かない 動作する Green Refactoring TDDと黄金の回転
  16. 16. • 自信と安心
  17. 17. テストファースト
  18. 18. テスト駆動開発の効果 IBM ドライバ Microsoft Windows Microsoft MSN Microsoft VisualStudio チーム人数 9 6 5-7 7 コード量(KLOC) 41.0 6.0 26.0 155.2 開発規模(人月) 119 24 46 20 欠陥数 (TDD未使用に 対する) 61% 38% 24% 9% 開発時間の増加 (管理者の見積) 15~20% 25~35% 15% 20~25% Nachiappan Nagappan, E. Michael Maximilien, Thirumalesh Bhat, Laurie Williams “Realizing quality improvement through test driven development: results and experiences of four industrial teams” 2008 http://research.microsoft.com/en-us/groups/ese/nagappan_tdd.pdf
  19. 19. 保守性への影響 生産性 (行数/工数) 保守性 ※1 (工数/変更件数) プロジェクトA (非TDD) 2.3 84 プロジェクトB (非TDD) 2.5 80 プロジェクトC (TDD) 1.8 59 ※1 保守期間(260日間)中、変更要求の対応にかかった工数の平均 "The effectiveness of test-driven development: an industrial case study" (Tomazˇ Dogsˇa • David Baticˇ , Software Qual J (2011))
  20. 20. TDDの効果の研究をまとめた研究 "Effects of Test-Driven Development: A Comparative Analysis of Empirical Studies" Simo Makinen and Jurgen Munch, 2013 • 既存の実証研究を調査し、10の内部・外部品質評価項目で、各 研究の結論を整理した • TDDは欠陥の作り込み(introduced defects)を減らし、メンテナ ンスしやすいコードを産む • TDDで実装されたコードは、部分的に、サイズが小さく、複雑 度が低い場合がある • メンテナンスがしやすくなるものの、初期開発では時間がかか る
  21. 21. TDDの効果の研究をまとめた研究 やっとむ TDD 検索
  22. 22. テスト駆動開発
  23. 23. • TDDのテストはテストではない!! …のか?
  24. 24. http://blog.cleancoder.com/uncle-bob/2014/12/17/TheCyclesOfTDD.html
  25. 25. • テスティング Testing • チェッキング Checking
  26. 26. アジャイルテスト 高品質を追求するアジャイルチームにおけるテストの視点 増田聡 Developer Summit 2010 http://www.slideshare.net/satoshimasuda/ss-3241717
  27. 27. • 品質のためのテスト-ユニットテスト-TDDのテスト
  28. 28. JaSST’11 Tokyo 新しいTDDアプローチ http://togetter.com/li/93719
  29. 29. テスト自動化のメリット • 回帰テスト • 追加/変更が容易、安心 • 品質管理しやすい、品質向上 • 機能横断と多能工 • 依存性排除 • 他にもたくさん!
  30. 30. • システムテスト自動化標準ガイド
  31. 31. • ソフトウェアテスト技法ドリル
  32. 32. テスト書きたい?
  33. 33. • TDD×テスト自動化
  34. 34. • TDD×BDD(振る舞い駆動開発)
  35. 35. 品質の作り込み
  36. 36. 品質の作り込み
  37. 37. • テスト駆動開発≠テスト自動化+開発 • 両方欲しい!
  38. 38. • TDDしていれば自動テストが書ける • 試験性 • ISO/IEC 9126 ソフトウェアの品質特性
  39. 39. TDDしてる? • NO!
  40. 40. IPA 情報処理推進機構 アジャイル型開発におけるプラクティス活用事例調査 http://www.ipa.go.jp/sec/softwareengineering/reports/20130319.html
  41. 41. A Comparative Case Study on the Impact of Test-Driven Development on Program Design and Test Coverage Maria Siniaalto and Pekka Abrahamsson, ESEM, 2007 http://se.inf.ethz.ch/old/teaching/2010-S/0276/slides/pletikosa.pdf 結合度: TDDが悪く見えるけど微妙 凝集度: TDDの経験が足らない テストカバレッジ: TDDは非常に良い
  42. 42. TDDの効果の研究をまとめた研究 やっとむ TDD 検索 良い影響より 影響なしのほうが多い TDDは無意味
  43. 43. Jim Coplien (ジム・コプリン) 『組織パターン』著者 スクラムの成立に影響
  44. 44. https://www.facebook.com/yattom/posts/731467806867197 私がFacebookにTDDのことを書いた ら すごい爆撃を食らった TDDは悪い設計を生 む そういう研究論文が 多数ある TDDより優れた やり方がある 人にTDD勧めるとか お前ふざけんな
  45. 45. DHH(デイヴィッド・ハイネマイヤー・ハンソ ン) Rubyist, Ruby on Railsを作った人 http://david.heinemeierhansson.com/
  46. 46. http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html http://d.hatena.ne.jp/yach/20140424 TDDは死んだ テスティングよ栄えよ
  47. 47. きょんさん (うさ耳) テストアーキテクト マサカリが痛い なごや方面
  48. 48. http://www.slideshare.net/KyonMm/in-tech-talk TDDの自殺
  49. 49. Additionally… TDD damages or breaks an architecture TDD people have forgotten the knowledge of testing and quality (as in Quality Assurance) So TDD has little or even negative effects on quality TDDはアーキテクチャを破壊する TDDやアジャイルの人は テストや品質保証の知識が足らない
  50. 50. https://www.flickr.com/photos/iancarroll/4149865894/
  51. 51. • 「TDD問題解決」 • ≠ • 「壺を買えば幸せに!」
  52. 52. • TDDはツール • 訓練になる • 個人でもチームでも使える • 問題解決に役立つ(こともある)
  53. 53. • Yattom said… • 個人的には好き • チームではできないことが多い • 使うときも100%ではない 知らない領域、試行錯誤
  54. 54. • T-wada said… • ミスったときや、悩んだとき • テストは書く TDDとは限らない • 間合いを調節、制御するのにTDDを利用する • 色々なツールのひとつとして
  55. 55. • 太田健一郎 said… • 徹底的にやり込んで熟練すると使いどころがわかるようになる • Martin Fowlerも同じことを言っている
  56. 56. • 実践テスト駆動開発
  57. 57. TDDするために
  58. 58. • TDDできるようになる • 効果を上げられるようになる • 人に説明できるようになる
  59. 59. • 現状の問題を識別、顕在化する • TDDで解決/改善できる筋道を付ける
  60. 60. • 仲間を増やす • 上達し、実績をつくる • フィードバックのツールとしていつでも使えるようにしておく
  61. 61. 続きは…… • 『テスト駆動開発入門』(絶版中; 復刊の噂も?) • バイブル • [動画で解説]和田卓人の“テスト駆動開発”講座 • http://gihyo.jp/dev/serial/01/tdd/ • 実際に手を動かすために(無料) • [ペアプロ][TDD]ペアプロ・TDDの『お題』をまとめてみた • http://d.hatena.ne.jp/absj31/20120721/1342880403 • 練習、素振り、写経のために • 『レガシーコード改善ガイド』(翔泳社) • テストのないところにテストを書くには • 『実践テスト駆動開発』(翔泳社) • TDDをやりすぎてみる • 『ソフトウェアテスト技法ドリル』(日科技連出版社) • テスト技法を基礎から学ぶ • Hey It’s Not My TDD! http://slideshare.net/yattom/hey-its-not-my-tdd • 今日のスライドよりちょっと突っ込んで解説
  62. 62. おしまい

More Related Content

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

×