.NETエンジニア・プログラマ向けの技術情報・業界ニュースをお届けします。

  1. FEnet.NETナビ
  2. .NETコラム
  3. ツール・ソフトウェア
  4. カバレッジテストの目的とは?バグを潜伏させてしまうテストケースもあわせて紹介

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

  • ツール・ソフトウェア
公開日時:   更新日時:
カバレッジテストの目的とは?バグを潜伏させてしまうテストケースもあわせて紹介
この記事でわかること
    基本情報技術者試験の試験対策はこちら>>
    プログラマー
    プログラムを作りましたが、バグばっかりで困ってます……テストする手法を教えてください!
    プロジェクト
    リーダー
    テストにはカバレッジ機能がおすすめです。前提として、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