単体テストしたい疑似乱数ジェネレーター (PRNG) クラスがあります。次の 2 つの方法があります。
- 大量のサンプルを取るテスト ケースを作成し、それらが適切に配布されているかどうかをテストします。この方法では、テスト ケースの実行時間がかなり長くなる可能性があります。
- サンプルの小さなシリーズを「手作業で」計算し、PRNG アルゴリズムがそれを再現するかどうかを検証します。このアプローチは、気づかれずにランダムではないシーケンスが生成される可能性があります。
最初のアプローチは、ジェネレーターのホワイト ボックス テストを実行しないため、ユニット テストではないと思いますが、クラスの責任を適切にテストします。2 番目のアプローチは、アルゴリズムに焦点を当てた実際の単体テストに似ていますが、クラスがその責任を果たしているかどうかについての証拠はあまりありません。
どちらのアプローチを好みますか、またその理由は何ですか?