テストケース作成に必要な作業を直交表とPairwise法(All-Pair法)で比較する | 組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題

テストケース作成に必要な作業を直交表とPairwise法(All-Pair法)で比較する

適用するテスト技法が組み合わせテストの場合、直交表ベースでテストケースを作成するか、Pairwise法(All-Pair法)ベースで作成するかどちらかを選択することになります。どちらのアプローチでもテスト対象にふさわしいパラメータと値を決定する作業は同じだけの工数がかかります。漏れのないテストケースを作成する上でテスト分析に相当するこの作業が最も重要であることは言うまでもありません。


パラメータと値が決定した後の作業は直交表ベースとPairwise法(All-Pair法)ベースととで大きく異なります。ここでは直交表ベースにおいては専用のツールを利用している事例はかなり少ないと思われるため、手作業で行なう場合を取り上げます。Pairwise法(All-Pair法)ベースでは手作業でテストケースを作成することはほとんど不可能であるため、専用ツールの利用は必須事項です。ここではPictMasterを利用することにします。


Pairwise法(All-Pair法)ベースの場合では、この後の作業手順は次の通りとなります。


. パラメータと値をツールに入力する。
. 同値と見なせる値があればツールで指定する。
. 値の重み付けが必要であればツールで指定する。
. 制約があればツールで指定する。
. ツールでテストケースを生成する。


以上の作業は機械的に行なうことができ、テスト分析と比較してかなり少ない時間で済みます。


直交表ベースでの作業手順は次の通りとなります。


. モデル(パラメータと値)に合う直交表の大きさを決定する。
. モデルに合う直交表がない場合、既存の直交表を変形してモデルに合う直交表を作成する。
. 値の数に比較して直交表の水準数が不足する場合、線点図を用いて多水準の直交表に変形する。
. 直交表の水準数と値の数が合わない場合、ダミーの値を追加するか、複数の値を1つの値にまとめる
. 制約があればそれを直交表に入れ込む。


上の手順で1と2は最も値の数が多いパラメータと次に値の数が多いパラメータのそれぞれの値の数を掛け合わせた値が最も小さな直交表のサイズになります。ただし、モデルによっては最小サイズの直交表では収まりきらない場合があります。これは値の数が多いパラメータが比較的多く存在するモデルで発生します。この場合は自由度を用いた見積もりを行ない、より大きなサイズの直交表を採用することになります。2水準系の直交表を利用するならば、サイズは4,8,16,32…と2のべき乗で大きくなります


手順3では2水準系の直交表であれば線点図を用いることで値の数に収まるだけの水準数を持つ直交表に変形することができます。この場合も水準数は2,4,8,16と2のべき乗の数になります。8個を超える値が2つ以上存在するモデルではL256の直交表が必要となります。2水準系の直交表は変形がしやすいという利点がありますが、値の数が多いモデルではテストケース数が多くなりすぎてしまうという問題があります。


手順4では手順3までで作成した直交表を利用するにあたって、パラメータの値と直交表の水準数が異なる場合に、直交表の水準数にパラメータの値を当てはめる作業を行ないます。モデルと直交表がぴったり一致するケースはほとんどないため、この作業は必ず行なう必要があると考えた方がよいでしょう。直交表の水準数が多い場合は不足する水準にダミーの値を割り付けます。この際に、特に重要と考えられる値をダミーの値として使用することで、他の値よりも多くの組み合わせとすることができます。逆に直交表の水準が少ない場合はパラメータの値の一部を同値と見なして1つの値として直交表に割り付けます。割り付け終ったあとで元の複数の値に戻します。


同値分割を行なうこと自体、もともと同値とみなせる値であるならば何も問題はありません。問題は同値でないのに強引に同値としてしまう場合があり得るという点です。ここでより水準数の大きな直交表に変形すればそうした問題は起きないのですが、たとえば値の数が5個の場合、4水準では足りないので次はその2倍の8水準にしなければなりません。このためにテストケース数が2倍になってしまうような場合、テスト工数の増加を恐れて無理に同値分割を行ない、4水準に納めるといったことが無いとは言い切れません。


組み合わせることのできない組み合わせ(制約)がある場合、手順5で制約の関係にあるパラメータの組み合わせマトリクス表を作成し、直交表からその組み合わせを除外します。これを行なうことで直交性が失われ、2-Wayカバレッジ100%を確保できなくなります。Pairwise法(All-Pair法)では、制約を実現したうえでペアの組み合わせが生成されるため、制約があるからといって2-Wayカバレッジ100%を確保できなくなるということにはなりません。Pairwise法(All-Pair法)ではツールによって制約の関係にある組み合わせは自動で除外することができますが、直交表ベースでは手作業で行わなければなりません。単純な制約なら問題はありませんが複雑な制約の場合、手作業では煩雑すぎて手に負えないという事態に陥る可能性があります。


これらの直交表ベースの手順を完了するには、Pairwise法(All-Pair法)ベースと比較しておおざっぱにですが数倍程度は時間がかかると考えられます。直交表のメリットとして高い3-Wayカバレッジを確保できるとされていますが、2-Wayカバレッジ100%を確保できない場合はいくら3-wayカバレッジが高いと言っても組み合わせテストの基本である「ペア構成テスト」ができていないのですからあまり意味があるとは思えません。


Pairwise法(All-Pair法)ベースではモデルの特性に合わせて値の重み付けや同値分割(エイリアス化)を行ないます。ここには何の制限も存在しません。自由自在です。しかし直交表ベースではどうしても「直交表にモデルを当てはめる」という傾向にならざるを得ません。直交表の水準が余ったから値の重み付けを行なう直交表の水準が足りないから同値分割を行なう。テスト対象を確実にかつ効率よくテストする上での必要に迫られて値の重み付けや同値分割を行なうのではなく、直交表の都合に合わせて値の重み付けや同値分割を行なうといったことにもなりかねません。


もともと直交表は実験計画法で利用されてきました。それをソフトウェアテストに「流用」した訳です。実験計画法が扱う対象の水準は2つの場合が多いという特徴があります。ソフトウェアテストのように多水準の因子が多数存在するといった使い方はまずしません。また実験計画法での直交表の使い方には水準が余った場合にダミーの水準を使うということはありますが、水準が足りない場合に同値と見なして1つとして扱うという使い方はしません。そして制約という概念も実験計画法の直交表には存在しません。


こうした事情があるため、直交表は実験計画法で盛んに利用されてきました。実験計画法での直交表の利用は理想的です。ではソフトウェアテストに導入した直交表の使い方はどうでしょうか。実験計画法では無理なく使えても、ソフトウェアテストでは話が違います。多水準の値がいくつも存在しますし、直交表の水準では足りないといったことが頻繁に起こります。実験計画法では存在しない「制約」が存在します。実験計画法で利用されてきた直交表をソフトウェアテストに導入したために、これまで述べた様々な弊害が生まれたことは否定できません。


とはいえ、直交表を使った組み合わせテストは3パラメータ間の組み合わせが均等に現れる3-Wayカバレッジが高いといった特徴があります。これはPairwise法(All-Pair法)にはない長所です。テストケース作成に時間がかかる、テストケース数が増加するなどといった点を問題とせず、モデルと直交表が無理なくマッチしているなら、直交表ベースでテストケースを作成することはよいことだと思います。その他に、テスト結果がOK/NGの2値では判定できず、出力レベルといったような連続値で表わされる場合は、結果に影響を与える交互作用やをSN比を調べることができる直交表によるテストが適しています。