エイリアス
エイリアスは,ほぼ同等と考えることのできる複数の値に同じ名称を与える機能です。まったく同一とは言えないがほぼ同一と考えることのできる複数の値に対して,同値分割の考え方を適用し,同じ名称を与えます。これにより,組み合わせ生成の際に1つの値として扱われ,組み合わせ完成後,エイリアスでまとめた複数の値には本来の名称が付与されます。
エイリアスを使用することによって,生成される組み合わせの数を大幅に減らすことが可能です。
オールペア法で生成される組み合わせの数は,最も多くの値を持つパラメータP1と,P1と同じか次に多くの値を持つパラメータP2の,それぞれの値の個数をP1n, P2nとすると,これらを積算した値か,それより多い値になります。生成される組み合わせ(テストケース)の数TCnは次式で表されます。
TCn = P1n * P2n + α
ここでαの値は,パラメータP2の次に多くの値を持つパラメータP3以降が持つ値の個数P3n, P4n・・・によって異なります。この数がP2nと等しいかほとんど同じ場合は,多くの場合αは比較的大きな値になります。逆にP2nより小さい場合は,αは小さな値になります。P2nよりかなり小さい場合,αは0になります。このことから,エイリアスを適用するパラメータは,最も多くの個数の値を持つパラメータを対象にしたほうが,組み合わせ数を削減する効果が最も大きくなります。逆に,比較的少ない個数の値しか持たないパラメータに適用しても効果がありません。
エイリアスを使用したモデルの例をリスト1に示します。この例では,OS種別とHD容量およびHDインターフェースの組み合わせをテストします。このモデルでは,OS種別の5個の値から,Windows系3個をエイリアスの記号“|”で1つにまとめ,全体で3個にしています。エイリアスでまとめた場合,先頭の値の名称を指定することで制約条件などを記述することができます。
リスト1 エイリアスを使用したモデルの例
OS種別: Windows Vista | Windows XP | Windows 2000, Linux, Mac OS X
HD容量: 250GB, 500GB, 750GB
HDインターフェース: USB2.0, IEEE1394, eSATA
エイリアスを使用したリスト1の組み合わせ生成結果を表1に,エイリアスを使用しなかった場合の組み合わせ生成結果を表2に示します。
表1 エイリアスを使用した場合
| No. | OS種別 | HD容量 | HDインターフェース |
|---|---|---|---|
| 1 | Linux | 250GB | IEEE1394 |
| 2 | Linux | 500GB | eSATA |
| 3 | Linux | 750GB | USB2.0 |
| 4 | Mac OS X | 250GB | eSATA |
| 5 | Mac OS X | 250GB | USB2.0 |
| 6 | Mac OS X | 500GB | IEEE1394 |
| 7 | Mac OS X | 750GB | IEEE1394 |
| 8 | Windows 2000 | 750GB | eSATA |
| 9 | Windows Vista | 500GB | USB2.0 |
| 10 | Windows XP | 250GB | IEEE1394 |
表2 エイリアスを使用しない場合
| No. | OS種別 | HD容量 | HDインターフェース |
|---|---|---|---|
| 1 | Linux | 250GB | eSATA |
| 2 | Linux | 500GB | USB2.0 |
| 3 | Linux | 750GB | IEEE1394 |
| 4 | Mac OS X | 250GB | USB2.0 |
| 5 | Mac OS X | 500GB | IEEE1394 |
| 6 | Mac OS X | 750GB | eSATA |
| 7 | Windows 2000 | 250GB | IEEE1394 |
| 8 | Windows 2000 | 500GB | eSATA |
| 9 | Windows 2000 | 750GB | USB2.0 |
| 10 | Windows Vista | 250GB | eSATA |
| 11 | Windows Vista | 500GB | IEEE1394 |
| 12 | Windows Vista | 750GB | USB2.0 |
| 13 | Windows XP | 250GB | eSATA |
| 14 | Windows XP | 500GB | USB2.0 |
| 15 | Windows XP | 750GB | IEEE1394 |
この例では,エイリアスを使用した場合は,使用しなかった場合に比べてテストケース数が3分の2に減少しています。値の数の多いパラメータで,同値と考えることのできる値がある場合は,エイリアスを積極的に使ったほうがよいでしょう。
無効値テスト
組み合わせテストでは通常,機能が動作しない無効値を含まないようにする必要があります。1つのテストケースに1つの無効値を含むと,機能が動作しなくなり,他のパラメータと組み合わせた意味がなくなります。
ここでは無効値を含むテストの実行を目的としている場合について述べます。1つのテストケースに無効値を2つ以上含むと,1つの無効値についてのテストとなり,残りの無効値についてのテストが行われなくなり,不完全なテストとなります。機能が動作しない場合の組み合わせでは,無効値どうしの組み合わせが行われないようにする必要があります。
PICTには無効値テストという機能があり,無効値どうしの組み合わせが生成されないようにすることができます。モデルファイルで値の前に記号“ ~ ”を置くことで無効値を指定します。
リスト2に無効値を含むモデルの例を示します。このモデルでは,FAXと通信回線の組み合わせをテストします。FAXとは通信できない無効値である電話機が含まれています。さらにFAX使用に制限があるIP外線も無効値としています(実際には多くの場合,支障なく使用できます)。
リスト2 無効値を含むモデル
発信端末: FAX, ~電話機
通信回線: アナログ, ISDN, ~IP外線
着信端末: FAX, ~電話機
表3 無効値テストの結果
| No. | 発信端末 | 通信回線 | 着信端末 |
|---|---|---|---|
| 1 | ~電話機 | ISDN | FAX |
| 2 | ~電話機 | アナログ | FAX |
| 3 | FAX | ~IP外線 | FAX |
| 4 | FAX | ISDN | ~電話機 |
| 5 | FAX | ISDN | FAX |
| 6 | FAX | アナログ | ~電話機 |
| 7 | FAX | アナログ | FAX |
表3が生成結果です。この生成結果には,無効値どうしの組み合わせがありません。この例では,無効値の場合でもすべてのペアを組み合わせています。そこまでの徹底したテストが不要な場合は,制約条件定義で各無効値1つに1つのテストケースのみが生成されるように指示することもできます。
値が複数の名前を持つエイリアスの場合,最初の名前に記号“ ~ ”を付けます。制約条件の記述で無効値を指定する場合は,記号“ ~ ”は省略します。
重み付け
特定の値を重点的にテストしたい場合,重み付けの機能が役に立つ場合があります。重み付けを使用すると,指定された値がより多くテストケースに現れるようになります。重み付けは重点的にテストしたい値の右側に括弧( )で数値を付加します。リスト3に重み付けの例を示します。
リスト3 重み付けの例
A: A1, A2, A3, A4, A5, A6, A7
B: B1, B2, B3, B4, B5
C: C1, C2, C3 (10)
このように指定すると,値C3はC1,C2よりも多くテストケースに現れるようになります。括弧内の数字には絶対的な意味はなく,C1,C2より10倍多く現れるということを意味するものではありません。あくまでも相対的な意味であり,たとえばC2に(30)と付加した場合,C2がC3より多く現れるようになるということを意味するだけです。
重み付けが有効なのは,他のパラメータが持つ値の数より,重み付けを行うパラメータが持つ値の数がかなり少ない場合です。リスト3の例では,パラメータAやBの値に重み付けを行ってもテストケースには反映されません。PICTは最もテストケースが少なくなることを最優先します。その後で,どの値を割り当ててもかまわない組み合わせがある場合に,重み付けに従って割り付けを行います。

