tddbc nagoya day1

61
TDD Boot Camp へ ようこそ 和田 卓人 (a.k.a id:t-wada or @t_wada) Jul 10, 2010 @名古屋

Upload: takuto-wada

Post on 30-Oct-2014

4.673 views

Category:

Technology


4 download

DESCRIPTION

TDD Boot Camp Nagoya Day1 - Jul 10, 2010 at Kanayama

TRANSCRIPT

Page 1: TDDBC Nagoya Day1

TDD Boot Camp へようこそ和田 卓人 (a.k.a id:t-wada or @t_wada)

Jul 10, 2010 @名古屋

Page 2: TDDBC Nagoya Day1

大事なことを最初に

Page 3: TDDBC Nagoya Day1

感謝•参加していただいている皆様•スポンサーの皆様•スタッフの皆様•bleis さん

Page 4: TDDBC Nagoya Day1

自己紹介

Page 5: TDDBC Nagoya Day1

自己紹介名前: 和田 卓人 (わだ たくと)

ブログ: http://d.hatena.ne.jp/t-wada

メール: [email protected]

Twitter: http://twitter.com/t_wada

タワーズ・クエスト株式会社 取締役社長

Page 6: TDDBC Nagoya Day1

これまで書いたものWEB + DB PRESSvol.35 「実演! テスト駆動開発」vol.37 「実演! リファクタリング」vol.42 「REST特集」vol.49 「DRY特集」LifeHacks PRESSオープンソースマガジン(リレーコラム)他いろいろ

Page 7: TDDBC Nagoya Day1

gihyo.jpの連載『[動画で解説]和田卓人の“テスト駆動開発”講座』http://gihyo.jp/dev/serial/01/tdd/全20回すべて動画付き解説ニコニコ動画でも見れます

WEB+DB過去記事の特設サイトと動画も

Page 8: TDDBC Nagoya Day1

デベロッパーテスティング・ライブ - 自信を持ってコードを書くための心・技・体 -

【徹底討論】テストなんていらない?! -テストを、どこまでやるべきか?

パネルディスカッション:テストを行うこと、テストを続けること

Page 9: TDDBC Nagoya Day1

よろしくおねがいします

Page 10: TDDBC Nagoya Day1

TDD Boot Camp へようこそ!

Page 11: TDDBC Nagoya Day1

優しい教官が君を待ってる

Page 12: TDDBC Nagoya Day1

TDD の神秘の力を会得できます

Page 13: TDDBC Nagoya Day1

TDDBC お品書き•TDDとは何か(この講演)•全員でペアプロ体験 & コードレビュー大会を2セット•夜は自重しない議論•レガシーコード改善デモ & トライアル

Page 14: TDDBC Nagoya Day1

TDD Boot Camp 東京

Page 15: TDDBC Nagoya Day1

TDD Boot Camp 北陸

3/13,14@金沢

Page 16: TDDBC Nagoya Day1

http://www.flickr.com/photos/recompile_net/3298985098/

ペアプロ : Pair Programming

Page 17: TDDBC Nagoya Day1

コードレビュー大会

Page 18: TDDBC Nagoya Day1

改めて、TDD Boot Camp へようこそ

Page 19: TDDBC Nagoya Day1

TDDとは?

Page 20: TDDBC Nagoya Day1
Page 21: TDDBC Nagoya Day1

動作する、きれいなコードへ

きれい

汚い

(すぐには)動かない 動作する

二つの道がある

Page 22: TDDBC Nagoya Day1

TDDのサイクル1. テストを書き2. そのテストを実行して失敗させ(Red)3. 目的のコードを書き4. 1で書いたテストを成功させ(Green)5. テストが通るままでリファクタリングを行う(Refactor)

6. 1~5を繰り返す

Page 23: TDDBC Nagoya Day1

テストの分類DeveloperTesting

開発者

開発促進

CustomerTesting

顧客(のロール)

進捗管理

QATesting

品質保証担当者(のロール)

品質保証

「テスト」

Page 24: TDDBC Nagoya Day1

きれい

汚い

(すぐには)動かない 動作する

Red

Green

Refactoring

TDDと黄金の回転

Page 25: TDDBC Nagoya Day1

TDDのこころ

Page 26: TDDBC Nagoya Day1

一つずつ少しずつ

Page 27: TDDBC Nagoya Day1

ひとりずつ対処する。

複数を相手にしない。

Page 28: TDDBC Nagoya Day1

すばやくまわす

Page 29: TDDBC Nagoya Day1

自分が最初のユーザ

