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
はじめる前に
アジャイルひよこクラブ
2016.06.24
安井力 / やっとむ
安井 力 / やっとむ
プログラマー
Java Python Ruby JavaScript
テスト駆動開発
アジャイルコーチ
ワークショップ 現場導入 技術支援
認定スクラムマスター
コンサルタント
モデリング ユーザーストーリー
twitt...
テスト書いてますか?
• テストしてる?
• テスト自動化してる?
• TDDしてる?
TDDしたい?
• TDD
• Test Driven Development
• テスト駆動開発
• 動作するきれいなコード
• 動作する
• きれい
動作する、きれいなコード
きれい
汚い
(すぐには)動かない 動作する
テスト駆動開発
• 1. テストを書く
• 2. 実行して失敗させる
• 3. テストが通る実装を書く
• 4. テストを成功させる
• 5. テストが通る状態のままリファクタリングする
動作する、きれいなコードへ
きれい
汚い
(すぐには)動かない 動作する
二つの道がある
TDDでサイクルにする
きれい
汚い
(すぐには)動かない 動作する
きれい
汚い
(すぐには)動かない 動作する
Green
Refactoring
TDDと黄金の回転
• 自信と安心
テストファースト
テスト駆動開発の効果
IBM
ドライバ
Microsoft
Windows
Microsoft
MSN
Microsoft
VisualStudio
チーム人数 9 6 5-7 7
コード量(KLOC) 41.0 6.0 26.0 155.2
...
保守性への影響
生産性
(行数/工数)
保守性 ※1
(工数/変更件数)
プロジェクトA
(非TDD)
2.3 84
プロジェクトB
(非TDD)
2.5 80
プロジェクトC
(TDD)
1.8 59
※1 保守期間(260日間)中、変更要求...
TDDの効果の研究をまとめた研究
"Effects of Test-Driven Development: A
Comparative Analysis of Empirical Studies" Simo
Makinen and Jurgen...
TDDの効果の研究をまとめた研究
やっとむ TDD 検索
テスト駆動開発
• TDDのテストはテストではない!! …のか?
http://blog.cleancoder.com/uncle-bob/2014/12/17/TheCyclesOfTDD.html
• テスティング Testing
• チェッキング Checking
アジャイルテスト 高品質を追求するアジャイルチームにおけるテストの視点 増田聡 Developer Summit 2010
http://www.slideshare.net/satoshimasuda/ss-3241717
• 品質のためのテスト-ユニットテスト-TDDのテスト
JaSST’11 Tokyo 新しいTDDアプローチ http://togetter.com/li/93719
テスト自動化のメリット
• 回帰テスト
• 追加/変更が容易、安心
• 品質管理しやすい、品質向上
• 機能横断と多能工
• 依存性排除
• 他にもたくさん!
• システムテスト自動化標準ガイド
• ソフトウェアテスト技法ドリル
テスト書きたい?
• TDD×テスト自動化
• TDD×BDD(振る舞い駆動開発)
品質の作り込み
品質の作り込み
• テスト駆動開発≠テスト自動化+開発
• 両方欲しい!
• TDDしていれば自動テストが書ける
• 試験性
• ISO/IEC 9126 ソフトウェアの品質特性
TDDしてる?
• NO!
IPA 情報処理推進機構
アジャイル型開発におけるプラクティス活用事例調査
http://www.ipa.go.jp/sec/softwareengineering/reports/20130319.html
A Comparative Case Study on the Impact of Test-Driven Development on Program Design and Test Coverage
Maria Siniaalto and ...
TDDの効果の研究をまとめた研究
やっとむ TDD 検索
良い影響より
影響なしのほうが多い
TDDは無意味
Jim Coplien (ジム・コプリン)
『組織パターン』著者
スクラムの成立に影響
https://www.facebook.com/yattom/posts/731467806867197
私がFacebookにTDDのことを書いた
ら
すごい爆撃を食らった
TDDは悪い設計を生
む
そういう研究論文が
多数ある
TDDより...
DHH(デイヴィッド・ハイネマイヤー・ハンソ
ン)
Rubyist, Ruby on Railsを作った人
http://david.heinemeierhansson.com/
http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html
http://d.hatena.ne.jp/yach/20140424
TDDは死んだ
テステ...
きょんさん (うさ耳)
テストアーキテクト
マサカリが痛い なごや方面
http://www.slideshare.net/KyonMm/in-tech-talk
TDDの自殺
Additionally…
TDD damages or breaks an architecture
TDD people have forgotten the knowledge of testing and
quality (as i...
https://www.flickr.com/photos/iancarroll/4149865894/
• 「TDD問題解決」
• ≠
• 「壺を買えば幸せに!」
• TDDはツール
• 訓練になる
• 個人でもチームでも使える
• 問題解決に役立つ(こともある)
• Yattom said…
• 個人的には好き
• チームではできないことが多い
• 使うときも100%ではない 知らない領域、試行錯誤
• T-wada said…
• ミスったときや、悩んだとき
• テストは書く TDDとは限らない
• 間合いを調節、制御するのにTDDを利用する
• 色々なツールのひとつとして
• 太田健一郎 said…
• 徹底的にやり込んで熟練すると使いどころがわかるようになる
• Martin Fowlerも同じことを言っている
• 実践テスト駆動開発
TDDするために
• TDDできるようになる
• 効果を上げられるようになる
• 人に説明できるようになる
• 現状の問題を識別、顕在化する
• TDDで解決/改善できる筋道を付ける
• 仲間を増やす
• 上達し、実績をつくる
• フィードバックのツールとしていつでも使えるようにしておく
続きは……
• 『テスト駆動開発入門』(絶版中; 復刊の噂も?)
• バイブル
• [動画で解説]和田卓人の“テスト駆動開発”講座
• http://gihyo.jp/dev/serial/01/tdd/
• 実際に手を動かすために(無料)
•...
おしまい
TDDはじめる前に
TDDはじめる前に
TDDはじめる前に
TDDはじめる前に
TDDはじめる前に
TDDはじめる前に
TDDはじめる前に
Upcoming SlideShare
Loading in …5
×

TDDはじめる前に

3,607 views

Published on

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

Published in: Software
  • Login to see the comments

TDDはじめる前に

  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. おしまい

×