任意のソフトウェアテストは、「例による証明」、JUnitのようなツールを使用してテストするだけでなく、ユニットのようなものです。そして、それは新しい知恵ではありません、1960年のダイクストラからの引用があります、それは本質的に同じことを言います:
「テストは、バグがないことではなく、存在を示します」
(「shows」という単語を「proofs」に置き換えてください)。ただし、これはランダムなテストデータを生成するツールにも当てはまります。現実世界の関数の可能な入力の数は、通常、ケースの生成方法とは無関係に、生成され、宇宙の時代内の期待される結果に対して検証できるテストケースの数よりも桁違いに大きいため、大量のテストデータを生成するためにジェネレーターツールを使用しても、特定のバグを検出した可能性がある1つのテストケースを見逃さないという保証はありません。
ランダムなテストがあり、時々手動で作成したテストケースで見落とされたバグを明らかにしました。ただし、一般的には、テストする関数のテストを慎重に作成し、できるだけ少ないテストケースで完全なコードとブランチカバレッジを取得できるようにする方が効率的です。手動で生成されたテストとランダムに生成されたテストを組み合わせることが実現可能な戦略になる場合があります。さらに、ランダムテストを使用する場合、再現可能な方法で結果を取得するように注意する必要があります。
したがって、手動で作成されたテストは、ランダムに生成されたテストよりも悪くはありません。