回答:
コードカバレッジは、自動テストの実行中に実行されるコードの行/ブロック/アークの数の測定です。
コードカバレッジは、バイナリを計測するための専用ツールを使用して収集され、トレース呼び出しが追加され、計測された製品に対してフルセットの自動テストが実行されます。優れたツールを使用すると、実行されるコードの割合だけでなく、データをドリルダウンして、特定のテスト中に実行されたコード行を正確に確認することもできます。
私たちのチームは、社内のコードカバレッジツールセットであるMagellanを使用しています。.NETショップの場合、Visual Studioにはコードカバレッジを収集するための統合ツールがあります。この記事で説明するように、いくつかのカスタムツールをロールすることもできます。
C ++ショップの場合、IntelにはWindowsとLinuxで動作するツールがいくつかありますが、私はそれらを使用していません。また、GCC用のgcovツールがあると聞いたことがありますが、それについて何も知らず、リンクを提供できません。
使用方法については、コードカバレッジは各マイルストーンの終了基準の1つです。実際には、3つのコードカバレッジメトリックがあります。ユニットテスト(開発チームによる)、シナリオテスト(テストチームによる)、および結合カバレッジです。
ところで、コードカバレッジはどれだけのテストを行っているかを示す良い指標ですが、必ずしも製品をどれだけうまくテストしているかを示す良い指標とは限りません。品質を保証するためにコードカバレッジと一緒に使用する必要がある他のメトリックがあります。
コードカバレッジは基本的に、コードのどの程度がテストでカバーされているかをテストします。したがって、コードカバレッジが90%である場合、テストでカバーされていないコードが10%あることを意味します。コードの90%がカバーされていると思うかもしれませんが、別の角度から見る必要があります。100%のコードカバレッジを取得するのを止めている理由は何ですか?
これは良い例です:
if(customer.IsOldCustomer())
{
}
else
{
}
ここで、上記のコードには2つのパス/ブランチがあります。常に "YES"ブランチにヒットしている場合は、else部分をカバーしていないため、コードカバレッジの結果に表示されます。これで良いのは、カバーされていないことがわかったので、else部分をカバーするテストを作成できるからです。コードカバレッジがなかった場合は、時限爆弾に乗って爆発するだけです。
NCoverは、コードカバレッジを測定するための優れたツールです。
「100%のコードカバレッジ」が存在するということは、すべてが完全にテストされるという意味ではありません。すべてのコード行がテストされるという意味ではありませんが、すべての(一般的な)状況でテストされるという意味ではありません。
コードカバレッジを使用して、おそらくテストを作成する必要があるコードのビットを強調表示します。たとえば、現在の単体テストの実行中にmyImportantFunction()が実行されないことを示すコードカバレッジツールがある場合、それらはおそらく改善されるはずです。
基本的に、100%のコードカバレッジは、コードが完全であることを意味しません。より包括的な(ユニット)テストを作成するためのガイドとして使用してください。
x
戻りx/x
、my_func(2)を使用してテストを実行した場合、カバレッジは100%になります(関数のコードが実行されるため)が、パラメーターが0の場合は大きな問題を見逃してしまいます。つまり、カバレッジが100%であっても、必要なすべてのシナリオをテストしていません。
以前の回答の多くにいくつかのポイントを補足します。
コードカバレッジとは、テストセットがソースコードをどの程度カバーしているかを意味します。つまり、一連のテストケースでカバーされるソースコードはどの程度か。
上記の回答で述べたように、パス、条件、関数、ステートメントなど、さまざまなカバレッジ基準があります。
注:静的コード分析では、到達できないコードやぶら下がっているコードがあるかどうか、つまり、他の関数呼び出しでカバーされていないコードがあるかどうかを調べます。また、他の静的なカバレッジ。静的コード分析が100%のコードがカバーされていると報告しても、可能なすべてのコードカバレッジがテストされている場合、テストセットに関するレポートは提供されません。
コードカバレッジは、以前の回答でよく説明されています。したがって、これは質問の2番目の部分に対する回答の詳細です。
コードカバレッジを決定するために3つのツールを使用しました。
これらのツールを使用して
Perlには、モジュールで定期的に使用する優れたDevel :: Coverモジュールがあります。
ビルドとインストールがModule :: Buildによって管理されている場合は、単純に実行./Build testcover
して、サブ、ライン、条件ごとのカバレッジを示す素敵なHTMLサイトを取得できます。
以前の回答では、コードカバレッジはよく説明されています。iOS
とOSX
プラットフォームで作業している場合、ツールに関連するいくつかの知識を追加します。Xcodeは、コードカバレッジをテストおよび監視する機能を提供します。
参照リンク:
https://medium.com/zendesk-engineering/code-coverage-and-xcode-6b2fb8756a51
どちらも、Xcodeを使用したコードカバレッジの学習と探索に役立つリンクです。
PHPについては、セバスチャンバーグマンのGithubをご覧ください。
PHPコードカバレッジ情報の収集、処理、およびレンダリング機能を提供します。