SeasarCon2009White: テスト駆動開発のこころ (TDD はじめの一歩)

- 三本柱
    #達人プログラマの白本のやつかな
    バージョン管理
        Subversion
        Git/Mercurial
        #バージョン絵巻物がすごい
    テスティング
        素早いフィードバック
    自動化

- 黄金の回転

- 品質
    品質保証はしない
    品質向上はする (結果的に)

- TDDはテスト技法?いいえ、設計技法です。

- TDDのこころ
    1つずつ少しずつ
        複数を相手にしない。ひとりずつ対処する。(by 武蔵)
    すばやくまわす
        REPL (Read Eval Print Loop)
            ruby なら irb
            java なら IDE + JUnit
    自分が最初のユーザ
        eat your own dog food
        テスト書く、という意味でのユーザ
        TDD=設計手法であると主張してるポイント
    不安をテストに
        テストをいくつ書く?getter/setterにテスト書く? ということではない。
        不安なところがあればテストを書く
        勇気か蛮勇か
            XPのcourage
            正しい勇気を持つ=テストに裏付けられた勇気
    脳を無駄なく
        老人力
            3ヶ月たったらコードは忘れる
            代わりに外部のテストによって助けてもらう
        ジャグリング=不安がいっぱい宙に浮いている
            不安は少なくしよう
        IDEをつかいこなせ
            Eclipse/NetBeans
    テストは人の為ならず

- TDDはじめの一歩
    一人で始める
    本
        テスト駆動開発入門(ケント・ベック)
        リファクタリング(マーチン・ファウラー)
        Java言語で学ぶリファクタリング入門(結城浩)
    写経
        デスマの地獄から解脱する為にTDDを写経
    小さく始める
        末端クラスから
    勉強会に行ってみる

- FAQ
    テストのないコードがいっぱいある
        レガシーコード=テストのないコード
        デブザミでは大盛況
        Working Effective with Legacy Code 嫁
        夏までには邦訳がでそう
    テストしにくいところは?
        xUnit Test Patterns (Refactoring test code) 嫁
        モック技法とかがカタログ形式で載っている
        マルチスレッドとか
        最終的に自動化がやりづらいエリアはある
            そういう箇所にビジネス価値があることがおおい
            人間にしかできないところに人間の手間を集中しよう
    どこをテストすべき?
        達人プログラマー白本 嫁
    デバッガじゃだめなの?
        プログラミング作法(カーニハン) 嫁
            テスト、デバッガ、ロギングについてびっしり書いてある
        デバッガって名前が悪い。デバッグ時にしか使わないように聞こえる。
            トレーサとかならいいのに。
    テストの単位
        1クラスに1つ?1メソッドに1つ?
            なれるまではそれでいい
            が、拘る必要もない
            DTOに対してテストがあっても意味ない
            1クラスに対して複数テストがあってもいい
            状況を単位
                造語「テスティングコンテキスト」だっけ?
    リファクタリングのやめどき
        「きれい」は主観的価値感
            時間とか自分でTodo管理が重要
            これで終わり!という仕組みはまだない

- まとめ
    テストは才能ですか?いいえ、スキルです

- 喀血本
    テスト駆動開発入門(ケント・ベック)
    プログラミング作法(カーニハン)


  # テスト自体のリファクタリングの話を聞きたいな、と思った。
  # 動くきれいなコードができたところで、テストのリファクタリングをする、みたいなやつ。
  # 少しだけ話にあがった(ような気がした)んだけど、どうやら、
  # xUnit Test Patterns (Refactoring test code) に書いてるらしい。
  # しかも、読書会やるよ、とのこと。これは気になる・・・。