TDD勉強会 in オフィス

サッカー日本代表がベスト8をかけて熱い戦いを繰り広げる4時間前、弊社事務所でもid:t-wadaさんを迎えてテストについて語るという熱い熱い戦いが繰り広げられました!t-wadaさん、そもそもが無茶振りにも関わらず快く引き受けていただいて、本当にありがとうございます!!

そういえば、前座を終えて日本代表戦のために家に帰る途中のマックに、有名人がいました。この人ともぜひ熱い戦いを繰り広げたかったところです。

f:id:ikikko:20100701004812j:image


メモは取っていたのですが、ざっとでしかないしお酒も入っていたので内容怪しいところあるかも。何か不備があったら、ご指摘願います。

達人プログラマー(白い方)
  • バージョン管理・テスティング・自動化の三本立て
  • 他の2つはちょっと賞味期限切れに近いが、テスティングの章は色褪せていない
    • Cross-check、t-wadaさんも実践している
  • 久しぶりに読み返してみようと思った
テストコードもプロのコード
  • テストコードも書き捨てでなく、可読性やメンテナンス性を考慮する
  • プロダクトコードとテストコードが、同じコードポリシーでなくとも構わない
    • プロダクトコード:基本的に、重複は悪
    • テストコード:可読性などを考慮して、若干の重複も許す
  • バランス大事!一概に決められるものではない
不安をテストにする
プロダクトコードとテストコードの関連付け
  • 大きく分けて、2つのやり方がある
    • 1対1で関連づける(Testcase Class per Class)*1
    • 似たような処理に対して、テストクラスを1つ作成する(Testcase Class per Fixture)
  • 混在してもいいけど、できるだけどっちを採用しているかが分かるようにディレクトリ構成きれたらいい
  • Eclipse Pluginだと、以前ちらっと読んだ記憶があるTesting Context(仮)という考え方 - Fly me to the Juno!とかとも関連してくるのかな?
モックオブジェクト
  • モックオブジェクトの使いどころもバランス
  • 手段と目的が逆転すると、ゴールがスライスしていく(ような感じがする)
    • テストもオールグリーンを維持しているが、どこか間違っているような気持ち悪い感じ
テストの普及
  • 数年前に比べて、JUnit(xUnit)を知っている人の割合が格段に増えた
    • 以前は草の根的な活動だったが、最近はトップダウン的にJUnitを使用
  • Seleniumも、一気にキャズムを超えた感じがする
    • 似たようなプロダクトはそれまでにいっぱいあったが、Seleniumは残った
テストコードのテスト
  • コードレビュー
  • Mutation Testing
    • 分岐の判定条件をわざと逆にして、ほんとにテストが落ちるかどうかを検証する
    • Javaだと、JesterとかJumbleが有名らしい


今回の勉強会、すごくためになったし楽しかったです。やっぱり、こうやって実際に当事者と議論を交わすというのはすごく勉強になることだと思いました。内容的には、以前お聞きしたこともあったのですが、こうやってざっくばらんに議論・質問できる場というのは素晴らしいです。

で、実はあと1人(1つ)お話を聞きたい人がいるんですよね。今年のデブサミで、体調不良で聞きに行けなかったあの発表とあの人。ちょっと色々身の回りのことが落ち着いたら、アプローチしてみようかと思っています。リアルではおろかTwitterですら全然絡んだことないんですけど…w

*1:用語、これであってる?xUTP読書会のログ見てると、多分あってそうだけど。