組み合わせテスト(直行表・オールペア法)を使ってみよう
はじめに
ソフトウェアのテストには様々な技法があります。
その中で、組み合わせテスト技法である直行表・オールペア法について紹介します。
直行表やオールペア法に則してテスト設計をすることで、テストすべき項目を洗い出してソフトウェアのテストをすることができます。
直行表とは
直交表とは、どの2列をとっても、その水準のすべての組み合わせが同数回現れる配列のことです。
テスト対象の項目を因子、対象項目が取りうる値を水準と呼びます。
例えば、以下のようになります。
因子 | 水準 |
---|---|
性別 | 男性・女性 |
年齢 | 20歳未満・20歳以上 |
出生地 | 日本・米国・日米以外 |
これらの全組み合わせは2×2×3=12通りあります。
これを直行表で表すと以下のようになります。
No. | 性別 | 年齢 | 出生地 |
---|---|---|---|
1 | 男性 | 20歳未満 | 日本 |
2 | 男性 | 20歳未満 | 米国 |
3 | 男性 | 20歳未満 | 日米以外 |
4 | 男性 | 20歳以上 | 日本 |
5 | 男性 | 20歳以上 | 米国 |
6 | 男性 | 20歳以上 | 日米以外 |
7 | 女性 | 20歳未満 | 日本 |
8 | 女性 | 20歳未満 | 米国 |
9 | 女性 | 20歳未満 | 日米以外 |
10 | 女性 | 20歳以上 | 日本 |
11 | 女性 | 20歳以上 | 米国 |
12 | 女性 | 20歳以上 | 日米以外 |
これは、すべての因子の水準同士の組み合わせを表現しているので、全網羅といったりします。また、3つの因子の水準同士の組み合わせを表現しているので、3因子間網羅と呼んだりします。
ここで一つ疑問が生じます。因子の数や水準が増えていった場合はどうなるでしょうか?
例えば、因子の種類が9種類で、それぞれの因子の水準の数は9種類あると、9の9乗になるので、387420489通りになります。
一方で、ソフトウェアテストの世界では、Software fault interactions and implications for software testing - IEEE Journals & Magazine の論文にあるように、以下であることが経験的に分かっています。
- 経験的根拠「多くの欠陥は2因子間でみつかる」
- 1因子で見つかる欠陥: 29%〜68%
- 2因子で見つかる欠陥: 70%〜97%
- 3因子で見つかる欠陥: 89%〜99%
とするとすべての因子の水準同士の組み合わせでなくても、2因子や3因子の水準同士の組み合わせでもソフトウェアのテストとしては十分な場合が多いと考えられます。
例えば、前述の組み合わせの2因子間網羅での直行表は以下になります。
No. | 性別 | 年齢 | 出生地 |
---|---|---|---|
1 | 女性 | 20歳以上 | 米国 |
2 | 男性 | 20歳未満 | 日本 |
3 | 女性 | 20歳未満 | 米国 |
4 | 女性 | 20歳以上 | 日本 |
5 | 女性 | 20歳以上 | 日米以外 |
6 | 男性 | 20歳未満 | 日米以外 |
7 | 男性 | 20歳以上 | 米国 |
組み合わせテストツール
前述のような、2因子間網羅や3因子間網羅はツールで自動で抽出できます。
例えば、MicrosoftのOSSのPICTなどがあります。
おわりに
その他組み合わせテストの技法やPICTの簡単な使い方については後日紹介したいと思います。