PICTを使ってテストケースの爆発をおさえる
PICT(Pairwise Independent Combinatorial Testing tool)とは
Microsoft社が開発したソフトウェアテストツール。
PICTは、複数のパラメータの組み合わせテストケースを、オールペア法(ペアワイズ法ともいう)を用いて自動生成します。
基本編 とりあえずPICTを実行してみる
以下のページにいろいろ説明があるのですが、直感的に理解するために手っ取り早く使ってみます。
動作環境
PICT Version 3.7.4
こちらからダウンロードできます。
OS:Windows10
コマンドプロンプトで実行
※PowerShellでも動作しましたがコマンドプロンプトを使いました。
ダウンロードした.exeファイルを、ローカルの適当な場所に置きます。
コマンドプロンプトでその場所へ移動して、PICTを実行します。
サンプルモデル作成
以下のサンプルモデルsample.txt
を作成します。
あるアプリを動かす際の動作環境は?という条件を考えてみました。
この例で言うと OS、Browser、resolution は パラメータ。(「因子」とも言う)
パラメータの右に「:」(コロン)を書く。
その右に値をカンマで区切って列挙します。(カンマで区切って列挙した値は「水準」とも言う)
(「因子水準」でググるといろいろ出てきます。)
#
# This is a sample model
#
OS: Mac, Windows, Linux, iOS, Android
Browser: Chrome, Edge, Firefox, Safari
resolution: 1280x720, 1920x1080, 2560x1440
PICT実行
作成したモデルを指定して、PICTを実行します。
pict sample.txt
PICT実行結果の確認
20のテストケースが作成されました。
OS Browser resolution
iOS Safari 1280x720
Mac Edge 1280x720
Android Firefox 1280x720
iOS Firefox 2560x1440
Linux Edge 1920x1080
Linux Chrome 1280x720
Android Safari 1920x1080
Android Chrome 2560x1440
Windows Firefox 1920x1080
Linux Firefox 2560x1440
Windows Edge 2560x1440
Mac Chrome 1920x1080
Mac Safari 2560x1440
iOS Edge 1920x1080
Linux Safari 1280x720
Android Edge 1280x720
Mac Firefox 1280x720
iOS Chrome 2560x1440
Windows Chrome 1280x720
Windows Safari 1280x720
この結果をExcelやSpreadsheetにコピペしてソートするとわかりやすいのですが、
- OS-Browser
- OS-resolution
- Browser-resolution
1、で2つのパラメータを組にしてそれぞれのパラメータが取り得る値を全網羅するテストケースであることがわかります。
2、3 についても同様です。
このようにパラメータを2つ組にして全網羅するのでオールペアと言われます。
応用編1 パラメータを指定してPICTを実行する
PICTを実行する際、以下のオプションが指定可能です。
Usage: pict model [options]
Options:
/o:N|max - 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
/sオプションでモデルの統計情報を表示する
基本編 とりあえずPICTを実行してみる
では、20のテストケースが生成されましたが、/sオプションをつけてモデルの統計情報を表示してみます。
pict sample.txt /s
結果
47の組み合わせがあり、そこから20のテストケースが生成されたことがわかります。
Combinations: 47
Generated tests:20
Generation time:0:00:00
/oオプションで組み合わせオーダーを変更する
pict sample.txt
は、以下と同じです。
pict sample.txt /o:2
組み合わせオーダーを1に変更します。
pict sample.txt /o:1
結果
5のテストケースが作成されました。
OS、Browser、resolutionの各パラメータの全ての値がテストケースに網羅されていることがわかります。
OS Browser resolution
iOS Safari 1920x1080
Windows Firefox 2560x1440
Linux Edge 1280x720
Mac Chrome 1920x1080
Android Chrome 1920x1080
/sオプションをつけてモデルの統計情報を表示してみます。
pict sample.txt /s /o:1
12の組み合わせがあり、そこから5のテストケースが生成されたことがわかります。
Combinations: 12
Generated tests:5
Generation time:0:00:00
組み合わせオーダーを3に変更します。
pict sample.txt /o:3
結果
60のテストケースが作成されました。
OS Browser resolution
iOS Safari 1920x1080
Mac Firefox 2560x1440
Mac Firefox 1280x720
Mac Edge 2560x1440
Linux Edge 1280x720
Android Edge 1920x1080
Mac Safari 2560x1440
Android Edge 1280x720
iOS Safari 2560x1440
Mac Safari 1280x720
iOS Chrome 1280x720
iOS Edge 1920x1080
Linux Edge 2560x1440
Android Safari 2560x1440
Windows Edge 1920x1080
Windows Edge 2560x1440
iOS Safari 1280x720
Linux Safari 1280x720
Linux Chrome 1920x1080
Linux Chrome 1280x720
Mac Edge 1920x1080
Linux Chrome 2560x1440
Linux Firefox 2560x1440
Windows Firefox 1280x720
Mac Chrome 2560x1440
iOS Edge 2560x1440
Linux Edge 1920x1080
iOS Firefox 2560x1440
Android Firefox 2560x1440
iOS Firefox 1280x720
Linux Firefox 1920x1080
Mac Chrome 1920x1080
Mac Chrome 1280x720
Android Chrome 1920x1080
Windows Safari 1280x720
iOS Firefox 1920x1080
Android Chrome 2560x1440
Mac Safari 1920x1080
iOS Edge 1280x720
Android Safari 1280x720
Android Safari 1920x1080
Windows Chrome 1280x720
Linux Safari 2560x1440
Linux Firefox 1280x720
Android Edge 2560x1440
Windows Chrome 1920x1080
iOS Chrome 1920x1080
Windows Edge 1280x720
Windows Safari 1920x1080
Android Firefox 1920x1080
Windows Safari 2560x1440
Mac Edge 1280x720
Windows Firefox 2560x1440
Mac Firefox 1920x1080
Windows Chrome 2560x1440
iOS Chrome 2560x1440
Android Firefox 1280x720
Android Chrome 1280x720
Linux Safari 1920x1080
Windows Firefox 1920x1080
この結果をExcelやSpreadsheetにコピペしてソートするとわかりやすいのですが、
- OS-Browser-resolution
3つのパラメータを組にしてそれぞれのパラメータが取り得る値を全網羅するテストケースであることがわかります。
これは全組み合わせを網羅したテストケースです。
基本編 とりあえずPICTを実行してみる
では、テストケース数が20でしたので、全組み合わせを網羅した場合はテストケース数が60なので1/3に抑えられたことになります。
/sオプションをつけてモデルの統計情報を表示してみます。
pict sample.txt /s /o:3
60の組み合わせがあり、そこから60のテストケースが生成されたことがわかります。
Combinations: 60
Generated tests:60
Generation time:0:00:00
なお、サンプルモデルのパラメータ数より大きい値を指定するとエラーになります。
pict sample.txt /o:4
Input Error: Order cannot be larger than number of parameters
/rオプションでランダムなテストケースを作成する
以下を実行すると、必ず同じ結果が出力されますが、
pict sample.txt
/rオプションをつけると、出力結果がランダム化されます。
以下のコマンドを数回実行すると、出力結果が変わることが確認できます。
pict sample.txt /r /o:2
この時、実行に使用されたseed値が出力ストリームに出力されます。
Used seed: 10306
次回、/r:seed値を指定すると、この時に実行したのと同じ結果が出力されます。
pict sample.txt /r:10306
応用編2 制約条件を指定してPICTを実行する
以下のように制約条件を指定することもできます。
#
# This is a sample model
#
OS: Mac, Windows, Linux, iOS, Android
Browser: Chrome, Edge, Firefox, Safari
resolution: 1280x720, 1920x1080, 2560x1440
# 制約条件 OSがiOSかAndroidの場合、resolutionは2560x1440は除外する
IF [OS] = "iOS" OR [OS] = "Android" THEN NOT [resolution] = "2560x1440";
結果
OS Browser resolution
iOS Safari 1280x720
Mac Safari 1920x1080
Android Safari 1280x720
Linux Chrome 2560x1440
Mac Edge 2560x1440
iOS Chrome 1920x1080
Linux Safari 2560x1440
Windows Edge 1920x1080
Windows Firefox 1280x720
Windows Chrome 1280x720
iOS Edge 1280x720
Mac Chrome 1280x720
Android Chrome 1920x1080
Android Edge 1920x1080
Linux Edge 1280x720
iOS Firefox 1920x1080
Linux Firefox 1920x1080
Windows Safari 2560x1440
Android Firefox 1920x1080
Mac Firefox 2560x1440
Discussion