組み合わせテストをオールペア法でスピーディに!

第5回PICTの機能説明と使用例 (後編)

エイリアス

エイリアスは、ほぼ同等と考えることのできる複数の値に同じ名称を与える機能です。まったく同一とは言えないがほぼ同一と考えることのできる複数の値に対して、同値分割の考え方を適用し、同じ名称を与えます。これにより、組み合わせ生成の際に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インターフェース
1Linux250GBIEEE1394
2Linux500GBeSATA
3Linux750GBUSB2.0
4Mac OS X250GBeSATA
5Mac OS X250GBUSB2.0
6Mac OS X500GBIEEE1394
7Mac OS X750GBIEEE1394
8Windows 2000750GBeSATA
9Windows Vista500GBUSB2.0
10Windows XP250GBIEEE1394
表2 エイリアスを使用しない場合
No.OS種別HD容量HDインターフェース
1Linux250GBeSATA
2Linux500GBUSB2.0
3Linux750GBIEEE1394
4Mac OS X250GBUSB2.0
5Mac OS X500GBIEEE1394
6Mac OS X750GBeSATA
7Windows 2000250GBIEEE1394
8Windows 2000500GBeSATA
9Windows 2000750GBUSB2.0
10Windows Vista250GBeSATA
11Windows Vista500GBIEEE1394
12Windows Vista750GBUSB2.0
13Windows XP250GBeSATA
14Windows XP500GBUSB2.0
15Windows XP750GBIEEE1394

この例では、エイリアスを使用した場合は、使用しなかった場合に比べてテストケース数が3分の2に減少しています。値の数の多いパラメータで、同値と考えることのできる値がある場合は、エイリアスを積極的に使ったほうがよいでしょう。

無効値テスト

組み合わせテストでは通常、機能が動作しない無効値を含まないようにする必要があります。1つのテストケースに1つの無効値を含むと、機能が動作しなくなり、他のパラメータと組み合わせた意味がなくなります。

ここでは無効値を含むテストの実行を目的としている場合について述べます。1つのテストケースに無効値を2つ以上含むと、1つの無効値についてのテストとなり、残りの無効値についてのテストが行われなくなり、不完全なテストとなります。機能が動作しない場合の組み合わせでは、無効値どうしの組み合わせが行われないようにする必要があります。

PICTには無効値テストという機能があり、無効値どうしの組み合わせが生成されないようにすることができます。モデルファイルで値の前に記号⁠ ~ ⁠を置くことで無効値を指定します。

リスト2に無効値を含むモデルの例を示します。このモデルでは、FAXと通信回線の組み合わせをテストします。FAXとは通信できない無効値である電話機が含まれています。さらにFAX使用に制限があるIP外線も無効値としています(実際には多くの場合、支障なく使用できます⁠⁠。

リスト2 無効値を含むモデル
発信端末:   FAX, ~電話機
通信回線:   アナログ, ISDN, ~IP外線
着信端末:   FAX, ~電話機
表3 無効値テストの結果
No.発信端末通信回線着信端末
1~電話機ISDNFAX
2~電話機アナログFAX
3FAX~IP外線FAX
4FAXISDN~電話機
5FAXISDNFAX
6FAXアナログ~電話機
7FAXアナログ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は最もテストケースが少なくなることを最優先します。その後で、どの値を割り当ててもかまわない組み合わせがある場合に、重み付けに従って割り付けを行います。

原型ファイル

原型ファイルには2つの使用方法があります。

(1)前に使用したモデルを変更する必要がある場合、以前のモデルで作成したテストケースを再利用して、できるだけ少ない変更で新しいテストケースを作成します。
(2)生成されるテストケースに必ず含まれるべきである重要な組み合わせを指定します。指定された組み合わせで出力が初期化され、次に残りの組み合わせが生成されます。

テストケースの原型を原型ファイルで定義します。 PICT実行時に/e:オプションを使用して原型ファイルを指定します。

図1 原型ファイルの指定例
pict model.txt /e:prototype.txt

原型ファイルはPICTによって生成されたテストケースと同じフォーマットを使用します。1行目はTABによって分離されたパラメータ名で構成されます。2行目以降の行はTABによって分離された値の並びで構成されます。

原型ファイルはエディタで作成することもできます。必ず1行目から記述し、各行の1桁目から記述しなければなりません。異なる記述を行うとエラーとなります。原型ファイルができあがったら文字コードを日本語(EUC)でセーブします。

原型ファイルの使用例を以下に示します。

[例1]新しい値を追加する

リスト4 ⁠新しい値の追加例]原型ファイル:old.txt
A   B   C
a1  b2  c2
a1  b1  c1
a3  b2  c1
a2  b1  c2
a2  b2  c1
a3  b1  c2
リスト5 ⁠新しい値の追加例]モデルファイル:m.txt
A:  a1, a2, a3
B:  b1, b2, b3
C:  c1, c2

