私は通常、適切に定義された適度に小さい一連の入力が与えられた場合に、正しい動作を簡単に定義できるコードに対して単体テストを使用しようとします。これはバグをキャッチするのに非常にうまく機能し、私はジェネリック関数の個人的なライブラリで常にこれを行っています。
ただし、私が書くコードの多くは、基本的に大規模なデータセットで重要なパターンを探すデータ マイニング コードです。この場合の正しい動作は、しばしば明確に定義されておらず、人間が予測するのが容易ではない方法で多くの異なる入力に依存しています (つまり、数学は手動で合理的に行うことができないため、私は最初に問題を解決するためにコンピューターを使用します)。これらの入力は非常に複雑になる可能性があり、妥当なテスト ケースを作成することはほぼ不可能です。テストする価値のあるエッジ ケースを特定することは非常に困難です。アルゴリズムが決定論的でない場合もあります。
通常、サニティ チェックに assert を使用し、既知のパターンを使用して小さなおもちゃのテスト ケースを作成し、その答えが客観的に正しいとは限りませんが、少なくとも「妥当に見える」かどうかを非公式に確認することで、できる限りのことを行います。この種のケースをテストするより良い方法はありますか?