オールペア法(ペアワイズ法)について
オールペア法(all-pair testing)とは
オールペア法とは
オールペア法とは、2因子間の値の組み合わせを網羅するテストケースを効率的に作成するテスト手法です。
2因子間の取り得る値の組み合わせが同一回数でなくても、一回以上存在すればよいとしてテストを作成します。
これにより、全ての因子・水準の組み合わせを網羅するよりもはるかに少ない回数で組み合わせテストを構成することができます。
オールペア法は、ペアワイズ法(Pairwise Testing)や2因子間網羅テストとも呼ばれます。
ペアワイズとは英語で「二つを組にする、ペアを作る」という意味です。
「因子」と「水準」とは
因子とは、ある関係や結果を生じる諸要素のことです。ここでは「テストすべき条件」を意味します。
水準とは、その「選択値」のことです。
例えば製品デザインを対象とすると、「色」というカテゴリは因子であり、赤や青などの「色バリエーション」が水準に該当します。
その他の因子としては「サイズ」や「模様」なども挙げられます。
そして水準としては「Sサイズ/Lサイズ」や「花柄/ストライプ」などが挙げられます。
全網羅と水準網羅について
全網羅とは、全ての因子と水準を組み合わせるテスト手法です。
水準網羅とは、各因子の水準を、最低1回は組み合わせるテスト手法です。
網羅性が高くなると、テストすべき組み合わせ数は多くなり、テスト実施コストが大きくなります。
オールペア法の根拠
all-pair法は「ソフトウェアの不具合は一つまたは二つの因子の組み合わせによって発生することが多い」という経験則に基いています。
R.D.Kuhnの論文「Software Fault Interactions and Implications for Software Testing (2004)」で提言されています。
オールペア法の実施例
1.因子と水準を確認する
例えば、プルダウンメニューが3つある場合の組み合わせを考えてみます。
因子 | 水準 |
---|---|
プルダウンA | true, false |
プルダウンB | 0, 1 |
プルダウンC | 0, 1, 2 |
この場合、全組み合わせは「 2 * 2 * 3 = 12ケース」となります。
2.因子のペアを作成する
因子のペア(AB、AC、BC)を作成し、水準の組み合わせの全パターンを作成します。
パターンとしての組み合わせは下記の通り「 4 + 6 + 6 = 16」となります。
AB | AC | BC |
---|---|---|
true, 0 | true, 0 | 0, 0 |
true, 1 | true, 1 | 0, 1 |
false, 0 | true, 2 | 0, 2 |
false, 1 | false, 0 | 1, 0 |
false, 1 | 1, 1 | |
false, 2 | 1, 2 |
3.組み合わせを生成する
水準の組み合わせを取り出します。
このケースではABペアにACペア、BCペアを割り当てると効率的です。
なお、着目しているペア以外のペアに同じ組み合わせが現れないように割り付ける必要があります。
(この作業は非常に難しいため、テストツールや無料WEBサービスなどを利用したほうが漏れなく効率的に生成できます。)
# | プルダウンA | プルダウンB | プルダウンC |
---|---|---|---|
1 | true | 0 | 1 |
2 | true | 1 | 2 |
3 | false | 0 | 2 |
4 | false | 1 | 1 |
5 | true | 0 | 0 |
6 | false | 1 | 0 |
結果、テストケース数が12ケースから6ケースと半分になりました。
テストケース生成ツール
テストケース生成ツールについて
オールペア法のテストケース生成ツールは有償無償で数多く提供されています。
下記が有名なペアワイズ法のツールです。
- PICT(Pairwise Independent Combinatorial Testing tool)/Microsoft社
- Pairwiser / INDUCTIVE社(ノルウェー)
オールペア法(ペアワイズ法)の注意点
値を削減する工夫が必要な場合がある
パラメータ値(水準)の数が多いと、因子の数が少なくても、組み合わせの数は膨大になります。
なので、値の数が多い場合は、各値に「同値分割法」などの別の手法を適用して、値の数を削減します。
その後にペアワイズ法を適用すると効率的なテストケースが生成できます。
重要パターンがテストされない可能性がある
オールペア法は、重要なパターンがテストから漏れるという危険性があります。
つまり、製品機能上で利用頻度が高い、優先的にテストを実施すべき組み合わせパターンに対して、全くテストできていなかったという事が起こりえます。
テストすべき重要なパターンがある場合には、該当のパターンが漏れていないか必ずチェックを行い、不足していたら追加する対策が必要になります。