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

結果表で異なる結果内容が重複した場合、それぞれの結果内容を連結する

PictMasterの現状の仕様では、結果表で1つのテストケースが異なる「結果内容」に一致した場合、「一致条件の重複」というエラーとなります。しかしテスト対象によっては、この仕様では使いにくい場合があります。それは、1つのテストケースに着目した場合、そのテストケースにおける各パラメータの値の違いに応じて結果内容が様々に変化する場合です。


例えば、モデルが図1の場合、


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

このモデルで、パラメータA、BおよびCのそれぞれの値によって結果内容が異なる場合、これまでの仕様では結果表への記入内容が図2のように3×3×3=27個必要となります。
※この例では組み合わせるパラメータ数に3を指定するものとします。


組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題-図2
図2.従来の仕様での結果表への記入例

以上の条件での生成結果を表1に示します。


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

この例のように個々のパラメータの値に応じて結果内容が異なる場合は、パラメータの値ごとに結果内容を記入し、同一のテストケースで結果内容が異なるときは、それぞれの結果内容の文字列を「連結」し、新しい結果内容とすれば、結果表への記入内容をより簡潔に記述することが可能となります。


上であげた例で説明すれば、結果表への記入内容は図3のように3+3+3=9個で済むことになります。


組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題-図3
図3.新しい仕様での結果表への記入例

図3による生成結果は、表1とまったく同一になります。


結果表の結果内容欄の先頭にアンパサンド(&)を置くと、一致条件に一致したときの結果内容が異なるときに、それぞれの異なる結果内容の文字列が「連結」され、新しい結果内容となります。


結果表の一致条件に一致したとき、結果内容が異なる(生成されたテストケースの「結果内容」欄にすでに記入されている内容と、今現在一致条件に一致したときの「結果内容」が異なる)場合、順番が後の結果内容欄の先頭に & がない場合は、従来どおり「一致条件の重複」のエラーメッセージが表示されます。


ここで説明した仕様は、次のバージョンに盛り込む予定です。

Excel2000で環境設定の「セル書式は文字列」をチェックし生成を行なうとVBAのエラーとなる

PictMaster 4.1で発生するバグについてお知らせします。

Excel2000に限定した問題ですが、環境設定フォームで「セル書式は文字列」をチェックして生成を行なうとVBAのエラーとなります。これはExcel2000のエラーチェックルールに、セル書式が文字列の場合に値が文字列ではなく数値である時にセルのエラーとするルールが存在しないのに、PictMasterで存在しないエラーチェックルールのプロパティを変更しようとするために発生するVBAのエラーです。

Excel2000を使用されている場合は、環境設定フォームで「セル書式は文字列」をチェックしないようにしてください。Excel2002以降のExcelであれば問題はありません。

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

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

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


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


【機能改善】
生成結果のセル書式について、環境設定で「標準」と「文字列」のいずれかを選択可能としました。「文字列」を選択した場合は、先頭が0から始まる値(001, 002 など)の先頭の0がゼロサプレスされることなくそのまま出力されます。その反面、生成結果の並べ替えで数字も文字列として扱われるため、1の次に2ではなく10が続くようになります。初期値は「標準」となっています。
・原型シート指定時、およびサブモデル指定時のエラーチェック機能を強化しました。
・その他こまかい改良。


※ v4.1 では、環境設定で「セル書式は文字列」にチェックを入れると、Excelのオプションで「エラーチェック」の機能について、「文字列形式の数値」をエラーとは見なさないように PictMaster で自動的に設定されます。


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


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

組み合わせにエイリアスのすべての値が出現する最少テストケースを生成する方法

エイリアスを使用することで、テストケースの数を合理的に削減することができますが、場合によっては組み合わせ結果に含まれないエイリアスの値が出てしまうことがあります。これは、エイリアスで指定した値の数が多く、他のパラメータの値の数が少ない場合に発生します。エイリアスで指定した値のすべてを用いなくてもすべてのペアの組み合わせが網羅されてしまうからです。


エイリアスのすべての値が組み合わせに現れるようにするには、組み合わせる相手側のパラメータの値の数を増やせばよいわけですが、そうすると組み合わせ数が大きく増加してしまい、せっかくエイリアスにした意味がなくなります。


いま図1のモデルで生成を行なうと、表1の組み合わせが得られます。この組み合わせには、エイリアスである パラメータA の値 a21~a25 の5つのうち、a21 と a22 の2つしか出現していません


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

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

それではエイリアスのすべての値が組み合わせに出現するように、パラメータB にダミーの値を1つ追加します(図2)。ダミーの値を1つ追加することによって、パラメータB の値の数が3個となり、エイリアスをを含むパラメータA を除く残りのパラメータの値の数2個と、パラメータBの値の数3個をかけた数が6となり、エイリアスの数5個以上の値となるため、すべてのエイリアスの値が組み合わせに出現するようになります。


そして原型シートを設け、それに図3に示す値を書き込みます。この原型シートでパラメータC まで指定しているのは、パラメータA と B だけでは、エイリアスのすべての値を用いてユニークなペア構成することができないためです。パラメータA の値はすべてエイリアスなので実質的な値の数は1つと見なされます。そのため、新たにパラメータC についても値を指定し、パラメータB と C との組み合わせがすべてユニークなペアとなるようにします。こうしないと、実際に原型シートを用いて組み合わせを生成した場合に、ユニークでないペアの組み合わせは1つを残し、あとはPICTによって削除されてしまいます。


