組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題 -47ページ目

Pairwise法(All-Pairs法)の3因子間網羅率を求める

Excelの機能である「ピポッドテーブル」を用いると、生成したテストケースの3因子間網羅率を簡単に求めることができます。ピポッドテーブルの使い方についてはネット上にたくさん説明がありますのでそちらを参照してもらうこととして、この記事ではピポッドテーブルを用いた3因子間網羅率の求め方を説明します。


パラメータが5個、各パラメータが5個の値を持つ図1のモデルで生成したテストケースを表1に示します。モデルの値はピポッドテーブルの仕様の関係から、数値ではなく文字である必要があります。


組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題-図1
図1.モデルの例


表1.生成されたテストケースの例

組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題-表1



表1のテストケースをもとにピポッドテーブルを作成するとそれは表2のようになります。


表2.テストケースから作成したピポッドテーブル

組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題-表2

このピポッドテーブルは次のような構成となっています。


パラメータAの列が値v1~v5までの行からなり、パラメータBの行が値v1~v5までの列から構成されています。さらにパラメータAの列は、パラメータC、DおよびEのデータの個数という行に細分化されています。この表の意味は次の通りです。


生成されたテストケースにおいて、パラメータAの値v1とパラメータBの値v1の組み合わせで、パラメータCの値との組み合わせが1つ存在します。同様にパラメータDおよびEについても1つづつ存在します。次にパラメータAの値v1とパラメータBの値v2との組み合わせでは、パラメータC、DおよびEの値との組み合わせが2つづ存在します。


このテストケースで3因子間網羅率が100%となるためには、少なくともパラメータAとパラメータBとの特定の値の組み合わせに対して、パラメータC、DおよびEの値との組み合わせがそれぞれ5つ以上存在する必要があります。今回の例では、列方向にパラメータA、行方向にパラメータB、パラメータAの各値に対してパラメータC、DおよびEを組み合わせていますが、これ以外の組み合わせ方法でも同じ結果となります。


3因子間網羅率が100%である場合、ピポッドテーブルの各欄には5が入り、右端の総計の欄には5×5=25が入ります。そして表下部の「全体のデータの個数」の各パラメータの欄にはそれぞれ25が入り、右端の欄には25×5=125が入ることになります。実際には、各欄に5だけが入ることはなく、6以上の値が入る欄も出てきます。


このテストケースから作成したピポッドテーブルでは、125ではなく32が入っています。このことから、このテストケースの3因子間網羅率は、32÷125=0.256で約26%ということになります。厳密に言うと、各欄の値には同じ値がダブっている場合もあり、実際の3因子間網羅率はこれより若干少ない値となります。


このピポッドテーブルをグラフ化することもできます。このグラフは、3因子間の組み合わせ数がパラメータごとにどの程度ばらついているかを視覚的に分かりやすく表現しています。図2にそのグラフを示します。


組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題-図2


図2.3因子間組み合わせ数のグラフ

パラメータ数を5個に固定し、値の数を2個から8個まで変化させた場合の3因子間網羅率の値を表3に、表をグラフ化したものを図3に示します。パラメータと値の組み合わせによって3因子間の組み合わせ数にばらつきの出ていることが分かります。


表3.値の数に対応する3因子間網羅率の値

組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題-1

組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題-2

図3.値の数と3因子間網羅率の変化

このグラフから分かることは、値の個数が増えるに従って最初は急激に3因子間網羅率が減少していますが、ある程度まで値の数が増えると3因子間網羅率は20%程度で減少率が低下しているということです。これはPairwise法(All-Pairs法)が2因子間網羅率を100%満足し、かつテストケース数の最少化に専念しているためであり、3因子間網羅率の減少と引き替えにテストケース数の最少化を実現しているということが言えます。



スタート地点からゴール地点までの最短経路を求める 【2010年6月29日】

以前の記事で、PictMasterの応用事例として、道路網の最短経路を求める、という問題を扱ったことがあります。今回は、PictMaster 4.2 で結果表の機能が強化されたので、道路網の距離を結果表を用いて自動的に求めるようにした問題を紹介してみたいと思います。


この問題のルールは以下の通りです。


道路網の北西のスタート地点から南東のゴール地点までの最短経路をPictMasterを使って求めます。道路網は東西南北にそれぞれ4本の道路があり、交差点間の距離はランダムに異なるものとします。


スタート地点からゴール地点までの最短経路を求めるには、通過可能なすべてのルートを洗い出す必要があります。洗い出したルートは、全体としてすべての交差点、T字路をもれなく通り、かつ通行可能な方向すべてに向けて通過している必要があります。


