Toshiyuki Kawanishi Blog


2008
6 . 10

第1回 Working Effectivelry With Legacy Code読書会 (2)

以前にも少し書きましたが、第1回 Working Effectivelry With Legacy Code読書会に参加させていただきました。

読書会では、範囲を分担して発表しながら進んでいきました。私は4章The Seam Modelと5章Toolsを担当させていただきました。Seamとは「該当部分のソースコードを変更しなくても振る舞いを変更できる部分」のことです。この本では3つのSeamのタイプが紹介されていました。また、Toolの章では、xUnitやFITなどのTest Harnessが紹介されていました。
発表のために作った資料は以下の読書会のWikiにアップロードさせていただきました。

個人的に気になったのは、著者の単体テストの定義です。この本の著者は単体テストの範囲を狭く考えていることで有名だそうです。以下がこの本での定義(14ページ)。
  1. データベースにアクセスする
  2. ネットワークを介して通信する
  3. ファイルシステムにアクセスする
  4. 実行するために環境を変更する必要がある
この定義に厳密に従ったら単体テストなんて書けないよー、という気もしますが、様々な意見があるのだなと勉強になりました。確かに、一つ一つのテストケースが大きくなりすぎたり、粒度がバラバラにならないように工夫することは大事だなと、あらためて思いました。

ちょっと話は変わりますが、最近自分が直面している課題に、XML-RPCを使ってWeb上に公開するAPIのテストがあります。これって、APIひとつひとつのテストという視点で見れば、単体テストだと思うのですが、ネットワークを介して通信をしているのでこの本の単体テストの定義には当てはまらないですね......

それ以外にも、TDDとBDDの話や、TDDでのテストと品質保証のためのテストなどの話題がでました。


皆様のお声へのリンクなど、読書会のまとめはこちら。

次回もぜひ参加させていただきたいです!


Working Effectively With Legacy Code
Michael C. Feathers
Prentice Hall