カバレッジ
カバレッジ(coverage、網羅率)
カバレッジ自体は網羅率と訳される
このページではソフトウェア開発のテストのカバレッジについて
テストカバレッジ(test coverage)
ソフトウェア開発において、所定の網羅条件がテストによってどれだけ実行されたかを割合で表したもの
プログラムをどれくらいテスト実施、カバーしているか(したか)の割合
コードカバレッジ(code coverage)
code:memo
if 判断文 {
命令
}
判断文は判定条件と読みかえても良い?
いろいろな網羅率
命令網羅(SC: Statement Coverage)
判定条件網羅(DC: Decision Coverage)
分岐網羅(BC: Branch Coverage)
条件網羅(CC: Condition Coverage)
判定条件/条件網羅(DC/CC: Decision Coverage/Condition Coverage)
改良条件判断網羅(MC/DC: Modified Condition/Decision Coverage)
複数条件網羅(MCC: Multiple Condition Coverage)
命令網羅(SC: statement coverage) それぞれの命令文が少なくとも1回は実行されるようにテスト
各処理が、少なくとも1回すべての可能な結果を得ている。
判定条件網羅(DC: Decision Coverage)、分岐網羅(BC: Branch Coverage) それぞれの判定条件における真偽が少なくとも1回は実行される
A and Bの条件がある場合、(A and B)を一つの塊をみたときの真、偽をテストする。
条件網羅(CC: condition coverage) 判定条件が複数条件である場合に採用する方法
判定条件を構成する各条件が真、偽の両方の場合でテストされるようにテストケースを設計する。ただし、判定条件の真偽両方をテストしなくてもよい。
判定条件/条件網羅(DC/CC: decision coverage/condition coverage)
判定条件網羅(C1)と条件網羅(C2)を合わせたコードカバレッジ。個々の条件の真偽と、判定結果の真偽がそれぞれ少なくとも1回は出現するようにテストを設計する。
改良条件判断網羅(MC/DC: Modified Condition/Decision Coverage) 以下の3つの条件を満たすもの
a.各「判断文」が、少なくとも1回すべての可能な結果を得ている。
b.1つの「判断文」中の各条件が、少なくとも1回すべての可能な結果を得ている。
c.1つの「判断文」中の個々の条件が、単独で全体の「判断文」の結果を左右する。
複数条件網羅(MCC: multiple condition coverage) それぞれの条件における真偽の組み合わせがすべて実行されるようにテストを設計
行カバレッジ(line coverage)
すべてのコード行のうち、テストで実行された行の割合
ブロックカバレッジ(block coverage)
すべてのブロックのうち、テストで実行されたブロックの割合
ブロックは、if文などによる分岐を含まない一連のステートメント
経路組み合わせ網羅(path coverage)
すべてのパス(可能な実行経路)のうち、テストで実行されたパスの割合
コード内のすべてのパス(制御パス)が少なくとも1回は実行されるようにテストを設計する
一般に非現実的なテストとなる
関数カバレッジ(function coverage)
関数が少なくとも1回呼び出されているか
トレードオフの関係
カバレッジ基準とカバレッジ率、テスト工数はトレードオフの関係
カバレッジはC0, C1, C2などなど色々な種類がある
できればツールで測るようにすると望ましい
C0, C1, C2のを満たす場合
しっかりした現場の場合、MCCまでやるような気がする
現場的には観点で同値クラス、境界値を選ぶ
テストカバレッジの歴史
関連
理解度チェック
Q. カバレッジ
[]。所定の[]条件がテストによってどれだけ[]されたかを[]で表したもの
Q. SC
[] coverage
[]網羅
Q. BC
[] coverage
[]網羅
Q. CC
[] coverage
[]網羅
Q. MCC
[] condition coverage
[]網羅
Q. DC
[] coverage
[]網羅
Q. MC/DC
[] condition / [] coverage
a.各[]が、少なくとも1回すべての可能な結果を得ている。
b.1つの[]中の各条件が、少なくとも[]回すべての可能な結果を得ている。
c.1つの[]中の個々の条件が、単独で全体の[]の結果を左右する。
Q. C0/C1/C2
C0: []網羅
C1: []網羅
C2: []網羅
Q. 下記のC0, C1, C2のケース数は
code:memo
function hogepiyo(input1, input2) {
//条件分岐1
if (input1 > 10) {
//処理1
} else {
//処理2
}
//条件分岐2
if (input1 % 2 == 0 || input2 % 3 == 0) {
//処理3
} else {
//処理4
}
}
C0 = [] ケース
C1 = [] ケース
C2 = [] ケース
Q. C0の条件は
各[]が、少なくとも1回は実行される。
Q. C1の条件は
それぞれの[]1における[]2が少なくとも1回は実行される
Q. C2の条件は
それぞれの[]文における[]が少なくとも1回は実行される
参考