(これは良いインタビューの質問になると思いますが、私の場合はそれよりも実用的です。)
数十の化学成分間の非常に長く洗練された化学反応プロセスをモデル化する大規模で複雑なアプリケーションがあります。私たちは、アプリケーションの受け入れテストを設計する段階にありますが、テストするのに手に負えないほどの数の可能性のあるパスにやや気が進まないのです。私たちの状況は、Googleマップの開発チームが「ルートの取得」機能でルート計画アルゴリズムをテストするときに直面したものと非常によく似ていることがわかりました。明らかに、すべての可能なルートをテスト(検証および検証)することはできませんでした。では、どのような状況でもアプリケーションが機能するという自信をどのようにして得たのでしょうか?
そして、私は彼らがそれをどのようにしたかを知ることを期待していないので、あなたに尋ねましょう:特定のアプリケーションが堅牢であることを満足させるために、適切なコードカバレッジを備えたテストスイートをどのように設計しますか?システムを通るすべての潜在的な経路を調査するために?
私が探しているのは、手に負えない問題を小さく扱いやすい部分に分解するために使用する原則です。その合計は、全体の満足のいく推定を提供します。「すべてをテストすることはできませんが、これをテストすることはできます、これ、そしてこれで十分です。」「確かに正しい」アプローチを探しているのではなく、実際の予算/時間の制約を考慮して、慎重なアプローチを探しています。
(Googleマップの例を使用して、できるだけ具体的な回答を求めています。)