カバレッジテストの目的とは?バグを潜伏させてしまうテストケースもあわせて紹介
- プログラマー
- プログラムを作りましたが、バグばっかりで困ってます……テストする手法を教えてください!
- プロジェクト
リーダー - テストにはカバレッジ機能がおすすめです。前提として、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%でもバグを正確に検出できるようにする方が優先されます。
- プロジェクト
リーダー - ちなみに、網羅率は80%~90%を目指すといいですよ。
- プログラマー
- 「100%=完ぺきなソースコード」というわけではないんですね。
カバレッジテストで効率的に開発しよう
カバレッジテストを行えば、バグを検出してソフトウェア等の品質を大幅に高めることができます。
しかし同時に、適切なテストケースを設定しなければアンチパターンが発生し、正確にバグを検出できない場合もあります。
正しいやり方でカバレッジテストを行い、ソフトウェア等を効率的に開発しましょう。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
新着案件New Job
-
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅) -
遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅) -
病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅) -
開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅) -
債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
月給62万~67万円東京都文京区(後楽園駅) -
PMO/東京都豊島区/【WEB面談可】/在宅勤務
月給55万~55万円東京都豊島区(池袋駅)