Download - TDD のこころ
TDDのこころ
和田 卓人 (a.k.a id:t-wada or @t_wada)Oct 22, 2010 @Cybozu Developers Conference 2010
自己紹介
自己紹介名前: 和田 卓人 (わだ たくと)
ブログ: http://d.hatena.ne.jp/t-wada
メール: [email protected]
Twitter: http://twitter.com/t_wada
タワーズ・クエスト株式会社 取締役社長
これまで書いたものWEB + DB PRESSvol.35 「実演! テスト駆動開発」vol.37 「実演! リファクタリング」vol.42 「REST特集」vol.49 「DRY特集」LifeHacks PRESSオープンソースマガジン(リレーコラム)他いろいろ
gihyo.jpの連載『[動画で解説]和田卓人の“テスト駆動開発”講座』http://gihyo.jp/dev/serial/01/tdd/全20回すべて動画付き解説ニコニコ動画でも見れます
WEB+DB過去記事の特設サイトと動画も
デベロッパーテスティング・ライブ - 自信を持ってコードを書くための心・技・体 -
【徹底討論】テストなんていらない?! -テストを、どこまでやるべきか?
パネルディスカッション:テストを行うこと、テストを続けること
TDD Boot Camp 東京
TDD Boot Camp 北陸
TDD Boot Camp 名古屋
普段やってること•商用 Rails プラグイン(自社製品)の開発•コンサルティング•TDD の啓蒙•Twitter
プログラマが知るべき97のこと
乞うご期待
日本人寄稿者(邦訳オンリー)@omo2009@m_seki@hyoshiok@miyagawa@hotchpotch@dankogai
@yukihiro_matz@t_wada
よろしくおねがいします
TDDの背景
テストの分類
DeveloperTesting
開発者
開発促進
CustomerTesting
顧客(のロール)
進捗管理
QATesting
品質保証担当者(のロール)
品質保証
「テスト」
バージョン管理テスティング自動化
バージョン管理
テスティング
自動化自働化
XFD
バージョン管理テスティング自動化
Developer Testingとは
•プログラマの•プログラマによる•プログラマのための•プログラムとしてのテストを書きながら•開発を行っていく手法
TDDとは?
動作する、きれいなコードへ
きれい
汚い
(すぐには)動かない 動作する
二つの道がある
TDDのサイクル1. テストを書き2. そのテストを実行して失敗させ(Red)3. 目的のコードを書き4. 1で書いたテストを成功させ(Green)5. テストが通るままでリファクタリングを行う(Refactor)
6. 1~5を繰り返す
きれい
汚い
(すぐには)動かない 動作する
Red
Green
Refactoring
TDDと黄金の回転
TDDのこころ
一つずつ少しずつ
ひとりずつ対処する。
複数を相手にしない。
すばやくまわす
自分が最初のユーザ
不安をテストに
祈るのではダメ
安心して飛び込む
道具にこだわる
テストは目的ではなく手段
•即座にフィードバックを得るため•書いたコードに自信を持つため•これから書くコードに自信を持つため
Developer Testing, TDD にソフトウェア工学的なメリットはいろいろあるけれど、最大の理由は工学的なものではない。最大の理由は心理的なもの
TDDの真の目的
健康
変化に対応するのは健康体のコード
変化に対応するのは健康体のチーム
不安の克服健康の維持
事例
© Towersquest, Inc. 2010. all rights reserved.
TDD導入効果(MS, IBM)
45
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)
© Towersquest, Inc. 2010. all rights reserved.
TDD導入効果(エリクソン他)
• TDDを実施した場合に報告されている知見‣ 機能テストでの不具合検出数が18%削減された‣ コーディング(実装)の時間が16%増えた‣ テストのカバレッジが大きくなった
• 被験者を対象としたアンケート‣ 96%の被験者がデバッグの工数を減らすと感じた‣ 88%の被験者が要求が洗練されると感じた‣ 92%の被験者がコードの品質を上げると感じた‣ 50%の被験者が開発工数を減らすと感じた
46
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)
おわりに
acts_as_professional
きれい
汚い
(すぐには)動かない 動作する
Red
Green
Refactoring
TDDと黄金の回転
TDDはスキルです• テストやTDDはスキルです。つまり…• 才能ではなく、習得可能です• 量は質に転化します• 写経!!
ご清聴ありがとうございました