AGEST Engineers Blog

株式会社AGESTのテックブログです。

「Pict Master」でペアワイズ法のテストケースを高速生成!

どうも、こんにちは。テストオペレーション部の良です。

私は主にスマートフォンゲームのテストを10年以上経験した後、エンタープライズ領域に参画しました。エンタープライズのテストを担当してから日は浅いのですが、新しいことに触れるのは好きで色々と勉強中です。勉強の過程で「Pict Master」1というツールに出会い、使ってみたので今回はPict Masterでペアワイズを組んでみたときの所感を書いてみようと思います。

ペアワイズとは?

まずは簡単に

『ペアワイズテストでは、組み合わせの技法を使用して、各パラメーター - 値ペアが他の各パラメーターのパラメーター - 値ペアそれぞれに対して 1 回はテストをする (つまり、任意の 2つの異なるパラメーターのパラメーター - 値ペアの「オールペア」をテストする)ことで、パラメーター - 値ペアのすべての組み合わせをテストすることは避けている。

~中略~

医療機器の領域の研究では、故障の 66%は単一の変数によって引き起こされており、97%は 1 つの変数または 2 つの変数の相互作用のいずれかによって引き起こされていることが示されている。3 以上の変数による相互作用が存在する場合、ペアワイズテストでシステム故障を検知できないことがあるというリスクが残る。』

※JSTQB AL TAシラバスから抜粋


要するにペアワイズテストとは、

  • 効率的な組み合わせテストである
  • 「各パラメーターの値」を「他パラメーターの値」とそれぞれ1回は組み合わせる
  • 変数の相互作用によって起こる不具合を検出することが期待できる

と書かれています。

「各パラメーターの値」を「他のパラメーターの値」とそれぞれ1回は組み合わせる

について、もう少しイメージし易くするために実際にペアワイズを組んでみたいと思います。

例として上記パラメーターと値を用いて、まずはパラメーターと値のペアを洗い出しました。

以下、パラメーター:値
  ・購入アイテム:ジャケット
  ・購入アイテム:パンツ
  ・サイズ   :S
  ・サイズ   :M
  ・サイズ   :L
  ・柄     :無地
  ・柄     :ストライプ

次に、「購入アイテム:ジャケット」から見て、「他のパラメーターの値」が何にあたるか見ていくと、上記表の5つがそれにあたります。
※「購入アイテム:パンツ」は同じパラメーター(購入アイテム)なので対象にはならない

洗い出したペアを実際に1回ずつ組み合わせると、


このように3つのパターンになります。「購入アイテム:ジャケット」から見て、「他のパラメーターの値」が1回は組み合わさっているのがわかります。これと同じ考え方で「購入アイテム:パンツ」から見た組み合わせも追加してみます。

出来ました。これでペアワイズは完成でしょうか?答えはNoです。

サイズと柄の組み合わせに着目してみましょう。柄には「無地」と「ストライプ」がありますが、「サイズ:S」と「柄:ストライプ」の組み合わせがありません。   同様に「サイズ:M」、および「サイズ:L」と「柄:無地」の組み合わせがありません。

この点を考慮し、パターン4~6の柄を変更してみます。

これでいかがでしょう。「各パラメーターの値」が「他のパラメーターの値」とそれぞれ1回は組み合わさっていることがわかります。

今回の例では、購入アイテムが2種、サイズ3種、柄2種となり、これを全通り組み合わせると2×3×2=12パターンですが、ペアワイズでは上記のように6パターンになります。

よって、ペアワイズテストは『効率的な組み合わせテストである』と言えるでしょう。

ちょっと実践的に

次はもう少し実践的に制約つきの組み合わせを考えていきたいと思います。

パラメーター、値、制約事項は以下のように仮定しました。

これらの情報でペアワイズを組んでいきますが、先ほどの例よりパラメーター、値の数が多いです。また、組み合わせの制約条件があるので、組み合わせパターンを考えるのに時間がかかり、ヒューマンエラーによる組み合わせミスも出てしまいそうですね。

ここでもう一度JSTQBシラバスを見てみます。

