「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

テストカバレッジ

pointこの用語のポイント

pointテスト全体に対して、どれくらいの確認が終わったか?だよ

point何をもって「全体」と見なすかはケース・バイ・ケースだよ

スポンサーリンク

簡単に書くよ

テストカバレッジ(英:test coverage)とは

「テストを全部やると、これだけ確認できるはずだよ。それに対して今はこれだけの確認が終わってるよ」な割合のこと
です。


image piyo

詳しく書くよ

順番に見ていきましょう。
まずは予備知識として「カバレッジ」について簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。

カバレッジは「カバーしている(した)範囲」をカッコ付けて言った表現です。

テストカバレッジ

全体は、これくらいです。

テストカバレッジ2

ピヨ太君は、これくらいカバーしています。

テストカバレッジ3

ピヨ太君のカバーしている範囲がピヨ太君のカバレッジです。

テストカバレッジ4

以上を踏まえて

テストにおける「全部で、これだけ確認するよ」に対する「これだけ確認できたよ」の割合

が「テストカバレッジ」です。
日本語で「網羅率」と表現されたりもします。

テストカバレッジ5

テスト全体で、これくらいの確認をします。

テストカバレッジ6

そのうち、これくらいの確認が終わりました。

テストカバレッジ7

確認が終わった範囲、言い方を変えると

確認が終わった割合

がテストカバレッジです。

テストカバレッジ8

例えば、そうですね。
ここにピヨ太プログラムが ありました。

テストカバレッジ9

ピヨ太プログラムは

1.お腹が空いた
2.嫌なことがあった


のどちらかの条件を満たすと、ケーキを食べます。

テストカバレッジ10

そんな役立たずなプログラムです。

ピヨ太プログラムの処理を、もう少しプログラムっぽく書くと以下のようになります。

if((お腹が空いた? == Yes) or (嫌なことがあった? == Yes)){
  ケーキを食べる
}


テストカバレッジ11

このピヨ太プログラムに対して「処理が枝分かれしたときの行き先を全部1回は確認するぜ!」な方針でテストをやることにしました。
具体的には、ピヨ太プログラムが

1.ケーキを食べる
2.ケーキを食べない


の2つのパターンを、それぞれ確認します。

テストカバレッジ12

最初の時点では何も確認できていません。
テストカバレッジは0%です。

テストカバレッジ13

次にピヨ太プログラムを

1.お腹が空いた? → Yes

の条件に設定してテストをやりました。

テストカバレッジ14

このテストにより

1.ケーキを食べる

分岐に入ったときの処理に問題がないことを確認できました。

テストカバレッジ15

これでテストカバレッジは50%です。
全部で2つ確認するつもりです。
そのうちの1つが確認できました。
半分終わった計算です。

テストカバレッジ16

次にピヨ太プログラムを

1.お腹が空いた? → No
2.嫌なことがあった? → No


の条件に設定してテストをやりました。

テストカバレッジ17

このテストにより

2.ケーキを食べない

分岐に入ったときの処理に問題がないことを確認できました。

テストカバレッジ18

これでテストカバレッジは100%です。
全部で2つ確認するつもりです。
そのうちの2つとも確認できました。
全部終わった計算です。

テストカバレッジ19

なお、何をもって「全部」と見なすかはケース・バイ・ケースです。
テストの方針や、やり方によります。

今回の例では「枝分かれの行き先」に注目してテストをやりました。
ピヨ太プログラムが

1.ケーキを食べる
2.ケーキを食べない


の2つを確認できれば全部です。
テストカバレッジ100%になります。

もし、テストを「枝分かれする要素(条件)」に注目してやったら、どうでしょう。

ピヨ太プログラムにおける枝分かれする要素は

1.お腹が空いた?
2.嫌なことがあった?


の2つです。
それぞれYes/Noのどちらかになるので、

1.お腹が空いた? → Yes
2.お腹が空いた? → No
3.嫌なことがあった? → Yes
4.嫌なことがあった? → No


の4つが考えられます。

この4つを確認することを「全部」とした場合、先ほどのテストでは足りません。
先ほどのテストでは「ケーキを食べる」ルートの

1.お腹が空いた? → Yes

と「ケーキを食べない」ルートの

2.お腹が空いた? → No
4.嫌なことがあった? → No


しかやっていないからです。

3.嫌なことがあった? → Yes

の確認が取れていません。

「枝分かれの行き先」に注目した場合は、テストカバレッジが100%(2つ確認する予定の2つ)になりました。
「枝分かれする要素(条件)」に注目した場合は、テストカバレッジが75%(4つ確認する予定の3つ)にしかなりませんでした。

やったのは同じテスト内容なのにです。

このように、どのような観点でテストをやるかによって「全部」が変わります。
一応、頭の片隅にでも置いておいてあげてください。


image piyo2

一言でまとめるよ

まぁ「テストカバレッジ」って単語が出てきたら「テストにおける確認が終わった部分の割合なんだな~」と お考えください。

一番上に戻るよ
スポンサーリンク
書籍画像067
書籍画像023

おまけ

■訳してみるよ

「test(テスト)」はカタカナで「テスト」で分かりますよね。
「coverage(カバレッジ)」の意味は「適用範囲」とかです。
何となく くっつけると

テストの適用範囲

となります。





書籍画像
わわわ説明術コラム
宣伝だよ
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本
優れたエンジニアがコミュニティの中でしていること
クイズで学ぶUIデザイン ユーザビリティの基本が身につく50問