第二回チキチキ
 日本ペアプロ
グラミングの会
java-ja支部会
  和田 卓人 (a.k.a id:t-wada)
  Jun, 6 2009 @ java-ja 15th
第一回チキチキ
 日本ペアプロ
グラミングの会
java-ja支部会
n分でわかる
第一回チキ (ry
  のまとめ
本当に
 ありがとう
ございました
自己
紹介
自己紹介
名前:    和田 卓人 (わだ たくと)

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

メール: takuto.wada@towersquest.jp

Twitter: http://twitter.com/t_wada

タワーズ・クエスト株式会社
取締役社長
これまで書いたもの
WEB + DB PRESS
 vol.35 「実演! テスト駆動開発」
 vol.37 「実演! リファクタリング」
 vol.42 「REST特集」
 vol.49 「DRY特集」
LifeHacks PRESS
オープンソースマガジン(リレーコラム)
他いろいろ
gihyo.jpの連載
『[動画で解説]和田卓人の テスト駆動開発 講座』
http://gihyo.jp/dev/serial/01/tdd/
  全20回すべて動画付き解説
  ニコニコ動画でも見れます


WEB+DB過去記事の特設サイトと動画も
デブサミ
デベロッパーテスティング・ライブ   - 自信を持ってコードを書くための
心・技・体 -




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



パネルディスカッション:テストを行うこと、テストを続けること
よろしく
おねがい
 します
Agenda
•TDDとは?
•TDDのこころ
•TDDはじめの一歩
•FAQ
Agenda
•TDDとは?
•TDDのこころ
•TDDはじめの一歩
•FAQ
TDD
とは?
TDDとは
1. テストを書き
2. そのテストを実行して失敗させ(Red)
3. 目的のコードを書き
4. 1で書いたテストを成功させ(Green)
5. テストが通るままでリファクタリング
   を行う(Refactor)
6. 1∼5を繰り返す
テスト?
テストの分類
            「テスト」
Developer   Customer     QA
 Testing     Testing   Testing


              顧客        品質保証
  開発者       (のロール)       担当者
                       (のロール)


 開発促進        進捗管理      品質保証
Developer Testingとは

•プログラマの
•プログラマによる
•プログラマのための
•プログラムとしてのテストを書きながら
•開発を行っていく手法
xUnit
Developer
Testingの
 位置づけ
バージョン管理
 テスティング
   自動化
三本柱
 ©Artek ( http://www.artek.fi/ )
バージョン管理
 テスティング
   自動化
バージョン絵巻物
バージョン管理
 テスティング
   自動化
素早い
フィードバック
バージョン管理
 テスティング
   自動化
自動化      XFD
自働化


      会場に詳しい人いるよ!!
目標は?
動作する、きれいなコードへ

きれい


            二つの道がある


 汚い



      (すぐには)動かない   動作する
TDDのサイクル
1. テストを書き
2. そのテストを実行して失敗させ(Red)
3. 目的のコードを書き
4. 1で書いたテストを成功させ(Green)
5. テストが通るままでリファクタリング
   を行う(Refactor)
6. 1∼5を繰り返す
TDDと黄金の回転

きれい




                        Refactoring
              Red



汚い
              Green

      (すぐには)動かない      動作する
TDDは
テスト技法では
   ない
品質保証?
品質向上?
バグ発見とコスト
TDDは
 品質を
保証しない
TDDは
 品質を
向上する
TDDは
設計技法です
TDD
ミクロの視点
マクロの視点
私たちが
気付くのは
  いつ?
計画する
計画し続ける
設計する
設計し続ける
テストは目的
ではなく手段
Agenda
•TDDとは?
•TDDのこころ
•TDDはじめの一歩
•FAQ
TDDの
こころ
一つずつ
少しずつ
複数を相手
にしない。
ひとりずつ
対処する。
動作する、きれいなコードへ

きれい


            二つの道がある


 汚い



      (すぐには)動かない   動作する
TDDと黄金の回転

きれい




                        Refactoring
              Red



汚い
              Green

      (すぐには)動かない      動作する
すばやく
 まわす
REPL
Read Eval Print Loop
IDE + JUnit
 = Java の
  対話環境
自分が
最初の
ユーザ
eat your
  own
dog food
不安を
テストに
勇気か
蛮勇か
脳を
むだなく
老人力
ジャグリング
三本柱
 ©Artek ( http://www.artek.fi/ )
IDE を
使いこなせ
Eclipse
NetBeans
テストは人
の為ならず
TDDのこころ
•一つずつ、少しずつ
•すばやくまわす
•自分が最初のユーザ
•不安をテストに
•脳をむだなく
•テストは人の為ならず
Agenda
•TDDとは?
•TDDのこころ
•TDDはじめの一歩
•FAQ
TDD
はじめの
 一歩
一人でも
始められる
読書
写経
動画
gihyo.jpの連載
『[動画で解説]和田卓人の テスト駆動開発 講座』
http://gihyo.jp/dev/serial/01/tdd/
  全20回すべて動画付き解説
  ニコニコ動画でも見れます


WEB+DB過去記事の特設サイトと動画も
小さく
始める
末端クラス
から始める
勉強会に
 行こう
Agenda
•TDDとは?
•TDDのこころ
•TDDはじめの一歩
•FAQ
FAQ
テストのない
コードが沢山
あるんだけど
テストしにく
いところは?
どこをテスト
 すべき?
デバッガじゃ
 だめなの?
テストの単位
1クラスファイルに
1テストファイル?
1メソッドに
 1テスト?
リファクタリ
ングに終わり
無いんじゃ?
カバレッジ
100%の誤解
まとめ
三本柱
 ©Artek ( http://www.artek.fi/ )
TDDのこころ
•一つずつ、少しずつ
•すばやくまわす
•自分が最初のユーザ
•不安をテストに
•脳をむだなく
•テストは人の為ならず
TDDと黄金の回転

きれい




                        Refactoring
              Red



汚い
              Green

      (すぐには)動かない      動作する
デモ
Eclipse Galileo RC2

Quick-JUnit 0.5 beta

JUnitMax
TDDの基本テクニック
• テストファースト
 • アサートファースト
• 仮実装(Fake it)
 • Fake it はテストのテスト
• 三角測量(Triangulation)
• 明白な実装(Obvious Implementation)
Design for Testability


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

• 呼吸をするようにリファクタリングする
 • Rename (改名)
 • Extract (抽出)
 • Inline (インライン化)
おわりに
テストはスキルです
• テストやTDDはスキルです。つまり…
 • 才能ではなく、習得可能です
 • 量は質に転化します
 • 写経!!
ご清聴
 ありがとう
ございました

java-ja TDD 2nd