テストの本質を探る ――30年の歴史を持つ 「ソフトウェア工学」の知恵に学ぶ
●開発現場の二つの戒律
Beizerの本1)には,次の二つの戒律が示されています.
1)良いプログラムしか良いテストはできない(プログラマの戒律)
テスト担当者に次のように言わせてはいけないとされています.すなわち,「テストが終わらない!
やればやるだけエラーが出てくる」,「このプログラムには,いったいいくつのパスがあるんだ!」,「なんと迷路のようなプログラムであることよ.期待値は何なんだ」....
不良プログラムは,最後までテストすることができません.不ぐあいが出続けるからです.そうでなくても,きちんと書かれていないプログラムはテストが困難です.テストには,入力用のデータの組(入力ベクトル)と期待値(oracle,すなわち「神託」と呼ばれる)を用意する必要があります.
例えば,パス・テストを実施する場合,プログラムの構造から適切な入力ベクトルを見つける必要があります.しかし,雑に書かれたプログラムから入力ベクトルを見つけることは容易ではありません.また,期待値自身の計算も困難になります.良いプログラムは,エラーが少なく,しかもテストしやすいプログラムなのです.
2)テスト・プログラムは磨滅する(テスト担当者の戒律)
もちろん,これは比ゆ的な言いかたです.テストを実行する人が,ある特定の不ぐあいを発見し続けたとします.そうするとそのプログラマは注意するようになります.つまり,その不ぐあいだけは生じないように意識します.一方,ほかのことには注意力が散漫になるかもしれません.一つのテスト・プログラムで,すべての種類の不ぐあいを網羅することはできません.したがって,単一のテスト手法によって見つけ出すことのできるバグは減っていきます.単一のテスト手法による効果がしだいに薄れてくる,というのが「磨滅」の意味です.
また,開発対象や開発方法が変化すると,必然的に発生する不ぐあいも変化します.このときも注意して新たなテスト手法を考えないと,同じような問題が生じる可能性があります.