2013年4月22日月曜日

ビューティフルテスティング読み終わった

O'REILYから出版されているビューティフルシリーズの、『ビューティフルテスティング』を読み終わりました。1ヶ月半くらい読んでました。

この本は、技術書かと思ったらエッセイでしたね。ちょっとエッセイはびみょうに苦手だということがわかりました。飛ばし飛ばしで読んでました。

おもしろかったのは、10章「乱数ジェネレータのテスティング」ですね。これがお目当てでした。これでわかったのは、どの分布法も統計をとればテストできるが、100%合格するテストは書けない、ということですね。
統計も、対象の分布法によって使う技術が専門的なレベルで異なるので、汎用的に「これを知ってれば乱数のテストができる」というものではなさそうです。100%合格するテストが書けないというのは、許容する範囲を広げればもちろん合格できるのですが、それをやると信憑性が低くなってしまう、とのこと。複数のテスト技法を組み合わせて、合格率を上げるのがいいようです。

また、この章で書かれていた以下のフレーズがとても気に入りました:

「それでも、ライブラリからRNG(Random Number Generator)を使う場合、ライブラリを信頼していたとしても、いくつかのテストを自ら作成するとよいでしょう。重要なのは、ライブラリそのものの質をテストするだけではなく、ライブラリに対するユーザーの理解もテストするという点です。」

これは、乱数に限らず、あらゆるライブラリを使用する場合にも言えることかなと思いました。
良いライブラリはもちろんテストされていて、オープンソースであればテストコードも公開されていますが、それを信頼するだけではなく、「自分はこんなケースでこういう使い方をしようと思っていて、いまこういう結果が出ている」というのを、自分のプロジェクトのために恒久的に残すのです。そうすることで、そのライブラリの挙動が変わったときに、ユーザーが検知できるようになるので、テストが通る限りにおいてその使い方がいつでも正しいということが保証されます。
この考え方は、とても大事だと感じました。

最後に、本書は私の28歳の誕生日プレゼントとして、Amazonのウィッシュリストから送っていただきました。このすばらしい本を送っていただけたことを感謝します。