見出し画像

テストケースは探索的推論で作る

探索的推論とは

あるアイデアから、次のアイデアへと次々とアイデアを導き出すが、その方法とは予測できない対象に対してその場その場で対応を考えていくというものだ。(中略)数学者でさえ、退屈な公式を適用するよりも盛んに探索的に推論している。
                「ソフトウェアテスト293の鉄則」より

というものです。つまり、テスティングは杓子定規に公式やセオリーを当てはめて進めるのではなく、その場その場で得られた情報からより良いテストケースを考えて進めるものだということです。

これはテスト対象のソフトウェアというものが内包する、巨大さ、不確かさ、不規則性から要請されるものです。つまり、ソフトウェアをテストするという行為は、サイエンティストが自然界から法則を導き出すことを同じようにその対象の全体を捉えることができないものだということです。

全体を捉えることができないので、知覚できた部分から手がかりを集めて世界を捉えていくしかない。探索的推論を行うしかないわけです。

もちろん、同値分析、境界値分析やリスク分析、カバレッジ(網羅率)など、テスティングのノウハウや公式を知っていることは無駄ではありません。というか、知らないと探索的推論で次の対応を考える時に有効な手を考えつくことができません。しかし、それでもノウハウや公式を知っていればテスト対象のソフトウェアを探索しなくてもテストケースが作れると考えるのは大きな誤りです。

まず、大前提として、全てのバグを見つけ出すことはできません(プログラムは一つの分岐があるだけで分岐パターンに2乗がかかり、指数関数的に組み合わせ爆発が起きるためです)。ということは、テストが全てのバグを見つけ出したという意味で「完了」になることはないということです。つまり、テスト対象のソフトウェアの全てを包含するテストは存在しないということです

したがって、どのようなテストケースも部分集合にしかなりえず、わからない部分(テストできない部分)を残します。探索的推論をせざるを得ないわけです。

この辺りのことを理解せず、テスティングは公式を当てはめて後は人海戦術で行えば済むといったように考える人達(コンサルタントを名乗る人に多いですねぇ。。。)は本質的にアホなので、見かけたら速攻ぶちのめすかいちはやく撤退しましょう。

テストって決まった手順をそのまま行えば良いようなものではなくて、クリエイティブなものなんですよ

この記事が気に入ったらサポートをしてみませんか?