制御構造が並列型の場合の制御パステスト | 組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題

制御構造が並列型の場合の制御パステスト

プログラムの制御構造を大きく2つに分けるとしたら、並列型直列型に分けることができます。並列型は条件文が横方向に接続する構造を持ち、直列型は条件文が縦方向に接続する構造を持ちます。

今回は制御構造が並列型の場合の制御パステストについて取り上げます。
並列型の例として以下のソースリストを示します。

リスト1.並列型制御構造のソースリストの例

組み合わせテストツール PictMaster と AllPairII を使う-ソースリスト訂正版


このソースリストをフローチャートで表したものを以下に示します。なお、制約表を用いて制御パステストの制約を記述する場合はフローチャートの作成は不要です。ソースリストからそのまま制約表に記述することができます。ここでは制御構造の特徴を表すためにフローチャートを用いています。

組み合わせテストツール PictMaster と AllPairII を使う-並行型制御パス
図1.並列型制御構造のフローチャートの例

このフローチャートを見ると、制御パステストの命令網羅、条件網羅(真と偽の両方を通る)および経路網羅のいずれの網羅基準を採用してもテストケース数は8個となります。
並列型制御構造では、必要とされるテストケース数は最大でも条件文の数+1となります

リスト1のソースリストをもとに作成したモデルと制約表の例を以下に示します。

組み合わせテストツール PictMaster と AllPairII を使う-モデルと制約表

図2.並列型制御構造のモデルと制約表の例


この制約表は、制約の数を圧縮してあります。「制約対象が次の制約条件となる」というルールで記入しますが、複数の制約を1つにまとめられる場合があります。

生成したテストケースの例を以下に示します。

表1.並列型制御構造のテストケースの例

組み合わせテストツール PictMaster と AllPairII を使う-生成結果

この例では、最少テストケース生成を行なってもテストケース数は常に8個でした。但し、生成エンジンにJennyを指定し最少テストケース生成を300回行なうと7個となりました。これはあきらかに必要なテストケースが1個欠落しています。PICTでは300回行なっても常に8個でした。

どうもJennyはバグの可能性が付きまとうようで生成エンジンとしては使用を控えた方がよさそうです。