道路網には多くの交差点やT字路があり、各交差点間の距離は2から8までの間でランダムに与えられています。1つだけ制限事項を設けます。道路の迂回はできないものとします。つまりスタート地点に戻る方向へは進めないものとします。


このような道路網の最短経路を求めることは、ソフトウェアの単体テストの技法の1つである制御パステストにおける「経路網羅」をカバーすることと同じことを意味します。


今回取り上げる道路網を図1に示します。


組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題-1

図1.最短経路を求める道路網

道路網の交差点とT字路にはAからCと数字をあわせた記号をつけて識別します。道路の脇にある1桁の数字は距離を表しています。道路の迂回ができないということは、例えばB2の地点で進める方向はB3またはC2に限定されるということです。


最短経路のルートを求めるには通れるすべてのルートを探し出す必要があります。その結果見つかったルートの集まりは、すべての交差点、T字路をもれなく通ることになります。通れるすべてのルートを探し出す手段は、通行可能なすべてのルートを洗い出す必要があるため、Pairwise法ではなく、全数組み合わせを用いる必要があります。今回の問題では組み合わせるパラメータ数にSTARTとGOALを含む10個を指定することになります。今回は全数組み合わせですので、生成結果は1通りしかありません。生成回数は1回で十分です。


この道路網は、9個の分岐文のみからなる図2のフローチャートで表すことができます。



組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題-2

図2.道路網を表すフローチャート


それではこの道路網を通るすべてのルートを求めるためのモデルと制約表を以下に示します。制約表の記述は、例によって制約対象が次の制約で制約条件となる、という単純なルールで機械的に行なうことができます。


組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題-3


図3.道路網を通るすべてのルートを求めるためのモデル

組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題-4

組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題-5

組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題-6

図4.道路網を通るすべてのルートを求めるための制約表

以上のモデルと制約表で、組み合わせるパラメータ数に10を指定して組み合わせを生成することで、道路網を通行可能なすべてのルートが求められます。


今回は、各ルートの距離を結果表を用いて自動的に集計してみることにします。各ルートの単位距離(道路網の1辺の距離)を以下の結果表で指定し、期待する結果として、各ルートごとに単位距離の合計式を求めるようにしています。この処理はPictMaster 4.2から可能となりました。


組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題-7

組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題-8

図5.各ルートごとの距離の合計を求める結果表


以上のモデル、制約表および結果表を用いて生成した結果を以下に示します。全部で20通りのルートが存在することが分かりました。

表1.通行可能な全ルートと最短経路

組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題-9

以上の結果から、表1のNo.5が距離21で最短経路であることが分かりました。このルートを赤字の点線で示した道路網を以下に示します。


組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題-10
図6.最短距離を通るルート

生成結果の期待する結果には合計距離の計算式が示されています。変数の内容を評価することができれば、計算結果を最終の期待する結果とすることができるのですが、VBAでは無理でした。


今回は、PictMaster 4.2で追加された結果表の新機能を用いて道路網の合計距離の計算式を自動的に求めることが可能であることを示したものです。この新機能は、実際のテストケース作成においても有効に使うことができるものと思います。



間違いやすい制約指定の例

PictMasterの制約表で制約指定を行なう際、間違いやすい制約指定というものがあります。 今、図1に示すモデルにおいて、制約1で指定されなかった組み合わせのすべてについて、制約2で値 c1 以外とのみ組み合わせ可能と指定したとします。


組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題-1
図1.間違いやすい制約指定の例

この制約指定で生成された組み合わせを表1に示します。


表1.正しくない組み合わせの例
組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題-2

この組み合わせ結果をみると、制約1で指定されなかった組み合わせであるにもかかわらず、値 c1 との組み合わせが含まれています。 理由は、制約2の指定の意味が、値 a1 でなく、かつ、値 b1 でもない場合のみ、値 c1 以外との組み合わせとなる、というものだからです。 もともとの意図は、制約1で指定されなかった組み合わせのすべてを、値 c1 以外とするというものでした。


正しい制約指定を図2に示します。


組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題-3
図2.正しい制約指定

この制約指定で生成された組み合わせを表2に示します。


表2.正しい組み合わせの例
組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題-4

一見すると、図1の制約指定でよいように思われますが、AND条件に一致しなかったすべての組み合わせはOR条件で指定する必要があるということです。 制約表は、他の制約指定の方法(例えばPICTの制約式など)に比べて制約指定が直感的に分かりやすいというメリットがありますが、今回の例のようにうっかり間違った制約指定を行なってしまうことがありそうです。


念のため、私が関係しているチームで、これまで作成した制約表の記述をチェックしてみましたが、1つの制約指定で制約条件が2つ以上ある制約表はありませんでした。 制約対象が2つ以上あるものはたくさんありましたが。


