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

値の数がばらついていると少ないテストケース数で高い3-Wayカバレッジを確保できる

PictMasterでは、希望する3-Wayカバレッジ(3パラメータ間の組み合わせ網羅率)を確保したテストケースを生成することができます。3パラメータ間の組み合わせとするとテストケース数が多くなりすぎて問題となる場合、例えば3-Wayカバレッジを80%としたテストケースでは、生成されるテストケース数を大幅に削減することが可能となります。


3-Wayカバレッジを80%程度とすれば、生成されるテストケース数の増加を抑えることができるわけですが、この増加の程度は値の個数のばらつきによってかなりの違いが生じます。値の数がすべて同じ場合、増加の程度は大きくなります。これに対して値の数にばらつきがある場合、増加の程度は小さくなります。この傾向は、実際のテスト現場で扱うモデルには、値の数にばらつきがあることから、テストケース数削減の効果が高くなることを意味します。


最初に値の数がすべて同じモデルで3-Wayカバレッジを変化させた場合のテストケース数を調べてみます。最初のモデルでは、パラメータが15個あり、値の数はすべて5個とします。このモデルでは、2パラメータ間の組み合わせを網羅したテストケース数は52件です。3パラメータ間の組み合わせを網羅したテストケース数は381件です。


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


次に値の個数にばらつきがあるモデルを取り上げます。パラメータの個数は最初のモデルと同じ15個です。値の数と対応するパラメータの数は次の通りです。


 10個  1パラメータ
  8個  2パラメータ
  6個  3パラメータ
  4個  4パラメータ
  2個  5パラメータ


値の個数にばらつきがあるこのモデルでは、2パラメータ間の組み合わせを網羅したテストケース数は92件、3パラメータ間の組み合わせを網羅したテストケース数は756件となりました。

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


値の数がすべて同じモデルでは、3-Wayカバレッジを80%とした場合のテストケース数が151件となりました。これは2パラメータ間の組み合わせを網羅したテストケース数の2.9倍です。3パラメータ間の組み合わせを網羅したテストケース数の39.6%にあたります。


値の数がばらついているモデルでは、3-Wayカバレッジを80%とした場合のテストケース数が214件となりました。これは2パラメータ間の組み合わせを網羅したテストケース数の2.3倍であり、3パラメータ間の組み合わせを網羅したテストケース数の28.3%にあたります。


2つのグラフを比較してみると、3-Wayカバレッジが90%程度までのテストケース数の増加を示すグラフの傾き具合が、値の数が等しいモデルに比べてばらついているモデルでは緩やかになっていることが見て取れます。


値の数がすべて同じモデルと比較して、値の数がばらついているモデルでは、3-Wayカバレッジを80%とした場合のテストケース数の増加率が小さく、3パラメータ間の組み合わせを網羅したテストケース数に対する割合もかなり少なくなっています。どうしてこのような違いがでたのでしょうか。


値の数にばらつきがあるということは、多くの値を持つパラメータが存在するということでもあります。少ない値を持つパラメータ同士で3パラメータ間の組み合わせを網羅することにより、少ないテストケース数で80%程度の高い3-Wayカバレッジを達成することができます。それ以上の高い3-Wayカバレッジを満足するには、多くの値を持つパラメータも含めた3パラメータ間の組み合わせを網羅する必要がでてくるために、その場合のテストケース数は急上昇することになります。


実際のテストの現場では、値の数がすべて同じモデルというものは考えにくく、値の数にはそれなりのばらつきがあるものです。こうしたことから、希望する3-Wayカバレッジを確保したテストケースを生成するPictMasterの新機能は、実際のテスト現場で有効に活用することができることでしょう。

PictMaster 5.1 をリリースしました。

PictMaster 5.1 をリリースしました。


このバージョンでは、特に重要と考えられる任意のパラメータのみ、3パラメータ間の組み合わせとしたテストケースを生成できる「拡張サブモデル」の機能を追加しました。


主な変更点は以下の通りです。


【機能改善】
・希望するパラメータのみ3パラメータ間の組み合わせとしたテストケースを生成する、拡張サブモデルの機能を追加した。


【バグ修正】
・「デフォルトのシードで生成」した際に、PICT内部でエラーを検出した場合に、エラーメッセージが表示されなかったバグを修正した。
・Excel2003以前のExcelで、制約表の列についてショートカットメニューから「左に移動」を選択すると、内容が正しく移動されなかったバグを修正した。



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


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


