テストカバレッジ
テスト全体に対して、どれくらいの確認が終わったか?だよ
何をもって「全体」と見なすかはケース・バイ・ケースだよ
簡単に書くよ
テストカバレッジ(英:test coverage)とは
「テストを全部やると、これだけ確認できるはずだよ。それに対して今はこれだけの確認が終わってるよ」な割合のこと
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として「カバレッジ」について簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
カバレッジは「カバーしている(した)範囲」をカッコ付けて言った表現です。
全体は、これくらいです。
ピヨ太君は、これくらいカバーしています。
ピヨ太君のカバーしている範囲がピヨ太君のカバレッジです。
以上を踏まえて
テストにおける「全部で、これだけ確認するよ」に対する「これだけ確認できたよ」の割合
が「テストカバレッジ」です。
日本語で「網羅率」と表現されたりもします。
テスト全体で、これくらいの確認をします。
そのうち、これくらいの確認が終わりました。
確認が終わった範囲、言い方を変えると
確認が終わった割合
がテストカバレッジです。
例えば、そうですね。
ここにピヨ太プログラムが ありました。
ピヨ太プログラムは
1.お腹が空いた
2.嫌なことがあった
のどちらかの条件を満たすと、ケーキを食べます。
そんな役立たずなプログラムです。
ピヨ太プログラムの処理を、もう少しプログラムっぽく書くと以下のようになります。
if((お腹が空いた? == Yes) or (嫌なことがあった? == Yes)){
ケーキを食べる
}
このピヨ太プログラムに対して「処理が枝分かれしたときの行き先を全部1回は確認するぜ!」な方針でテストをやることにしました。
具体的には、ピヨ太プログラムが
1.ケーキを食べる
2.ケーキを食べない
の2つのパターンを、それぞれ確認します。
最初の時点では何も確認できていません。
テストカバレッジは0%です。
次にピヨ太プログラムを
1.お腹が空いた? → Yes
の条件に設定してテストをやりました。
このテストにより
1.ケーキを食べる
分岐に入ったときの処理に問題がないことを確認できました。
これでテストカバレッジは50%です。
全部で2つ確認するつもりです。
そのうちの1つが確認できました。
半分終わった計算です。
次にピヨ太プログラムを
1.お腹が空いた? → No
2.嫌なことがあった? → No
の条件に設定してテストをやりました。
このテストにより
2.ケーキを食べない
分岐に入ったときの処理に問題がないことを確認できました。
これでテストカバレッジは100%です。
全部で2つ確認するつもりです。
そのうちの2つとも確認できました。
全部終わった計算です。
なお、何をもって「全部」と見なすかはケース・バイ・ケースです。
テストの方針や、やり方によります。
今回の例では「枝分かれの行き先」に注目してテストをやりました。
ピヨ太プログラムが
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つ)にしかなりませんでした。
やったのは同じテスト内容なのにです。
このように、どのような観点でテストをやるかによって「全部」が変わります。
一応、頭の片隅にでも置いておいてあげてください。
一言でまとめるよ
まぁ「テストカバレッジ」って単語が出てきたら「テストにおける確認が終わった部分の割合なんだな~」と お考えください。
おまけ
■訳してみるよ
「test(テスト)」はカタカナで「テスト」で分かりますよね。
「coverage(カバレッジ)」の意味は「適用範囲」とかです。
何となく くっつけると
テストの適用範囲
となります。
■検索してみる?






