調べてみたところ、直行表とは別にペアワイズ法(Pairiwise)というやり方があり、フリーのツールを使って簡単にテストケースを生成できるらしい。ペアワイズ法は2因子網羅を満たすことに注力しているため、直行表よりも3因子網羅率が下がるみたい。つまりテストケース数も減るってことかな。
ツールは色々あるらしいのですが、私が使ったのは Microsoft 社の PICT。オプションで3因子網羅を満たすことも可能であり、禁則処理も容易にできるとのこと。これは使うしかない!!
ちなみに、ペアワイズ法はオール・ペア法(All-Pairs)とも呼ばれるらしいです。
[ 注釈 ]
因子:パラメータ名
水準:パラメータ値
禁則:ありえないパターンを除くための制約
PICT の導入
Windows の場合は、http://www.pairwise.org/tools.asp から PICT を検索してクリック。ダウンロードされたファイル (pict33.msi) を実行してインストール。環境変数PATHも通してくれる。
他の OS の場合、Git が使えるなら以下のコマンドを実行。
$ git clone https://github.com/Microsoft/pict.git $ cd pict $ make |
Git が使えない場合は https://github.com/Microsoft/pict から ZIP ファイルをダウンロード。解凍して Makefile のあるディレクトリにて make コマンドを実行。
PICT のオプション
$ pict Pairwise Independent Combinatorial Testing Usage: pict model [options] Options: /o:N - Order of combinations (default: 2) /d:C - Separator for values (default: ,) /a:C - Separator for aliases (default: |) /n:C - Negative value prefix (default: ~) /e:file - File with seeding rows /r[:N] - Randomize generation, N - seed /c - Case-sensitive model evaluation /s - Show model statistics |
model は読み込ませるファイル。オプションで使いそうなのは /o:N /e:file /s くらいかな。
モデルファイル
モデルのサンプルファイルを作ってみる。モデルファイルの書き方は以下のようになっている。<因子>: <水準1>, <水準2>, ...
pict.txt
# サンプルモデル
MODE: 0, 1
FORMAT: YUV, RGB, RAW
RATE: 100Mbps, 1Gbps, 10Gbps
$ pict pict.txt MODE FORMAT RATE 0 RAW 100Mbps 0 RGB 10Gbps 1 YUV 100Mbps 0 YUV 1Gbps 1 RGB 100Mbps 1 YUV 10Gbps 1 RGB 1Gbps 1 RAW 1Gbps 0 RAW 10Gbps |
今回のサンプルでは因子が3つしかないので、オプション /o:N で3因子網羅にすると 3*3*2=18 パターン表示されるはずと思って試したところ、ちゃんと出た。
$ pict pict.txt /o:3 MODE FORMAT RATE 0 RGB 100Mbps 1 YUV 100Mbps 0 RGB 1Gbps 0 RAW 1Gbps 1 RAW 1Gbps 1 RGB 1Gbps 1 RGB 100Mbps 0 YUV 100Mbps 0 RAW 100Mbps 0 YUV 10Gbps 1 RGB 10Gbps 1 YUV 1Gbps 1 YUV 10Gbps 0 YUV 1Gbps 0 RGB 10Gbps 1 RAW 100Mbps 1 RAW 10Gbps 0 RAW 10Gbps |
ケース数
/s オプションを使ってケース数を調べることができるみたい。Generated tests がテストケース数。$ pict pict.txt /s Combinations: 21 Generated tests: 9 Generation time: 0:00:00 |
$ pict pict.txt /s /o:3 Combinations: 18 Generated tests: 18 Generation time: 0:00:00 |
禁則処理
制約についての詳細はマニュアルを参照してください。https://github.com/Microsoft/pict/blob/master/doc/pict.md
今回のモデルに対して
MODE : 0 の場合は FORMAT は YUV または RGB である
MODE : 1 の場合は RATE は 100Mbps 以外である
という制約を付けたい場合は、以下のようになる。
pict.txt
# サンプルモデル
MODE: 0, 1
FORMAT: YUV, RGB, RAW
RATE: 100Mbps, 1Gbps, 10Gbps
# 制約
IF [MODE] = 0 THEN [FORMAT] = "YUV" OR
[FORMAT] = "RGB";
IF [MODE] = 1 THEN [RATE] <> "100Mbps";
$ pict pict.txt /o:3 MODE FORMAT RATE 0 YUV 1Gbps 0 RGB 10Gbps 1 RGB 10Gbps 1 YUV 10Gbps 1 RAW 10Gbps 1 YUV 1Gbps 0 RGB 100Mbps 0 YUV 100Mbps 1 RAW 1Gbps 0 RGB 1Gbps 0 YUV 10Gbps 1 RGB 1Gbps |
上記2つの制約は以下のように書き換えることもできる。(結果は同じ)
IF [MODE] = 0 THEN [FORMAT] IN {"YUV", "RGB"};
IF [MODE] = 1 THEN [RATE] LIKE "*Gbps"; # 100Mbps 以外 = *Gbps
シード処理
モデルファイルに変更が必要になった場合、単純に変更して PICT を再実行してしまうと過去のテストケースとは全く違う組み合わせになってしまいます。/e:file オプションを使用することで、過去のテストケースにできるだけ近い形のテストケースを作成することができます。
手順としては
(1) 変更前のモデルファイルでテストケースを出力
$ pict pict.txt > pict_tmp.txt |
(2) モデルファイルを変更する
(3) /e:file オプション で (1) のファイルを指定して再実行
$ pict pict.txt /e:pict_tmp.txt |
0 件のコメント:
コメントを投稿