1つ以上の希望するパラメータのみ3パラメータ間の組み合わせとしたテストケースを生成する

徹底した組み合わせテストが必要な場合、組み合わせるパラメータ数に3を指定すると、生成されるテストケース数が膨大となり、テストを実施することが困難となる場合があります。


このような場合、すべてのパラメータではなく、特に重要と考えられる特定のパラメータについてのみ、3パラメータの組み合わせとしたテストケースを生成することができれば、テストケース数が大幅に増加してしまうことを回避することができます。


PICTには、指定した特定のパラメータについて、他のパラメータとは異なる組み合わせ数を指定するサブモデルという機能があります。しかし、このサブモデルという機能は実際には使いにくい仕様となっています。


例えば5つの値を持つパラメータが7つ(A, B, C, D, E, F, G)あるモデルの場合、このうちの3つのパラメータ(A, B, C)をPictMasterのサブモデル欄で組み合わせ数に3を指定して生成すると、テストケース数は625件となります。サブモデルを使用せずに、環境設定で組み合わせるパラメータ数に3を指定して、生成した場合のテストケース数が238件ですから、それよりも3倍近いテストケース数となってしまいます。


どうしてこういう結果になるかというと、サブモデルで組み合わせ数に3を指定したパラメータ同士は、3パラメータ間の組み合わせとなりますが、それらのパラメータのすべてが、サブモデルで指定されなかった残りのパラメータと2パラメータ間の組み合わせとなります。結果としてサブモデルで指定されたパラメータは4パラメータの組み合わせを網羅したものとなるからです。


このPICTの仕様がサブモデルを使いにくくしています。行ないたいのは、サブモデルで指定されたパラメータ同士は3パラメータの組み合わせですが、サブモデルで指定されなかった残りのパラメータとは、個々のパラメータが独立して2パラメータの組み合わせとなることです。これがPICTの仕様では、サブモデルで指定された3つ以上のパラメータからなる1つ1つの組み合わせが、サブモデルで指定されなかった残りのパラメータと2パラメータの組み合わせとなるものですから、生成されたテストケース数は膨大な件数となってしまいます。


PICTのサブモデルのこうした問題を回避して、3つ以上の希望するパラメータのみ3パラメータの組み合わせを生成する方法については、2009年11月15日の記事 で書きました。ここでより詳しく手順を示します。


.3パラメータの組み合わせとしたい3つ以上のパラメータについてサブモデルで3パラメータの組み合わせを指定します。同時に環境設定で組み合わせるパラメータ数に1を指定します。


.以上の条件でテストケースを生成します。このときのテストケース数を控えておきます。


.生成されたテストケースを原型シートのワークシートに貼り付けます。


.環境設定で組み合わせるパラメータ数に2を指定します。そして原型シートを使用する設定とします。同時にサブモデルを使用しない設定とします。


.以上の条件でテストケースを生成します。このときのテストケース数が2項でのテストケース数より多いことを確認します。


.前項2でのテストケース数を下回っている場合は、最も値の数が少ないパラメータの任意の値と同じ値を1つだけモデルに追加して、再度テストケースを生成します。


5項で生成されたテストケース数が、2項でのテストケース数以上であれば手順は完了です。2項でのテストケース数を下回っている場合は、3パラメータの組み合わせの一部が欠落していることになります。この現象は、原型シートに貼り付けた3パラメータの組み合わせすべてを取り込まなくても、2パラメータ間のすべての組み合わせが網羅される場合に発生します。こうなったときは、最も値の数が少ないパラメータの任意の値と同じ値を1つだけモデルに追加して、再度組み合わせを生成すると、原型シートに貼り付けた3パラメータの組み合わせが、すべて取り込まれてテストケースが生成されます。値を追加するパラメータとして最も値の数が少ないパラメータを選択するのは、テストケース数の増加を抑えるためです。この場合のテストケース数は、原型シートのテストケース数に最も値の数が多いパラメータの値の数を加えた件数となります。


1項から6項の手順によるサブモデルの使い方を「拡張サブモデル」と呼ぶことにします。


原型シートに貼り付けるための組み合わせを生成した時のモデルと、原型シートを使用して組み合わせを生成した時のモデルに違いがあると、原型シートに貼り付けた組み合わせすべてが取り込まれてテストケースが生成されるようになります。これはPICTの仕様と考えられます。


