2014/11/28(金)「ソフトウェアテスト勉強会~PictMasterを使い倒す!~」に参加してきました。

今回は組み合わせテストの組み合わせを算出してくれるツール「PictMaster」の使い方を学んできました。
PictMasterは組み合わせテスト技法である「オールペア法」を用いるMicrosoft製のツール「PICT」をEXCELでラップしたツールです。

PictMaster プロジェクト日本語トップページ - SourceForge.JP


PICTはとても使えるツールですが、コマンドラインツールなので、初心者にはとっつき辛いです。
PictMasterはExcel経由でPICTが扱えるようになるので、初心者も使いやすいツールになってます。

なぜ、組み合わせテスト技法が必要か?

ラーメンを例にして考えてみます。*1

あるラーメン店では、以下のようなラーメンの味付け、素材を利用者が選ぶことができます。

スープ  :みそ、塩、しょうゆ、とんこつ
麺    :細麺、中太麺、太麺
ゆで方  :バリカタ、カタ、ヤワ、バリヤワ
トッピング:チャーシュー、ゆで卵、紅しょうが、すりおろしにんにく、なし

その時の作れるラーメンのパターンは4*3*4*5で240通りになります。
流石にそれを全て試すのは、とても時間とお金がかかって大変です。

オールペア法

ラーメンの例でをオールペア法を使うと組み合わせ数を大幅に減らすことができます。
2因子の組み合わせ網羅の場合、22通りまで減らすことができます。

「因子」とは、スープや麺などの項目名を指します。
また、みそや塩など、因子の要素のことを「水準」といいます。

2因子の組み合わせ網羅とは、
任意の2因子で得られる組み合わせが
必ず1度は組み合わせ表に存在する、ということを指します。

例えば、「スープ:みそ、麺:細麺」や
「ゆで方:バリヤワ、トッピング:なし」など
2因子で好きな組み合わせを作ったとして、
それが必ず組み合わせ表に存在します。

スープ ゆで方 トッピング
みそ 細麺 バリカタ チャーシュー
中太麺 バリカタ ゆで卵
しょうゆ 細麺 カタ ゆで卵
太麺 ヤワ チャーシュー
とんこつ 細麺 ヤワ 紅しょうが
しょうゆ 中太麺 バリヤワ チャーシュー
みそ 中太麺 カタ すりおろしにんにく
みそ 太麺 バリヤワ なし
しょうゆ 太麺 バリカタ 紅しょうが
細麺 バリヤワ すりおろしにんにく
とんこつ 太麺 カタ チャーシュー
とんこつ 中太麺 バリカタ なし
みそ 中太麺 ヤワ 紅しょうが
しょうゆ 太麺 ヤワ すりおろしにんにく
細麺 カタ なし
とんこつ 太麺 バリヤワ ゆで卵
みそ 細麺 ヤワ ゆで卵
細麺 カタ 紅しょうが
とんこつ 中太麺 バリカタ すりおろしにんにく
しょうゆ 細麺 ヤワ なし
しょうゆ 中太麺 バリヤワ 紅しょうが

PICT-Masterのその他の機能

結果表や制約条件を用いた組み合わせ表を作成することもできます。

結果表を使う

例えば、PictMasterで単純に組み合わせ表を作った時に、
それぞれの組み合わせでシステムがどのような結果を返すのが適切かは
別途検討しないと行けません。

この結果表を使えば、「ある条件を満たした組み合わせの場合は、こういう結果を返す」
というルールを記載することができます。

制約条件を使う

例えば、「ある条件が真のときは、XXXを選ぶことができない」といった、
組み合わせの中で特殊なケースを想定する必要があることがあります。

PictMasterでは、その制約条件のルールを記載でき、
制約条件を考慮した組み合わせ表を作ることができます。

実際に制約条件に基づいた組み合わせ表を見てみると、
とても人の手で作れるものではない、ということがよく分かります…

制約条件を使うときの考慮点

“制約条件を記述するのがめんどくさいから、
制約条件なく組み合わせ表を作っていらない組み合わせを削除しよう”とすると、
組み合わせ網羅を壊すことになります。

ある組み合わせでは、着目している以外の因子の組み合わせも含まれているので、
不用意な組み合わせの削除は手法が保障する網羅性に穴をあけるので、注意が必要です。

オールペア法において、因子の増加と水準の増加では、どちらが組み合わせ数の増加に影響を与えるか。

結論は、“基本的に、因子の増加よりも水準の増加の方が組み合わせ数の増加に影響を与える”です。

総組み合わせの場合は水準より因子の増加の方が組み合わせ数の増加に影響を与えるため、
パッとは分からない問題でした。

とりあえずの理解としては、オールペア法は因子が多いケースに効果的、という感じで良いでしょうか?

CIT-BACH

PictMaster v6.0から、PICTの他にCIT-BACHというアルゴリズムに対応しています。
CIT-BACHは最小の組み合わせ数を求めることに適している、とのこと。
PICTは(恐らく)乱択アルゴリズムが含まれていて、複雑な制約条件などが含まれる場合、
最小の組み合わせ数が求まらない場合があるが、
CIT-BACHは最小の組み合わせ数を求めるように処理を行う、という話を聞きました。

まとめ

PictMasterは以前にも勉強会でやったことがありましたが、
今回は前回よりも面白く感じました。
当時よりもテスト関係の知識が増えたこともあり、
実業務にどうつなげられるか、などを考えながら話を聞いていたのが
前回との違いかな、と感じつつ、
楽しく学ぶことができました。

*1:勉強会と同じ例を使っています