要因組み合わせと要因列挙を合成してテストケース数を削減する
テーマ:テストプロセスソフトウェア開発ではまったくの新規開発は少なく、大部分は既存製品をベースにしたソフトウェアの再利用をともなうソフトウェア開発であることはよく知られた事項だと思います。
既存製品をベースにした新製品の開発では、新製品で新たに追加された「新規機能」と、既存製品の機能をそのまま流用した「既存機能」に分けられます。ソフトウェアの開発においては開発期間の短縮が至上命題である場合が少なくありません。こうした場合、ソフトウェア開発工程のほぼ半分を占めるテスト工程の効率化を図り、短いテスト工程で十分な品質に仕上げなければなりません。
こうした場合のテスト戦略として「リスクベースドテスト」を採用することが一般的だと思います。ソフトウェアテストを各テスト対象に対して均等に工数を割り当てるのではなく、市場でソフトウェアの欠陥が発生する可能性と重大性を考慮して、その可能性が低く、比較的重大でないと考えられるテスト対象についてはテスト工数を大きく減らし、テストにメリハリをつけるのがリスクベースドテストの考え方です。
具体的には、ソフトウェアの変更のない既存機能についてのテストは思い切って工数を減らし、新規機能のテストに工数を割り当てることになります。これを組み合わせテストに当てはめれば、新規機能については要因組み合わせテストを多めに行うが、既存機能についてはテストケース数が多くなりがちな要因組み合わせテストではなく、組み合わせを行わない要因列挙テストで済ますということになります。
要因列挙テストのテストケースを作成するには環境設定で「組み合わせるパラメータ数」に1を設定して生成を行なうだけです。
パラメータが5つ、各パラメータあたり5つの値を持つモデルでの要因列挙のテストケースの例を以下に示します。
テストケース数が5件となりました。要因列挙テストのテストケースは要因の組み合わせが行なわれないのでテストケース数は最も多くの値を持つパラメータの値の数となります。これが要因組み合わせではテストケース数が32件とかなり多くの件数となります。
ソフトウェアに変更がない既存機能については徹底したテストは不要ですから、このように要因列挙テストで済ますことにより、テスト工数を大幅に削減することができます。
全てを要因列挙にする必要がない場合もあります。それは最も多くの数の値を持つパラメータとそれ以外のパラメータの持つ値の数に大きな開きがある場合です。
パラメータが5つ、8個の値を持つパラメータが2つ、残りは3個のパラメータを持つモデルを例として説明します。(図1)
このモデルのテストケース数は要因列挙テストでは8件となります。この場合、3個の値をもつパラメータが3つありますが、このパラメータについては、要因組み合わせテストとしてもテストケース数は3×3=9件となり、8件とほとんど変わりありません。
ここで1つのテストケースで要因組み合わせと要因列挙を合成する方法を説明します。
環境設定で「組み合わせるパラメータ数」に1を設定します。「サブモデルを使用する」にチェックを入れます。
サブモデルの記入欄に、要因組み合わせを行なうパラメータを記入し、組み合わせ数に2を記入します。(図2)
このモデルでの生成結果を以下に示します。このテストケースではパラメータAとBが要因列挙であり、パラメータC、DおよびEが要因組み合わせとなっています。
このように多くの値を持つパラメータだけ選択して要因列挙とし、それ以外のパラメータを要因組合せとすることで、テストケース数をそれほど増加させることなく、要因組み合わせを混在させた要因列挙のテストケースを生成することができます。
この例では要因列挙テストとするパラメータが2つでしたが、3つ以上とした場合でも各パラメータの組み合わせはランダムとなり、組み合わせが1対1となるようなことはありません。
要因組み合わせと要因列挙を混在したテストケースはそれほど多くはないと思いますが、要因列挙のみのテストケースはよく使われることになると思います。要因列挙であればツールを使わなくてもいいではないかと考える方がいるかもしれませんが、制約がある場合はツールを使ったほうが間違いがなくてよいでしょう。
要因列挙テストは、要因の組み合わせによるソフトウェアの欠陥はないだろうということを前提としています。既存機能の流用であれば、要因を組み合わせてまでの徹底したテストは不要だとすることでテスト工数を大きく削減してよいと考えます。実際に市場に出荷した製品でのソフトウェアの欠陥は既存機能ではほとんど発生していないことから、リスクベースドテストのテスト戦略は有効であると言えます。
同じテーマの最新記事
- テスト設計用ドキュメントの例 10月16日
- テストのほとんどが既存製品をベースにし… 09月28日
- ソフトウェアの品質を示す新しい指標の提… 09月29日


















