.net column
.NET開発者のためのブログメディア

カバレッジテストの目的とは?バグを潜伏させてしまうテストケースもあわせて紹介

 
カバレッジテストの目的とは?バグを潜伏させてしまうテストケースもあわせて紹介
基本情報技術者試験の試験対策はこちら>>
PG
プログラムを作りましたが、バグばっかりで困ってます……テストする手法を教えてください!
PL
テストにはカバレッジ機能がおすすめです。前提として、Visual Studioのカバレッジ機能はEnterpriseエディションでしか利用できないので注意してください。

カバレッジとは?


カバレッジとは、プログラムのソースコードがテストされた割合のことであり、日本語では「コード網羅率」とも呼称します。
カバレッジを確認すればテストがどの程度終わったかを把握できます。

カバレッジテストを行う目的

カバレッジテストを行う目的は、ソースコードを網羅してバグを減少させることです。
カバレッジを高めれば、バグが少なくなりソースコードの品質の上昇が期待できます。
逆にカバレッジテストが十分で無い場合、ソースコードの品質は低くなりバグが多発する危険性があります。

ソフトウェアテストにおけるカバレッジテスト

ソフトウェアテストにおいて、カバレッジテストは非常に重要なものと言えます。
カバレッジを高めて網羅性を確保すれば、ソフトウェアの品質を把握するのに重要な指標になります。
カバレッジテストを進めることは、ソフトウェアの品質改善に直結すると言えるでしょう。

カバレッジの種類


ソフトウェアテスト等におけるカバレッジは、主にソースコードの網羅率を示す「コードカバレッジ」を指します。
しかし、カバレッジはコードカバレッジ以外にも複数の種類に分かれています。
仕様に対する網羅率を表した「機能力カバレッジ」や取り得るデータに対する網羅率に着目した「データカバレッジ」など、計測する視点を変えたカバレッジも存在します。

コードカバレッジの種類


コードカバレッジは、大きく分けて3種類存在します。
「ステートメントカバレッジ」は「命令文」に着目したカバレッジで、「全ての命令文を最低一度は通る」という基準でテストを行います。
「デシジョンカバレッジ」は「分岐した経路」に着目したカバレッジで、ステートメントカバレッジが全ての命令文を通るように「全ての経路を最低一度は通る」という基準でテストします。
「複合条件カバレッジ」は「条件」に着目したカバレッジで、「各処理の条件に含まれる全てのパターンを満たす」という基準でテストを行います。

ステートメントカバレッジについて


コードカバレッジの1種であるステートメントカバレッジは「全ての命令文を一度は通る」ことを基準としたカバレッジであり、「命令網羅率」とも言います。
プログラム上における全ての処理を一回以上行う命令を出して行ったテストにおいて、どの程度確認が完了しているかを示す割合がステートメントカバレッジです。
あるいは、上記のやり方でコードを網羅するテスト方針をステートメントカバレッジと呼ぶ場合もあります。

Visual Studioでカバレッジテストをする方法


測定方法は下記のとおりです。

1.テストエクスプローラーを開く(Ctrl+EまたはCtrl+T)
2.「実行」メニューの▼をクリックし、「すべてのテストのコード カバレッジの分析」を選択
↓テストが実行されます。
3.コードカバレッジの結果ウィンドウを開く
4.「コードカバレッジの色分け表示」で、網羅されている箇所とされていない箇所が色分けされます

以上が、カバレッジを測定する方法です。もっと詳しく知りたい方は、こちらもご参照ください。
(マイクロソフト公式サイト)
https://docs.microsoft.com/ja-jp/visualstudio/test/using-code-coverage-to-determine-how-much-code-is-being-tested?view=vs-2019

カバレッジテストでバグを潜伏させてしまうテストケース


カバレッジテストを行う際は、バグを適切に検出できずに潜伏させてしまう「アンチパターン」と呼ばれるテストケースに気をつける必要があります。
アンチパターンとは、特定のテストケースを設定し損ねた場合等が原因で「バグが残っているにもかかわらずカバレッジが100%になってしまう」という現象を指します。
「フリーライド」「ハッピーパス」等アンチパターンの種類は数多く存在するため、カバレッジテストを行う際は慎重にテストケースを設定してアンチパターンを発生させないように注意しましょう。

カバレッジテストの適切な目標値とは


カバレッジテストの適切な目標値は、約80〜90%です。
理想的なカバレッジは100%ですが、無理に100%を目指した場合はバグの検出数がコストに見合わなくなってしまう可能性が高くなります。
世界的企業であるGoogleの開発チームでさえも目標値を85%より上と定めています。(注意ですが、この値はGoogleの努力目標であって、テストの完了条件ではありません。)
無理にカバレッジを100%まで高めるよりは、適切なテストケースを設定して80〜90%でもバグを正確に検出できるようにする方が優先されます。

PL
ちなみに、網羅率は80%~90%を目指すといいですよ。
PG
「100%=完ぺきなソースコード」というわけではないんですね。

カバレッジテストで効率的に開発しよう


カバレッジテストを行えば、バグを検出してソフトウェア等の品質を大幅に高めることができます。
しかし同時に、適切なテストケースを設定しなければアンチパターンが発生し、正確にバグを検出できない場合もあります。
正しいやり方でカバレッジテストを行い、ソフトウェア等を効率的に開発しましょう。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags