カバレッジとは?基本から応用まで解説

ざっくりと

  • ネットワークが届く範囲
  • テストで網羅する範囲
  • 保険がカバーする範囲

カバレッジ(coverage)=範囲、覆い隠す

カバレッジとは、テストが網羅する範囲や保証する範囲を意味します。

概要説明

カバレッジとは、一定の範囲を覆うことである。 なぜなら、カバレッジは英語で「覆う」や「範囲」を意味するからだ。 例えば、無線ネットワークにおいては、Wi-Fiが届く範囲を指す。 そして、ソフトウェアテストにおいては、テストが網羅する範囲を指す。 つまり、カバレッジは状況により異なる意味を持つが、全て「範囲」を意味する。 だから、カバレッジは様々なコンテクストで使用される包括的な概念である。

職業・職種

  1. ネットワークエンジニア
    カバレッジは、ネットワークが届く範囲を示す。なぜなら、Wi-Fiのようなネットワークの設定時に範囲を計算する必要があるからだ。例えば、ビル全体にネットワークを広げる。

  2. ソフトウェアテスター
    カバレッジは、テストが網羅する範囲を示す。なぜなら、全てのシナリオをテストするための基準となるからだ。例えば、全ての関数がテストされることを保証する。

  3. 保険会社の代理人
    カバレッジは、保険がカバーする範囲を示す。なぜなら、それは保険契約者が何を保証されるかを明確にするからだ。例えば、車の保険では、盗難や事故に対するカバレッジがある。

カバレッジは、特定の範囲や領域を定義または保証するときに使います。

企業・製品

  • AT&T
    AT&Tは、モバイルネットワークのカバレッジで有名である。なぜなら、彼らはアメリカ全土をカバーする大規模なネットワークを持っているからだ。例えば、地方地域でもAT&Tのモバイルサービスを利用できる。
  • Google Fi
    Google Fiは、そのユニークなカバレッジで知られている。なぜなら、彼らは複数のキャリアのネットワークを利用して、最良の信号を提供するからだ。例えば、一つの地域での信号が弱くなると、他のネットワークに自動的に切り替わる。
  • Jacoco
    Jacocoは、カバレッジ計測で有名なJavaのライブラリだ。なぜなら、簡単に使えて詳細な報告が得られるからだ。例えば、Javaのプロジェクトでコードのカバレッジを確認する時に使う。

手順例

  1. インストール
    Jacocoのインストールは、ビルドツールを介して行う。なぜなら、MavenやGradleといったツールは、依存性の管理やプラグインのインストールを容易にするからだ。例えば、Gradleの場合、ビルドスクリプトにJacocoのプラグインを追加するだけで良い。

  2. テストケース作成
    テストケースを作成する。なぜなら、カバレッジを計測するためには、テストケースが必要だからだ。例えば、JUnitを用いてテストケースを作成する。

  3. テストを実行
    ビルドツールを用いてテストを実行し、Jacocoによるカバレッジ計測を行う。なぜなら、Jacocoはビルドとテストの実行を通じてカバレッジデータを生成するからだ。例えば、Gradleの場合、`gradle test jacocoTestReport`コマンドを実行する。

  4. レポート分析
    Jacocoによって生成されたレポートを分析する。なぜなら、レポートからはテストがどの程度のカバレッジを達成しているかを把握することができるからだ。例えば、HTML形式のレポートをブラウザで開くと、各クラスやメソッドのカバレッジが視覚的に分かる。

  5. 追加・修正
    必要に応じてテストケースを追加・修正し、カバレッジを向上させる。なぜなら、高いカバレッジはソフトウェアの品質を保証する一助となるからだ。例えば、カバレッジレポートから未テストの部分を特定し、その部分をカバーする新たなテストケースを追加する。

類似語

  • コード覆有率
    コード覆有率は、カバレッジの一種である。なぜなら、どの程度のコードがテストによって検証されているかを示す指標だからだ。例えば、全ての条件分岐を検証した場合、コード覆有率は100%となる。
  • テスト覆有率
    テスト覆有率もまた、カバレッジの一種である。なぜなら、どの程度の機能がテストによって検証されているかを示す指標だからだ。例えば、全ての機能に対してテストケースが存在し、それらが全てパスした場合、テスト覆有率は100%となる。
  • ブランチカバレッジ
    ブランチカバレッジは、カバレッジの一つで、特に条件分岐のテストを指す。なぜなら、分岐ごとのテストの有無を明らかにするからだ。例えば、if文やswitch文の各分岐がテストにより検証されていれば、ブランチカバレッジは高いと言える。

反対語

  • 無覆有
    無覆有は、カバレッジの反対語である。なぜなら、テストによって検証されていないコードや機能の割合を表しているからだ。例えば、全体のコードの半分しかテストがなければ、無覆有率は50%となる。
  • 未テスト
    未テストは、カバレッジの反対語である。なぜなら、テストが行われていない部分を指す言葉だからだ。例えば、新たに追加された機能がまだテストされていない場合、その機能は未テストとなる。
  • テスト欠落
    テスト欠落は、カバレッジの反対語である。なぜなら、必要なテストが行われていない状態を表すからだ。例えば、重要な機能に対するテストがまだない場合、テスト欠落があると言える。

会話例

  1. インタビューでの質問
    Q.「あなたのプロジェクトのテストカバレッジはどの程度ですか?」
    A.「我々のプロジェクトのテストカバレッジは約80%です。」

  2. チームミーティングでの質問
    Q.「今週のカバレッジレポートを見ていましたが、少し下がっていますね。何か原因がありますか?」
    A.「はい、新たに追加した機能のテストがまだ不十分なため、全体的なカバレッジが下がっています。」

  3. 一般的なディスカッションでの質問
    Q.「カバレッジってなんのことを指すの?」
    A.「ソフトウェアテストにおけるカバレッジとは、テストがソフトウェアのどの部分をカバーしているかを示す指標のことを指します。」

注意点

カバレッジを使用する時の注意点は、過信は禁物である。 なぜならばカバレッジはあくまで一面的な指標だからだ。

例えば100%のカバレッジを達成したとしても、全てのバグを捉えられたわけではない。 そして、カバレッジはテストの質を保証しない。

だから、カバレッジはテスト計画の一部として適切に使用することが重要である。

高いカバレッジでも万全ではない。

記事を書いてる人

ガラケー時代からWEB開発やってる自宅SE です。

「○○を知りたい!!」「○○が分からない!!」などありましたら、Twitterでもブログでもコメントいただければ、ご期待に添えるように頑張ります!

ネット事件簿チャンネルを運営しているので、YouTubeもぜひ覗いてみてください!!

雨おやじのSNSを覗く!!
IT用語辞典
雨おやじのSNSを覗く!!
ITkagyo

コメント