tddはじめる前に
TRANSCRIPT
![Page 1: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/1.jpg)
TDDはじめる前に
アジャイルひよこクラブ2016.06.24
安井力 / やっとむ
![Page 2: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/2.jpg)
安井 力 / やっとむ
プログラマーJava Python Ruby JavaScript
テスト駆動開発
アジャイルコーチワークショップ 現場導入 技術支援
認定スクラムマスター
コンサルタントモデリング ユーザーストーリー
twitter:@yattom facebook:yattomgithub:yattom bitbucket:yattom
![Page 3: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/3.jpg)
![Page 4: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/4.jpg)
![Page 5: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/5.jpg)
テスト書いてますか?
![Page 6: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/6.jpg)
• テストしてる?• テスト自動化してる?• TDD してる?
![Page 7: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/7.jpg)
TDD したい?
![Page 8: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/8.jpg)
• TDD• Test Driven Development• テスト駆動開発
![Page 9: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/9.jpg)
![Page 10: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/10.jpg)
• 動作するきれいなコード
![Page 11: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/11.jpg)
• 動作する
![Page 12: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/12.jpg)
• きれい
![Page 13: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/13.jpg)
動作する、きれいなコード
きれい
汚い
( すぐには ) 動かない 動作する
![Page 14: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/14.jpg)
テスト駆動開発
![Page 15: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/15.jpg)
• 1. テストを書く• 2. 実行して失敗させる• 3. テストが通る実装を書く• 4. テストを成功させる• 5. テストが通る状態のままリファクタリングする
![Page 16: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/16.jpg)
動作する、きれいなコードへ
きれい
汚い
( すぐには ) 動かない 動作する
二つの道がある
![Page 17: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/17.jpg)
TDD でサイクルにする
きれい
汚い
( すぐには ) 動かない 動作する
![Page 18: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/18.jpg)
きれい
汚い
( すぐには ) 動かない 動作する
Red
Green
Refactoring
TDD と黄金の回転
t-wadasaid…
![Page 19: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/19.jpg)
• 自信と安心
![Page 20: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/20.jpg)
テストファースト
![Page 21: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/21.jpg)
![Page 22: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/22.jpg)
![Page 23: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/23.jpg)
テスト駆動開発の効果
IBMドライバ
MicrosoftWindows
MicrosoftMSN
MicrosoftVisualStudio
チーム人数 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” 2008http://research.microsoft.com/en-us/groups/ese/nagappan_tdd.pdf
![Page 24: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/24.jpg)
保守性への影響
生産性( 行数 / 工数 )
保守性 ※ 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))
![Page 25: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/25.jpg)
TDD の効果の研究をまとめた研究
"Effects of Test-Driven Development: A Comparative Analysis of Empirical Studies" Simo Makinen and Jurgen Munch, 2013• 既存の実証研究を調査し、 10 の内部・外部品質評価項目で、
各研究の結論を整理した• TDD は欠陥の作り込み (introduced defects) を減らし、メン
テナンスしやすいコードを産む• TDD で実装されたコードは、部分的に、サイズが小さく、複
雑度が低い場合がある• メンテナンスがしやすくなるものの、初期開発では時間がか
かる
![Page 26: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/26.jpg)
TDD の効果の研究をまとめた研究
やっとむ TDD 検索
![Page 27: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/27.jpg)
![Page 28: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/28.jpg)
テスト駆動開発
![Page 29: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/29.jpg)
• TDD のテストはテストではない!! …のか?
![Page 30: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/30.jpg)
http://blog.cleancoder.com/uncle-bob/2014/12/17/TheCyclesOfTDD.html
![Page 31: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/31.jpg)
• テスティング Testing• チェッキング Checking
![Page 32: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/32.jpg)
アジャイルテスト 高品質を追求するアジャイルチームにおけるテストの視点 増田聡 Developer Summit 2010http://www.slideshare.net/satoshimasuda/ss-3241717
TDDのテスト
![Page 33: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/33.jpg)
• 品質のためのテスト - ユニットテスト -TDD のテスト
![Page 34: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/34.jpg)
JaSST’11 Tokyo 新しい TDD アプローチ http://togetter.com/li/93719
![Page 35: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/35.jpg)
テスト自動化のメリット
• 回帰テスト• 追加 / 変更が容易、安心• 品質管理しやすい、品質向上• 機能横断と多能工• 依存性排除
• 他にもたくさん!
![Page 36: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/36.jpg)
• システムテスト自動化標準ガイド
![Page 37: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/37.jpg)
• ソフトウェアテスト技法ドリル
![Page 38: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/38.jpg)
テスト書きたい?
![Page 39: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/39.jpg)
• TDD× テスト自動化
![Page 40: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/40.jpg)
• TDD×BDD( 振る舞い駆動開発 )
![Page 41: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/41.jpg)
品質の作り込み
![Page 42: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/42.jpg)
品質の作り込み
![Page 43: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/43.jpg)
• テスト駆動開発≠テスト自動化+開発• 両方欲しい!
![Page 44: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/44.jpg)
• TDD していれば自動テストが書ける
• 試験性• ISO/IEC 9126 ソフトウェアの品質特性
![Page 45: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/45.jpg)
TDD してる?
• NO!
![Page 46: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/46.jpg)
![Page 47: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/47.jpg)
IPA 情報処理推進機構アジャイル型開発におけるプラクティス活用事例調査http://www.ipa.go.jp/sec/softwareengineering/reports/20130319.html
![Page 48: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/48.jpg)
A Comparative Case Study on the Impact of Test-Driven Development on Program Design and Test CoverageMaria Siniaalto and Pekka Abrahamsson, ESEM, 2007http://se.inf.ethz.ch/old/teaching/2010-S/0276/slides/pletikosa.pdf
結合度 : TDD が悪く見えるけど微妙凝集度 : TDD の経験が足らないテストカバレッジ : TDD は非常に良い
![Page 49: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/49.jpg)
TDD の効果の研究をまとめた研究
やっとむ TDD 検索
良い影響より影響なしのほうが多い
TDD は無意味
![Page 50: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/50.jpg)
Jim Coplien ( ジム・コプリン )『組織パターン』著者スクラムの成立に影響
![Page 51: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/51.jpg)
https://www.facebook.com/yattom/posts/731467806867197
私が Facebook に TDD のことを書いたら
すごい爆撃を食らった
TDD は悪い設計を生むそういう研究論文が多数ある
TDD より優れたやり方がある人に TDD勧めるとかお前ふざけんな
![Page 52: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/52.jpg)
DHH( デイヴィッド・ハイネマイヤー・ハンソン )
Rubyist, Ruby on Rails を作った人Basecamp (37signals)http://david.heinemeierhansson.com/
![Page 53: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/53.jpg)
http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.htmlhttp://d.hatena.ne.jp/yach/20140424
TDD は死んだテスティングよ栄えよ
![Page 54: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/54.jpg)
きょんさん (うさ耳)テストアーキテクト
マサカリが痛い なごや方面
![Page 55: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/55.jpg)
http://www.slideshare.net/KyonMm/in-tech-talk
TDD の自殺
![Page 56: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/56.jpg)
Additionally…TDD damages or breaks an architectureTDD 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 やアジャイルの人は
テストや品質保証の知識が足らない
![Page 57: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/57.jpg)
https://www.flickr.com/photos/iancarroll/4149865894/
![Page 58: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/58.jpg)
•「 TDD問題解決」• ≠•「壺を買えば幸せに!」
![Page 59: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/59.jpg)
• TDD はツール• 訓練になる• 個人でもチームでも使える• 問題解決に役立つ ( こともある )
![Page 60: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/60.jpg)
• Yattom said…•個人的には好き• チームではできないことが多い• 使うときも 100% ではない 知らない領域、試行錯誤
![Page 61: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/61.jpg)
• T-wada said…•ミスったときや、悩んだとき• テストは書く TDD とは限らない• 間合いを調節、制御するのに TDD を利用する•色々なツールのひとつとして
![Page 62: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/62.jpg)
•太田健一郎 said…•徹底的にやり込んで熟練すると使いどころがわかるようにな
る
• Martin Fowler も同じことを言っている
![Page 63: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/63.jpg)
• 実践テスト駆動開発
![Page 64: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/64.jpg)
TDD するために
![Page 65: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/65.jpg)
• TDD できるようになる• 効果を上げられるようになる• 人に説明できるようになる
![Page 66: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/66.jpg)
• 現状の問題を識別、顕在化する• TDD で解決 /改善できる筋道を付ける
![Page 67: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/67.jpg)
•仲間を増やす• 上達し、実績をつくる• フィードバックのツールとしていつでも使えるようにしてお
く
![Page 68: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/68.jpg)
続きは……
•『テスト駆動開発入門』 (絶版中 ; 復刊の噂も? )• バイブル
•[動画で解説]和田卓人の“テスト駆動開発”講座• 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 • 今日のスライドよりちょっと突っ込んで解説
![Page 69: TDDはじめる前に](https://reader036.vdocuments.pub/reader036/viewer/2022081520/5882dc381a28ab33258b4da1/html5/thumbnails/69.jpg)
おしまい