テストの期待結果について

他人の作ったテストケースをレビューしようとしている。観点は幾つかあるけれど、そのうちの一つは期待結果が正しく記述されているか?ということだ。この場合の正しさとは、仕様書の記述に合っていることを指す。
今問題となっているのは、仕様書に全ての動作が記述されているわけではないこと、そしてそれゆえに期待結果の正しさについて判断が下せないことだ。例えば、あるログメッセージが定義されている。そのメッセージが出力される場合、それが何を意味するのかは仕様書に書いてあるけれど、それがどの局面で出力されるのかはどこにも書かれていない。実際そういうケースはよくあることだ。その場合、ある条件のテストを実行すると、どういうログが出ることが期待されるのかは、仕様上未定義になる。
未定義は未定義として率直に受け入れれば良いのだが、実際のところ、なかなか受け入れ難い。仕様書に書かれている事柄だけから期待結果を定義すると、ソフトウェアの振る舞い全体と比べて、期待される動作はあまりにも小さく感じられる。だからと言って、仕様書の内容を事細かに書くのは面倒だし、また製品に不要な制約をもたらしてしまう恐れがある。
仕様を決めるということは、ソフトウェアの振る舞いに制約を掛けることであり、ソフトウェアがその制約に従って動くことを保証することだ。制約の範囲をどこまでにしたいのか、その意思決定が不十分なのかもしれない。