図1に示すモデルとサブモデルを用いて通常の方法で生成したテストケースを図2に、拡張サブモデルで生成したテストケースを図3に示します。図2図3では、Excelのフィルタを使って、サブモデルで指定したパラメータのうち、3つのパラメータの特定の値の組み合わせだけを抽出しています。同時に生成したテストケース数も示します。


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

図1.モデルとサブモデル


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

図2.通常のサブモデルを用いて生成したテストケースのフィルタ適用結果

 生成されたテストケース数:735



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

図3.拡張サブモデルを用いて生成したテストケースのフィルタ適用結果

 生成されたテストケース数:152



環境設定で組み合わせるパラメータ数に3を指定して生成したテストケース数は239件でした。


通常のサブモデルでは、サブモデルで指定した3つのパラメータの組み合わせが、サブモデルで指定されなかったパラメータのすべての値と組み合わされています。一方、拡張サブモデルでは、サブモデルで指定した3つのパラメータの組み合わせは、サブモデルで指定されなかったパラメータの1つの値としか組み合わされていません。このモデルの場合、通常のサブモデルに対して拡張サブモデルでのテストケース数は約1/5となっています。


次に、2つのパラメータ(A, B)のみ3パラメータの組み合わせとするには、サブモデルで次のように指定します。


 A, B, 2 --- (1)


このときのテストケース数は126件となりました。


1つのパラメータ(A)のみ3パラメータの組み合わせとするには、サブモデルで次のように指定します。


 B, C, D, E, F, G, 2 --- (2)


このときのテストケース数は175件となりました。


このように、3パラメータの組み合わせとしたいパラメータを除く残りのすべてのパラメータについて、サブモデルで組み合わせるパラメータ数に2を指定します。


(2)のテストケース数が(1)のテストケース数よりも多くなるのは、3パラメータ組み合わせのパターンに違いがあるからです。(1)では、サブモデルで指定された2つのパラメータのペア(25件)が、サブモデルで指定されなかったパラメータの1つ1つ(5件)と組み合わされ、3パラメータの組み合わせとなります。これに対して、(2)では、サブモデルで指定されなかったパラメータ(5件)が、サブモデルで指定されたすべてのパラメータの2パラメータの組み合わせ(35件)と組み合わされ、3パラメータの組み合わせとなります。


拡張サブモデルでは、(1)と(2)のサブモデルの記述は次のように直感的に分かりやすく記述することができます。


 A, B, 3 --- (1)


 A, 3 --- (2)


(2)の指定では、組み合わせるパラメータ数に3を指定して生成を行なうと、PICTのエラーとなるため、3-Wayカバレッジの表示はできません。この指定はテストケース数の割に3-Wayカバレッジは高くないので使わないほうがよいと思います。よりテストケース数が少なく、3-Wayカバレッジが高い(1)の方法を推奨します。


まもなくリリース予定の PictMaster 5.1 では、拡張サブモデルの機能をサポートし、前項1から6の作業をPictMaster内部で行ない、ユーザはサブモデル欄に記述するだけで済むようになります。また、直感的に分かりやすい(1)と(2)の記述方法をサポートしています。

PICTでエラーを検出した場合にエラーメッセージが表示されない

現状のPictMasterでは、「デフォルトのシードで生成」を選択して実行したとき、PICT内部でエラーを検出した場合に、エラーメッセージが表示されず、正しくない生成結果が出力されるバグがあります。


「最小テストケースを生成」を選択して実行したときは、正しくエラーメッセージが表示されます。


このバグは、次回のバージョンアップ時に修正する予定です。


Office2010でPictMasterを実行するとVBAのエラーとなる現象について

11月28日の記事で、PictMaster 5.0 を Excel2010 で実行すると、VBAのエラーになると書きましたが、その後で調査したところ、原因は Office2010 のバグであることが分かりました。


Microsoftのサポートページに次の記述がありました。


Office 2007 以前のバージョンから Office 2010 へアップグレード インストールした場合、UserForm 上の Common コントロールを表示できない
http://support.microsoft.com/kb/2266789/ja


この記述によれば、Office2010 をアップグレードインストールした場合、コントロールの登録情報が不正になるために、プログレスバーコントロールを含むいくつかのコントロールオブジェクトが表示できなくなるとのことです。64bit版だけではなく、32bit版でも同じだそうです。新規インストールの場合は問題ないとのことです。


サポートページには、バグの回避策としてコマンドプロンプトからコマンドを投入する方法が説明されています。


このバグが、現在販売されている製品で直っているのか、また Microsoft Update で修正されるものなのかは不明です。