『テストアナリストは、すべての値のペアが表の中で識別できるように、表に値を入力する ([Black09]を参照)。表の中で空欄になっている項目は、テスト アナリストが自身のドメイン知識を使って値を入力することができる。

テストアナリストがこのタスクを行うにあたり、支援するツールが多数利用可能である (サンプルは www.pairwise.org を参照)。これらのツールは、入力として、パラメーターとその値のリストを必要とする。そして、各パラメーターの値の組み合わせの適切なセットを生成する。』
[Black09]:Rex Black, "Advanced Software Testing, Volume 1", Rocky Nook, 2009, ISBN 978-1-933-952-19-2

※JSTQB AL TAシラバスから抜粋


なるほど。パラメーターと値のリストがあれば、ツールでペアワイズが組めるようです。では、実際に紹介されている中からツールを選んでペアワイズを組んでいこうと思います。

PictMasterとは?

『PictMaster はペアワイズ法(All-Pairs 法ともいう)を採用した組み合わせテストケース生成を行なうMicrosoft のフリーソフトである PICT(Pairwise Independent Combinatorial Testing Tool)と大阪大学の土屋達弘教授が開発した CIT-BACH(Combinatorial Interaction Testing tool with a BDD-Assisted Constraint Handler:シットバック)をより使いやすく、より高機能にした Excel ベースのフリーソフトです。』

※PictMasterユーザーズマニュアルから抜粋


このツールのもととなるPICTはコマンドプロンプト上で動作するアプリケーションですが、
「Pict Master」はExcelベースになったことで馴染みやすくなったのではないでしょうか。かく言う私もExcelならすぐにでも使えるかも!と思い、このツールを選びました。

実践

それでは実際にPict Masterを使っていきたいと思いますが、まずはJSTQBシラバスに書かれていた「パラメーターと値のリスト」を用意します。

PictMasterのユーザーズマニュアルを見ながら、上記パラメーターと値のリストの情報をPictMasterに入力していきます。

入れ込んでみました。セルに色付けした箇所(色は白以外の任意。今回は黄色)が制約条件になり、色付けしてないセルが制約対象となるようです。また制約の頭に「#」付けることでnot条件、「*」を付けることでワイルドカードとして扱うことができます。

上の画像では以下の条件式となる

・制約1:
<制約条件> 『購入アイテム』が「ジャケット」の場合
<制約対象> 『仕上げ』は「なし」となる

・制約2:
<制約条件> 『購入アイテム』が「ジャケット」以外の場合
<制約対象> 『仕上げ』は「シングル」もしくは「ダブル」となる

・制約3:
<制約条件> 『購入アイテム』が「○○スーツ」もしくは「タキシード」以外の場合
<制約対象> 『オプション』は「なし」となる

ではでは、いよいよ実行・・・と、その前に

今回のケースで最高金額になるパターンを考えてみます。

上記の通り、最高合計金額が10万円ということは、他の組み合わせより料金の桁数が多くなることがわかります。

PictMasterには指定した組み合わせを含める機能もあるので、この機能を使用してこのパターンも一緒に見ておこうと思います。

ということで、

※上記は出力された後に手動で色付けしています

無事に指定したパターンが含まる形で出力されました。使いかたを覚えている状態であれば、因子/水準の入力、制約条件入力、特定の組み合わせ指定を含めて、5分もかからず組み合わせ表を出力できます。

組み合わせを考える際の要素が増えれば増えるほど、手動でやろうとすると組むのに時間がかかりますし、ヒューマンエラーも多くなりがちですが、このツールを使えば効率化、ヒューマンエラーの防止に繋がりそうです。

おわり

今回はペアワイズ法とPictMasterについて書きました。こんな便利なツールがあるならどんどん探して使っていきたいと思います。ただ因子や水準、重要視するべき組み合わせの洗い出しが不十分だと、いくらツールが優秀でも意味がないので、テスト分析、テスト設計の勉強も怠らず続けていきたいと思います。

■ AGESTは一緒に働くメンバーを募集しています! hrmos.co


  1.  ※Pict Masterの実行ファイルやユーザーズマニュアルはこちらからダウンロードできます。

  • f:id:zo_03:20211213095237p:plain
  • f:id:zo_03:20211213095237p:plain
©AGEST, Inc.