Page 30: TDDBC Nagoya Day1

不安をテストに

Page 31: TDDBC Nagoya Day1

祈るのではダメ

Page 32: TDDBC Nagoya Day1

安心して飛び込む

Page 33: TDDBC Nagoya Day1

TDDはテスト技法では なく設計技法

Page 34: TDDBC Nagoya Day1

テストは目的ではなく手段

Page 35: TDDBC Nagoya Day1

•即座にフィードバックを得るため•書いたコードに自信を持つため•これから書くコードに自信を持つため

Developer Testing, TDD にソフトウェア工学的なメリットはいろいろあるけれど、最大の理由は工学的なものではない。最大の理由は心理的なもの

Page 36: TDDBC Nagoya Day1

TDDの真の目的

Page 37: TDDBC Nagoya Day1

健康

Page 38: TDDBC Nagoya Day1

変化に対応するのは健康体のコード

Page 39: TDDBC Nagoya Day1

変化に対応するのは健康体のチーム

Page 40: TDDBC Nagoya Day1

不安の克服健康の維持

Page 41: TDDBC Nagoya Day1

デモ

Page 42: TDDBC Nagoya Day1

http://www.flickr.com/photos/un-sharp/3696119774/

ナビとドライバー

キーボード押し / 引き

ペアプロ : Pair ProgrammingVim vs.Emacs

Page 43: TDDBC Nagoya Day1

http://www.flickr.com/photos/recompile_net/3298985098/

事実、ペアプロは楽しい。

Page 44: TDDBC Nagoya Day1

うるう年問題以下の3つのメソッドを持つMyYearクラスの実装について考えます。1. public MyYear(int year)整数の引数を持ち、その引数を保持する処理をする

2. public String toString()保持した値を文字列として返す

3. public boolean isLeap()保持した値がうるう年ならばtrueを返し、それ以外の時はfalseを返す

http://www.cs.is.saga-u.ac.jp/~nakayama07/sotsuken.html

Page 45: TDDBC Nagoya Day1

TDDの基本テクニック• テストファースト• アサートファースト

• 仮実装(Fake it)• Fake it はテストのテスト

• 三角測量(Triangulation)• 明白な実装(Obvious Implementation)

Page 46: TDDBC Nagoya Day1

間合いを測る• 対象を見定める• ゴールへの距離を感じる

• 不安は何か• 何なら不安でないか• 小さな一歩を考える

• 一度にひとつずつ

Page 47: TDDBC Nagoya Day1

Design for Testability

• テストしやすいコードを書くためには?• テストから先に書く => テスト可能になる• テストを考える = 設計を考える

Page 48: TDDBC Nagoya Day1

Refactoring

• 呼吸をするようにリファクタリングする• Rename (改名)• Extract (抽出)• Inline (インライン化)

Page 49: TDDBC Nagoya Day1

事例

Page 50: TDDBC Nagoya Day1

© Towersquest, Inc. 2010. all rights reserved.

TDD導入効果(MS, IBM)

50

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)

Page 51: TDDBC Nagoya Day1

© Towersquest, Inc. 2010. all rights reserved.

TDD導入効果(エリクソン他)

• TDDを実施した場合に報告されている知見‣ 機能テストでの不具合検出数が18%削減された‣ コーディング(実装)の時間が16%増えた‣ テストのカバレッジが大きくなった

• 被験者を対象としたアンケート‣ 96%の被験者がデバッグの工数を減らすと感じた‣ 88%の被験者が要求が洗練されると感じた‣ 92%の被験者がコードの品質を上げると感じた‣ 50%の被験者が開発工数を減らすと感じた

51

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)

Page 52: TDDBC Nagoya Day1

おわりに

Page 53: TDDBC Nagoya Day1

acts_as_professional

Page 54: TDDBC Nagoya Day1

きれい

汚い

(すぐには)動かない 動作する

Red

Green

Refactoring

TDDと黄金の回転

Page 55: TDDBC Nagoya Day1
Page 56: TDDBC Nagoya Day1

TDDはスキルです• テストやTDDはスキルです。つまり…• 才能ではなく、習得可能です• 量は質に転化します• 写経!!

Page 57: TDDBC Nagoya Day1

Lesson5

Page 58: TDDBC Nagoya Day1

『一番の近道は遠回りだった』

Page 59: TDDBC Nagoya Day1

『遠回りこそが俺の最短の道だった』

Page 60: TDDBC Nagoya Day1

楽しみましょう!

Page 61: TDDBC Nagoya Day1

ご清聴ありがとうございました