新しいモデルファイルでは、パラメータBに値b3が追加されています。原型ファイルを流用して新しいテストケースを作成するため次のコマンドを実行します。

図2 リスト4の原型ファイルにリスト5の内容を追加して新しいテストケースを作る
pict m.txt /e:old.txt >new.txt
表4 新しい値が追加されたテストケース
No.ABC
1a1b2c2
2a1b1c1
3a3b2c1
4a2b1c2
5a2b2c1
6a3b1c2
7a3b3c1
8a1b3c2
9a2b3c1

新しく生成されたテストケースには、原型ファイルの内容がそのまま流用され、追加した値b3に関する組み合わせのみが追加されています。これにより既存のテストケースでテストした後で仕様変更などにより、新しい値を追加してテストを行う必要が生じた場合、追加された値に関する組み合わせだけテストすればよいことになります。

[例2]必ず含まれなければならない組み合わせを指定する

リスト6 ⁠必ず含まなければならない組み合わせの指定例]原型ファイル:init.txt
A   B   C
a1  b1  c1
a1  b1  c2
a1  b2  c1
a1  b2  c2
リスト7 ⁠必ず含まなければならない組み合わせの指定例]モデルファイル:m.txt
A:  a1, a2, a3
B:  b1, b2
C:  c1, c2

エディタで作成した原型ファイルでは値a1について、他のパラメータBとCのすべての値と組み合わされています。このような、あるパラメータの特定の値についてのみ、ほかのすべてのパラメータが持つ値と組み合わせることは、PICTの柔軟な制約条件指定機能をもってしても指定することができません。したがって、このような複雑な組み合わせは原型ファイルを使って指定することができます。

原型ファイルをもとに新しいテストケースを作成するため、次のコマンドを実行します。

図3 リスト6の原型ファイルを使用
pict m.txt /e:init.txt >new.txt
表5 指定した組み合わせが含まれたテストケース
No.ABC
1a1b1c1
2a1b1c2
3a1b2c1
4a1b2c2
5a3b2c2
6a2b1c2
7a3b1c1
8a2b2c1

新しく生成されたテストケースには、原型ファイルの内容がそのまま流用され、その他のパラメータの組み合わせが追加されています。この例のように、制約条件では指定できない複雑で特殊な組み合わせでも、エディタを使用して原型ファイルで指定することにより、簡単に指定することができます。

これまでの説明で、PICTの使いやすさがおわかりいただけたでしょうか。同様なことを直交表ベースで行おうとすると、専用のソフトウェアを自力で開発しなければ不可能だと思われる機能がほとんどです。人手でもやれる機能もありますが、その場合でもPICTに比べてはるかに時間がかかってしまいます。ここにPICTの優位性があります。直交表ベースの組み合わせテスト技法に対して、PICTは飛躍的な柔軟性を備えており、無償で使用することができるからです。

さて次回は最終回になります。次回ではPICTの柔軟性をさらに高めるテストケースの作成支援機能も備えた、Excel上で動作するテストケース作成支援ツールを詳しく紹介します。

おすすめ記事

記事・ニュース一覧