テスト対象の違いによって他の分野ではまた状況が違うかもしれません。 一度チェックされてみてはいかがでしょうか。


PictMaster v4.2 をリリースしました。

組み合わせテストケース生成ツール PictMaster 4.2 をリリースしました。

4.1 からの変更点は以下の通りです。

【機能改善】
・結果表の結果内容が、1つのテストケースにおいて異なる内容で重複して一致条件に一致した場合、それぞれの結果内容を連結して新たな結果
内容として記入されるように指定可能とした。
・制約表の制約の列で、ショートカットメニューからの挿入、削除、元に戻す 編集機能を、色の塗りつぶしが行なわれているが値がないセル
(制約表の右側に位置するセル)に対しても有効とした。

【バグ修正】
・Excel2000の場合に、環境設定フォームで「セル書式は文字列」をチェックして生成を行なうとVBAのエラーとなる問題を修正した。

PictMaster 4.2 は以下のサイトからダウンロードすることができます。

http://sourceforge.jp/projects/pictmaster/

国内と全世界におけるAll-Pairs法と直交表への関心度を比較 【6月18日更新】

2008年12月8日の記事 で、「日本人はなぜ直交表により興味を抱くのか?」と題して、ソフトウェアテストに関する国内と全世界におけるAll-Pairs法と直交表への関心度をgoogleの検索ヒット数で比較してみました。そのときのヒット数を以下に再掲します。


2008年末時点でのデータ


国内(日本語)での各用語のGoogleヒット件数


"直交表" ソフト テスト 10,500件
"HAYST法" 10,100件
----------------------------------
合計: 20,600件
比率: 98.9%


"All-Pair法" 72件
"All-Pairs法" 9件
"オールペア法" 88件
"Pairwaise法" 30件
"ペアワイズ法" 40件
-----------------------------------
合計: 239件
比率: 1.1%


全世界(すべての言語)での各用語のGoogleヒット件数 (厳密に言えば英語圏に限定しています)


Orthogonal Software test 187,000件(直交表)
----------------------------------
合計: 187,000件
比率: 46.6%


"All-Pairs" software test 33,900件
Pairwise software test 180,000件
-----------------------------------
合計: 213,900件
比率: 53.4%


この結果から、国内においてはAll-Pairs法よりも直交表への関心が圧倒的に高かったことが分かります。一方、全世界では、All-Pairs(Pairwise)法への関心がわずかに直交表を上回っているという結果でした。


あれから約1年半が経過しましたが、今の時点でどのように関心度が変化しているか調べてみました。検索語句は全く同じものを使用しています。今の時点での結果は以下の通りです。



2010年6月時点でのデータ


国内(日本語)での各用語のGoogleヒット件数


"直交表" ソフト テスト 40,000件
"HAYST法" 20,800件
----------------------------------
合計: 60,800件
比率: 74.1%


"All-Pair法" 16,200件
"All-Pairs法" 54件
"オールペア法" 4,930件
"Pairwaise法" 37件
"ペアワイズ法" 75件
-----------------------------------
合計: 21,296件
比率: 25.9%



全世界(すべての言語)での各用語のGoogleヒット件数


Orthogonal Software test 208,000件(直交表)
----------------------------------
合計: 208,000件
比率: 43.6%


"All-Pairs" software test 54,200件
Pairwise software test 215,000件
-----------------------------------
合計: 269,200件
比率: 56.4%


国内の調査結果を見ると、All-Pairs関係のページが1年半まえの前回調査時点より、約25倍に激増していることが目に付きます。その結果、直交表関係のページを含めた全体に対する割合は、前回の1.1%から約26%までに増加しています。このことはここ1年半でAll-Pairs法に対する関心が非常に高まったことを物語っています。


なお、"HAYST法"は同時に直交表というキーワードも同じWebページに存在する可能性が高いと考えられるため、それを考慮した集計方法をとれば、直交表(HAYST法含む)関係のヒット件数を40,000件として計算すると、直交表関係は65.3%、All-Pairs関係は34.7%となります。


全世界で調べて見た結果ではAll-Pairs関係のページが前回調査時より、若干増加しています。その結果、全世界では関心の約56%がAll-Pairs法関係で占められていることになります。


これは推測ですが、全世界での傾向に少し遅れて国内も同様な結果(All-Pairs関係への関心の高まり)になると思われます。その理由として考えられるのが、実用的な直交表ベースでのツールは事実上公開されることがなく、対してAll-Pairs法の実用的なツール(PICTなど)が無償で公開されているということです。