単体テストのカバレッジC0/C1/C2 わかりやすい覚え方解説

スポンサーリンク
システム開発

いつもわからなくなる単体テストのカバレッジC0/C1/C2についてまとめてみます。

もうわからなくなることがないように整理してみたいと思います。

スポンサーリンク

単体テストの網羅率(カバレッジ)

似た名前が多くていつも単体テストの網羅率(カバレッジ)にて、わからなくなるのでまずは表とイメージで整理してみます。

名称略称別名内容
命令網羅C0すべての命令を1回通る
分岐網羅C1判定条件網羅すべての分岐経路を1回通る
条件網羅C2分岐の条件が1回は判定される
情報処理教科書 プロジェクトマネージャ 2021年版 P490~P491 図7,図8,図9を基に作成
情報処理教科書 プロジェクトマネージャ 2021年版 P490 図7,図8,図9を基に作成

どれがどの名称だったかわからなくなるすべての元凶は、個人的には”判定条件網羅”にあると思います。ここでも”条件網羅”という言葉が出てくる一方で、条件網羅という名称単独でも存在するので訳が分からなくなります。

 

スポンサーリンク


命令網羅C0

命令網羅とは、命令に着目した単体テストの設計技法です。

全ての”命令”を1回通ればOKとするテストケース設計技法である。

情報処理教科書 プロジェクトマネージャ 2021年版 P490~P491

次のような処理の場合のテストケースを考えてみます。

情報処理教科書 プロジェクトマネージャ 2021年版 P490 図7命令網羅を基に作成
【テストケース】
ケースNo1 : A = True、B = True

続いて、条件判定がandではなく、orになった場合の処理のテストケースを考えてみます。

情報処理教科書 プロジェクトマネージャ 2021年版 P490 図7命令網羅を基に条件式を変えて作成
【テストケース】ケース1、ケース1'、ケース''の3つの中からいずれか1つ
ケースNo1 : A = True、B = True
ケースNo1' : A = True、B = False
ケースNo1'' : A = False、B = True

このように、とにかく各命令が1回ずつ実行されれば良いと考えます。

 

スポンサーリンク


分岐網羅C1

分岐網羅とは、分岐に着目した単体テストの設計技法です。これが一番混乱を生む元凶です。

分岐=判定条件です。

判定条件の結果、分岐が変わるということを意味しています。

”分岐”に着眼したテストケースである。すべての分岐経路を網羅させればいい

情報処理教科書 プロジェクトマネージャ 2021年版 P490~P491

次のような処理の場合のテストケースを考えてみます。


情報処理教科書 プロジェクトマネージャ 2021年版 P490 図8分岐網羅(判定条件網羅)を基に作成
【テストケース】ケース1とケース2,2',2''の3つの中から1つ
ケースNo1 : A = True、B = True
ケースNo2: A = True、B = False
ケースNo2': A = False、B = True
ケースNo2'': A = False、B = False

続いて、条件判定がandではなく、orになった場合の処理のテストケースを考えてみます。


情報処理教科書 プロジェクトマネージャ 2021年版 P490 図8分岐網羅(判定条件網羅)を基に条件式を変えて作成
【テストケース】ケース1,1',2''の3つの中から1つケース2
ケースNo1 : A = True、B = False
ケースNo1': A = False、B = True
ケースNo1'': A = True、B = True
ケースNo2: A = False、B = False

このように、判定式全体」を見て、判定式が真になる場合、偽になる場合それぞれ1回ずつ実行されるようにと考えます。

 

スポンサーリンク


条件網羅C2

条件網羅とは、分岐(判定条件)を司る1つ1つの条件に着目した単体テストの設計技法です。

分岐の”条件”に着眼したテストケースである。

情報処理教科書 プロジェクトマネージャ 2021年版 P490~P491

そのため、1つ1つの条件の結果、判定条件が定まり、分岐が決まると考えると良いです。条件と判定条件、分岐の関係は次のようになっています。この図が頭に入っていれば、単体テストの設計におけるC0,C1,C2について迷うことはないと思います。

次のような処理の場合のテストケースを考えてみます。


情報処理教科書 プロジェクトマネージャ 2021年版 P490 図9条件網羅を基に作成
【テストケース】ケース1、ケース2の組合せや、ケース1'、ケース2'の組合せなど
ケースNo1 : A = True、B = True
ケースNo1' : A = True、B = False
ケースNo2: A = False、B = False
ケースNo2': A = False、B = True
※AはA単体でTrure/Falseを、BはB単体でTrue/Falseをそれぞれ1回ずつ網羅すればよい

続いて、条件判定がandではなく、orになった場合の処理のテストケースを考えてみます。ただ、個々に条件に着目しているため、andからorに変っても想定ケースは変わりません。



情報処理教科書 プロジェクトマネージャ 2021年版 P490 図9条件網羅を基に条件式を変えて作成
【テストケース】ケース1、ケース2の組合せや、ケース1'、ケース2'の組合せなど
ケースNo1 : A = True、B = True
ケースNo1' : A = True、B = False
ケースNo2: A = False、B = False
ケースNo2': A = False、B = True
※AはA単体でTrure/Falseを、BはB単体でTrue/Falseをそれぞれ1回ずつ網羅すればよい

このように、個々」の条件式を見て、それぞれの条件が真になる場合、偽になる場合それぞれ1回ずつ実行されるようにと考えます。

 

スポンサーリンク


分岐網羅/条件網羅 C1/C2

分岐網羅(判定条件網羅)C1だけでも、条件網羅C2だけでも、カバレッジに漏れが出ます。したがって、しばしば推奨されるテストケース設計技法分岐網羅/条件網羅です。

分岐網羅/条件網羅の場合のテストケースについて考えます。


情報処理教科書 プロジェクトマネージャ 2021年版 P491 図10分岐/条件網羅を基に作成
【テストケース】ケース1、ケース2、ケース3
ケースNo1 : A = True、B = False
ケースNo2 : A = False、B = True
ケースNo3: A = True、B = True

続いて、同じように条件判定がandではなく、orになった場合の処理のテストケースを考えてみます。

情報処理教科書 プロジェクトマネージャ 2021年版 P491 図10分岐/条件網羅を基に条件式を変えて作成
【テストケース】ケース1、ケース2、ケース3
ケースNo1 : A = False、B = False
ケースNo2 : A = True、B = False
ケースNo3: A = False、B = True

このように、判定式「全体」と「個々」の条件式のそれぞれの視点から「全体」が真になる場合、偽になる場合と、「個々」の条件式が真になる場合、偽になる場合それぞれ1回ずつ実行されるようにと考えます。

 

スポンサーリンク


単体テストカバレッジの覚え方

単体テスト設計をするうえでは、命令網羅、分岐網羅(判定条件網羅)、条件網羅、そして分岐網羅/条件網羅の理解が欠かせません。しかし、似た名前が多く覚えては忘れることの繰り返しだと思います。

そんな時は、次の図をイメージしてみると、分岐網羅(判定条件網羅)と条件網羅、そして、分岐網羅/条件網羅(判定条件網羅/条件網羅)の違いが分かると思いますので、参考にしてみてください。

参考文献:情報処理教科書 プロジェクトマネージャ 2021年版

コメント

タイトルとURLをコピーしました