私が参加しているプログラム (~500k SLOC) では、100% を使用しています。これは、テストの次の段階に進むためのプログラム要件です。その背後にある理由は次のとおりです。
プログラムは、いくつかの安全上の重要な状況で使用され、公称条件から外れてテストされないようにしたくない場合
100% を達成していない場合は、必要のないコードを作成してお金を浪費しているか、公称パスを完全にテストしていないかのいずれかです。#1を参照してください。
単体テストのシナリオでは、使用している実際のプログラム コード カバレッジ メトリックに関係なく、自然に 100% に近づくはずです。誰かが名目上のシナリオに基づいて 95% に達している場合、100% を要求することは面倒ではありません (また、100% に達していない理由を尋ねる必要があります。#2 を参照してください)。
あなたの走行距離は確かに異なります。ミッション / セーフティ クリティカルなアプリケーションに取り組んでいない場合は、おそらくコード カバレッジについてそれほど心配する必要はありません。必要ですか?
[編集]
以下で受け取ったコメントに基づいて、明確にする必要があります。プログラム ガイドラインは、単体テストの 100% のコード カバレッジです。技術的な理由でコードのブランチに到達できない場合 (保護された既定のコンストラクターが呼び出されないなど)、その開発プロセスの要件を放棄することができます。承認は通常、組織の外部の独立した部分から付与されます (go go SQA) )。
統合/システム テストから、要件カバレッジを見始めると、コード カバレッジは意味のないものになります。それはまったく別の糸の玉です。
元の質問は、現実世界の状況を探していました: すべての現実世界の状況が (ほとんど?) 単体テスト レベルで 100% のコード カバレッジを保証するわけではないことに同意しますが、確かにそうするケースとそうするプログラムがあります。また、一部の開発者は、必要のないコードを作成する習慣があり、テストされないままになります。これはメンテナンスの悪夢となります。後の開発者は、決して使用されることを意図していない (または誰かが「良い」アイデアだと思ったために含まれていた) メソッドを呼び出すためです。100% のカバレッジを狙うと、「なぜこれを書いたのか」という質問に答える必要があります。