Toshiyuki Kawanishi Blog


2009
12 . 26

WACATE & TDD Boot Camp 本当に有難うございました

この12月は、WACATEとTDD Boot Campという両方のイベントでスタッフとして参加させていただきました。ご参加の皆様、本当にありがとうございました。


WACATEもTDD Boot Campも既に多くの方が、Blogなどでフィードバックを寄せてくださっています。ありがたい限りです。



WACATE 2009冬 〜基礎・おぼえていますか〜


WACATEには今回から実行委員として参加させていただくことになりました。今回は基礎がテーマということで、ソフトウェアテストとは直接関係があるわけではないのですが、「情報探索キホンのキ」というタイトルで話させていただきました。

内容は、第3バイオリンさんがレポートしてくださっています。ありがとうございます。


このセッション、既存の方法論や決まった答えを発表するのを目的としていたわけではなく、参加したワカテの皆さんと一緒に、日々のインプットについて、さらにもう一歩考えていくためのキッカケを作るのを目的としていました。

今後もワカテから一歩成長するために必要なことを、色々考えていければなーと思っています。



TDD Boot Camp


TDD Boot Campでは、Pythonを選択された方々とxUnitの未経験者の方々の担当をさせていただきました。Python島は1ペアでした。他の言語を選択され方どおしでは複数のペアが作られていて、おたいがいにコードレビューをすることができました。しかし、Python他のペアのコードをみて触発をうけることが出来ない状況になっていました。そこで、参考になるか分からないけれども少しでも比較の対象になればということで、休憩時間にモリモリとPythonで課題をやっていました。休憩時間しか使えなかったので当日は途中までしか出来ませんでしたが、家で宿題として何とか完成させました(スレッドセーフ対応はしていません)。



一応、コメントとしてToDoを次のようなToDoを記載しておきました。
  • テストコード: 他のテストに内包されているテストを削除する
  • プロダクトコード: さらに仕様が複雑になる場合は、例えば、ステートパターンなどを導入することでクラスを分割する

特に、TDDをリズム良く回すためには不要なテストの削除など、テストコード側も変更していくことが必要となります。はじめの一歩を進むために必要になったテストも private にすべきアトリビュート(フィールド、メソッド)にアクセスしていると、その後のリファクタリングの足かせになってしまいます。

今回も仕様の全体をまかなうテストを書くのは第一歩目として大きすぎるということで、一歩目として内部のロジックに踏み込んだテストを書いています。しかし、要件としては、その内部ロジックを使用することを定めている分けではないので、後から、さらに良いロジックにリファクタリングすることも考えられます。もしくは、もっと単純に、コードの解り易さのためにメソッド名を変更したくなったりするかもしれません。この場合には、二歩目として書いた本来の要件を満たすためのテストがあるので、一歩目として書いたテストは削除するのが良いのではと思います。

先ほどの自分が書いたコードの例で言えば、 test_find_oldest_key() を一歩目に書きましたが、本当に書きたかったのは、二歩目に書いた test_delete_older_data_for_unused_cache() で、この二歩目には一歩目でやっていることも内包されているので消した方が良いということになるでしょうか。

ケントベックの「テスト駆動開発入門」で、はじめインスタンス変数の currency にテストコードからアクセスしていた部分を getCurrency() を使って書き換えたり、Dollar と Franc を Money にしていく過程で重複するテストを消していったりするところなどが、この辺のリズムの参考になるかもしれません。


テスト駆動開発入門
テスト駆動開発入門
posted with amazlet at 09.12.26
ケント ベック
ピアソンエデュケーション
売り上げランキング: 93009



また、この辺のテストコードのリファクタリングを micro coverage という道具を使って補助できないかというご提案を和田さんがされています。今後の動向に要注目ですね!

(52分くらいから和田さんのLightning Talkがはじまります)

# 本題とは関係ないですが、キャッシュの上限を表すのに "size" という言葉を使ったのはあまり良くなかった気がしています。Lasseさんは "capacity" という言葉を使われていました。そっちの方が誤解が無くて良い命名ですよね。もう少し始めの段階で名前にこだわっておけば良かった......。

なお、当日のお題は和田さんのご講演のスライドの最後で紹介してくださっています。

WACATE も TDD Boot Camp も、どちらも参加者、他のスタッフの皆さんのおかげで、とても楽しいイベントとなりました。これからさらに加速していきたいと思いますので、皆さんどうかよろしくお願いいたします。


2010/01/07 katzchang あとで質問。
2009/12/27 advblog
2009/12/27 takagimasahiro
2009/12/27 IwamotoTakashi tddbc
2009/12/26 kaorun55 #tddbc WACATE