組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題-3
図2.パラメータB にダミーの値を追加したモデル

組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題-4
図3.ユニークなペアだけで構成した原型シート

以上のモデルと原型シートを用いて生成した組み合わせを表2に示します。


表2.ダミーの値と原型シートを使用した生成結果
組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題-5

この生成結果では、テストケース数が14件となっています。その内容をみると、ダミーの値がパラメータA のエイリアス以外の値とも組み合わせられています。この組み合わせは本来不要なものです。そこで図4の制約指定(他の制約指定がある場合は、それに違反しないようにします)を追加し、ダミーの値がエイリアスの値とのみ組み合わせられるようにします。この場合の組み合わせ結果を表3に示します。


組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題-6
図4.制約指定を追加したモデル

表3.ダミーの値と原型シートそして制約指定を追加した生成結果
組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題-7

この生成結果では、テストケース数が11件となりました。組み合わせ内容を見ると、エイリアスのすべての値が出現しており、かつ、ダミーの値が1個のみとなっています。この件数が、組み合わせにエイリアスのすべての値が出現する最少テストケース数となります。最後にdummyの値を適当な値に置き換えて完成です。


着信時に電話機のLCDに表示する内容を決定するデシジョンテーブルを作成する

ビジネスホンシステムで外線から電話がかかってきたときに、電話機のLCDに表示する内容は、電話網から通知される情報と、ビジネスホンシステム側のデータ設定値の組み合わせによって、さまざまなパターンがあります。今回は、このLCD表示内容を決定するデシジョンテーブルをPictMasterを使って作成してみました。


どの場合にどの内容をLCDに表示するかについては、機能仕様書に明記されているのですが、文章で書かれており、注釈の多い文章なので、どのような条件のときにどのように表示されるのかを把握することが簡単ではありません。つまり、仕様がかなり複雑であるということです。こうした場合はデシジョンテーブルが最適なテスト技法になります。


まず、機能仕様書をもとに、LCD表示内容に関係するパラメータを抽出します。そして各パラメータのとりうる値を決定し、PictMasterに記入します。次に各要因間に存在する組み合わせ上の制約を洗い出し、それを制約表に記入します。最後に、結果表を用いて、要因の組み合わせに応じた結果(この場合はLCDの表示内容)を記入します。


ここまで済んだら、組み合わせるパラメータ数に要因の数を指定し、PictMasterで組み合わせを生成します。つまり全数組み合わせを生成することになります。全数組み合わせでは、組み合わせ結果は1通りしかないので、生成回数は1回でよいことになります。


続いて、生成された組み合わせ結果を、「結果内容」欄をキーとして並べ替えを行ないます。こうすると同じ結果となる組み合わせが連続するので、各組み合わせで結果に影響を与えない要因を見つけやすくなります。


並べ替えた結果から、同じ結果となる組み合わせを同じ色で塗りつぶします。続いて、結果に影響を与えない要因の値をダミーの「-」で置き換えます。この結果、同じ組み合わせ内容となる複数の組み合わせについて1つを残して残りを削除します。この時点でデシジョンテーブルの完成です。


今回の場合、制約を考慮しない全数組み合わせでは、組み合わせ数が 2304個となりました。制約を指定した結果、組み合わせ数は150個となりました。特に厳重なテストが必要とされる場合は、この段階でテストケースとします。原子力発電所のECCSや航空機の自動操縦装置のソフトウェアなどではそうしたテストが行なわれることになると思います。そこまでの厳重さが必要とされない場合は、この次に、結果に影響を与えない要因の値をダミーの「-」で置き換え、同じ組み合わせは1つを残して削除し、デシジョンテーブルを圧縮することになります。今回の場合は、27個となりました。


今回の場合のモデルを図1に示します。結果表の内容は、LCDの1行目と2行目に表示する内容を表しています。



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

図1.LCD表示内容を決定するデシジョンテーブル作成用のモデル


生成された組み合わせを図2に示します。なお、組み合わせ数が多いので、ここでは先頭からの一部分だけを示しています。以降も同様です。


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

図2.デシジョンテーブル用の最初の組み合わせ


生成した組み合わせを、「結果内容」をキーとして並べ替えを行ないます。(図3


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

図3.結果内容欄で並べ替えた組み合わせ


同じ結果内容となる組み合わせを同じ色で塗りつぶします。(図4


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

図4.同一結果となる組み合わせを同じ色で塗りつぶす


結果に影響を与えない要因の値をダミーの「-」で上書きします。(図5


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

図5.結果に影響を与えない要因の値をダミーの「-」で上書きする


同じ組み合わせ内容はデシジョンテーブルを圧縮するために、1個を残して後は削除します。(図6


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

図6.デシジョンテーブルを圧縮する


最後に色の塗りつぶしを解除し、先頭の要因をキーとして並べ替えを行ない完成です。(図7


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

図7.完成したデシジョンテーブル


以上の作業で最も注意したいのが、図5の結果に影響を与えない要因の値をダミーに置き換える作業です。ここで見落としや、間違った上書きとならないよう、注意して行います。


最終的に作成したデシジョンテーブルはそのままテストケースとすることができます。文章では分かりにくかった複雑な仕様が表形式で分かりやすくなりました。


今回のデシジョンテーブルは、最初の組み合わせ数がなり大きかったので、要因の「着信方式」で2つに分け、別々のデシジョンテーブルとしたほうが良かったかもしれません。