久しぶりにプログラミングの話。FPROG では Mawou という開発コードで、@nifty のフォーラムを自動的に巡回するというプログラムを作っている。企画会議室もある。ただ、今のところ実際にコードを書いているのは私だけである。つまり、気楽に作れる状態である。

これは Java で Eclipse を使って書いているので、とりあえず、Junit でテストしながらの開発をしている。前回紹介した、@nifty の新チャットで、開発中の様子を生中継しながらである。フォーラムのチャットは6/15に入れ替えになるので、今のところ、とりあえず、フリートークCという特設チャットを使っている。フリートークCだが、言語はCではなくJava なのだ。

そういえば、C++ の場合は Junit みたいなのが何かあるか、という質問がかなり前にFPL であったのだが、私がちょっと探しただけだと見つからなかった。手ごわい。ないはずはないのだが。

さて、実況chatというか一人で勝手に喋っているのを見ているのは面白いらしいが、実況をみたことのある方はご存知のように、要するに Junit はokなのに、その後に実行したら

_| ̄|○

ということがよくあることが分かる。どういうことかというと、単体テストは通っても結合テストというか、全体の処理がダメなのだ。Junit には限界があるのは当然で、そのためのテストプログラムも結構あったはずだから、そちらを行えばいいのかもしれないが、Mawou はまだそこまで進んでいない。最近ハマったのは cookie の処理で、結局 cookie の処理をかなり書き直したのだが、こういうのは相手サーバーがいないとなかなか先に進めない。

もっとすごいのもある。テストケースがバグっているとか。まあそれはすごすぎるのだが、まさかテストケースのテストを書く人もいないだろうし。

冗談はさておき、テストケースを書くときに、「何をテストすべきか」ということが、よく問題になる。完璧なテストはもちろん無駄なことが多い。ある程度テストできれば吉、というアプローチは正しいのである。要は、コストの問題だ。このあたり、最近のJAVA WORLD でも出ていたと思うが、回収できないようなコストをかけて製品作っても意味ない、という話。

でも、最低限しなければならないテストは何か。「こうすればこうなるはず」というテストを忘れる人は、さすがにいないのだが、逆を書かない人は結構いそうだ。というか私がそうか。

(つづく)