tdd のこころ @ osh2014

Post on 24-Apr-2015

6.935 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

at Open Seminar Hiroshima 2014 (#osh2014) 2014.02.01 (Sat) http://osh-2014.github.io/

TRANSCRIPT

TDDのこころ

和田 卓人 (a.k.a id:t-wada or @t_wada)Feb 1, 2014 @ OSH2014

和田 卓人id: t-wada@t_wadagithub: twada

よろしくおねがいします

こんな風景

荒みきったコード

疲弊しきった現場

爆弾処理のようなリリース

なぜこうなってしまうのか?

左サイドだけでは点は取れない

誰がシステムを作り続ける

のか

TDDとは?

最後に残った4つの章では、私が「問答無用で実践すべき」だと考えているアジャイルなソフトウェアエンジニアリングのプラクティスを紹介していきたい。具体的には次の4つだ。

アジャイルなプログラミング

•第12章 ユニットテスト•第13章 リファクタリング•第14章 テスト駆動開発•第15章 継続的インテグレーション

絶版!

「動作するきれいなコード」、ロン・ジェフリーズのこの簡潔な言葉は、TDD(テスト駆動開発)の目標である。動作するきれいなコードは、あらゆる理由で価値がある。

─ Kent Beck

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

きれい

汚い

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

二つの道がある

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

7. 1~6を繰り返す

きれい

汚い

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

Red

Green

Refactoring

TDDと黄金の回転

絶版!

TDDのこころ

一つずつ少しずつ 段を

小さく

ひとりずつ対処する。

複数を相手にしない。

すばやくまわす

自分が最初のユーザ

不安をテストに

命綱を編む

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

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

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

TDDの真の目的

健康

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

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

不安の克服健康の維持

デモ

FizzBuzz問題Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”.

1から100までの数をプリントするプログラムを書け。ただし3

の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。

http://tickletux.wordpress.com/2007/01/24/using-fizzbuzz-to-find-developers-who-grok-coding/http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm

事例

© Towersquest, Inc. 2010. all rights reserved.

TDD導入効果(MS, IBM)

44

IBM Driver MS Windows

MS MSN MS Visual Studio

ソースコードサイズ (KLOC)

テストコードサイズ (KLOC)

TDDを採用していない類似プロジェクトでの欠陥密度を1としたときの欠陥密度TDD採用により増加したコード実装時間(管理者の見積による)

41.0 6.0 26.0 155.2

28.5 4.0 23.2 60.3

0.61 0.38 0.24 0.09

15~20% 25~35% 15% 20~25%

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%の被験者が開発工数を減らすと感じた

45

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)

応用

テストの無いコードが既にたくさんある

JUnit をマスターしたい

既にデータの入ったデータベースがある

絶版!

FragileTests

テストが脆い

テストが遅い

Slow Tests

どこまでテストすればよいのか

現実のシステムはもっと複雑だ

画面のテストはどうすれば?

組み込みシステムはどうすれば?

おわりに

きれい

汚い

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

Red

Green

Refactoring

TDDと黄金の回転

本をたどる

絶版! 絶版!

絶版!

絶版!

絶版!絶版!

絶版!

gihyo.jpの連載『[動画で解説]和田卓人の“テスト駆動開発”講座』

http://gihyo.jp/dev/serial/01/tdd/全20回すべて動画付き解説ニコニコ動画でも見れます

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

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

テストはプロの嗜み

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

top related