コードカバレッジについてまとめてみた!その1

テストコードを書いているとコードカバレッジを気にすることになると思います。

コードカバレッジとはテストコードがどれだけ網羅しているかをあらわす指標です。

コードカバレッジにはさまざまな種類があり、わかりにくいので自分なりにまとめてみました!

 

コードカバレッジの種類

  • 命令網羅
  • 判定条件網羅、分岐網羅
  • 条件網羅
  • 判定条件/条件網羅
  • 複合条件網羅
  • 経路組み合わせ網羅

とたくさんのコードカバレッジが存在する。

 

命令網羅

statement coverageとも呼ばれます

statementはプログラミングで「文」のことで、

命令網羅はどれだけの文を通ったかを示しています。

 

判定条件網羅、分岐網羅

decision coverage, branch coverageとも呼ばれます。

if文のことを指していると考えるとわかりやすいです。

それぞれ、if文に入ったパターン、if文に入らなかったパターンをテストすることで100網羅したことになります。

命令分岐との違いはif文に入らなかったパターンもテストすることに有ります。

判定条件網羅、分岐網羅が100%であれば、命令網羅も100%となります。

 

条件網羅

condition coverageとも呼ばれます。

今度は先程とは違い、if文の条件を見ていると考えるとわかりやすいです。

if文のそれぞれの条件がtrue, falseになる条件をテストすることで100%網羅したことになります。

全ての文を実行するわけではないことに注意が必要です。

 

これまでの具体例

3つのコードカバレッジを解説しました。

ここで、具体例で理解を深めていきたいと思います。

以下のようなコードが有ります。

命令網羅, 判定条件網羅を100%にするには

condition_A = true, condition_B = false

condition_A = false, condition_B = false

とすることで、Hello()もWorld0も実行することができるので、命令網羅, 判定条件網羅は100%になります。

ただし、条件網羅の観点からだとcondition_Bがtrueである場合が考慮されていません。

条件網羅を100%にするには

condition_A = true, condition_B = false

condition_A = false, condition_B = true

とすることで出来ます。しかしこの条件ではWorld0は実行されず命令網羅は100%になりません。

 

今回紹介できなかった3つのコードカバレッジ

  • 判定条件/条件網羅
  • 複合条件網羅
  • 経路組み合わせ網羅

次回の記事に書きます。

 

 

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">