効率のよい組み合わせテストを行なうには
組み合わせテスト技法の利点は、少ないテストケースで網羅性の高いテストを行なうことができる点にあります。ここで少ないテストケースと言うと従来の方法よりもテストケース数が少なくなると思われかもしれません。組み合わせテスト技法を使わない場合は、テスト経験者の勘で必要な組み合わせを抽出してテストを行なうことになります。これと比較して組み合わせテスト技法では、テストケース数は取り上げるパラメータの値の数によって決まります。往々にしてテストケース数が増加しがちです。
このことは「少ないテストケース」と矛盾すると思われるかもしれません。この意味は、従来の経験と勘に頼る方法では網羅性の低いテストになってしまうが、組み合わせテスト技法を使用することで、全数組み合わせテストと比較してそれほど障害検出効果を落とすことなく、テストケース数を大幅に少なくできるという意味です。全数組み合わせと比較して「少ないテストケース」で済むということであり、組み合わせテスト技法を使わなかった場合と比較して、少ないテストケースで済むという訳ではありません。
組み合わせテスト技法を使えば、イコール「効率のよいテスト」ができるということにはなりません。網羅性の高いテストが行なえるようになることは確かですが、往々にしてテストケース数が多くなる場合があり得ます。そのままではテストの効率が落ちてしまいます。組み合わせテストを実施する上では、効率のよいテストが行なえるように次に示すいくつかの対策をとった方がよいでしょう。
1.組み合わせテスト技法がふさわしくないテスト対象を明確にする
テスト対象の性質に応じて組み合わせテストとは相性の悪いものがあります。状態の遷移が関係する、複雑な論理構造を持つテスト対象などがそれです。状態の遷移が関係する対象を組み合わせテストの対象としようとして、いたずらに制約指定が増えてしまい収拾がつかなくなってしまう場合などがそうです。組み合わせテストの対象外とするテスト対象を明確にする必要があります。
2.リスクに応じて組み合わせか列挙かを分ける
すべてを要因組み合わせとしようとするとテストケース数が膨大なものとなってしまいます。テスト対象のリスク分析を行ない、リスクが小さいテスト対象については要因組み合わせではなく、要因を単に列挙するだけの要因列挙テストとしましょう。要因列挙テストでは、パラメータのすべての値が少なくとも1回はテストされます。仕様変更のない機能については組み合わせを行なわず、列挙するだけで済ますといったことです。PictMasterのサブモデルの機能を使用することで、同じテストにおいて一部のパラメータは要因組み合わせで、残りのパラメータは要因列挙で、といった使い分けもできます。
3.取り上げる代表的なパラメータと値を明記する
よく取り上げることになるパラメータと値の一覧表を作成しておきましょう。テスト設計をする人によって取り上げるパラメータに違いがでることはよくありません。誰がテスト仕様書を作成しても同じレベルのテスト仕様書が作成できるようにする上で、こうした一覧表は役に立ちます。
4.エイリアス化が可能な代表的なパラメータと値を明記する
エイリアス化はテストケース数の増加を合理的に抑える上でとても役に立つものです。エイリアス化が可能な代表的なパラメータと値の一覧表を作成しておきましょう。テスト対象によってはエイリアス化は危険な場合があり得ます。特に新規機能などリスクの大きいテスト対象がそれです。こうした点に注意した上で使用することで効果的にテストを実施することができます。
5.代表的な制約の関係を明記する
レビューを実施してもテスト実施中に組み合わせできないテストケースに遭遇することがあります。制約の関係は機能仕様を良く理解していないと把握が難しいものです。代表的な制約の関係を明記した一覧表を作成しておきましょう。こうしておけば制約指定が間違ったテストケースが紛れ込むことをかなり防ぐことができます。
6.複雑なデータ設定が必要な機能についてデータ設定項目を明記する
機能を動作させるために複雑なデータ設定が必要な場合があります。テスト担当者のすべてがそうした機能に精通しているという訳ではないかもしれません。そうした場合に、必要なデータ設定項目の説明が明記された一覧表があれば、時間をかけずにテストを実施することができるようになります。
組み合わせテスト技法は数あるテスト技法のひとつに過ぎません。組み合わせテスト技法でテストの網羅性を高めることはできますが、そのままではテストの効率が向上する訳ではありません。これまで10人でやっていたテストが、組み合わせテスト技法を採用したことで8人で済むようになるというようなことはなかなか難しいと思います。
組み合わせテスト技法では、1つのテストケースに数多くのパラメータが組み合わされるようになるために、テストケース1件当たりのテスト実施時間が増加する傾向があります。ここで挙げた6つの対策を講じることで、組み合わせテスト技法採用によるテスト実施効率の低下を防ぐ効果が期待できます。
このことは「少ないテストケース」と矛盾すると思われるかもしれません。この意味は、従来の経験と勘に頼る方法では網羅性の低いテストになってしまうが、組み合わせテスト技法を使用することで、全数組み合わせテストと比較してそれほど障害検出効果を落とすことなく、テストケース数を大幅に少なくできるという意味です。全数組み合わせと比較して「少ないテストケース」で済むということであり、組み合わせテスト技法を使わなかった場合と比較して、少ないテストケースで済むという訳ではありません。
組み合わせテスト技法を使えば、イコール「効率のよいテスト」ができるということにはなりません。網羅性の高いテストが行なえるようになることは確かですが、往々にしてテストケース数が多くなる場合があり得ます。そのままではテストの効率が落ちてしまいます。組み合わせテストを実施する上では、効率のよいテストが行なえるように次に示すいくつかの対策をとった方がよいでしょう。
1.組み合わせテスト技法がふさわしくないテスト対象を明確にする
テスト対象の性質に応じて組み合わせテストとは相性の悪いものがあります。状態の遷移が関係する、複雑な論理構造を持つテスト対象などがそれです。状態の遷移が関係する対象を組み合わせテストの対象としようとして、いたずらに制約指定が増えてしまい収拾がつかなくなってしまう場合などがそうです。組み合わせテストの対象外とするテスト対象を明確にする必要があります。
2.リスクに応じて組み合わせか列挙かを分ける
すべてを要因組み合わせとしようとするとテストケース数が膨大なものとなってしまいます。テスト対象のリスク分析を行ない、リスクが小さいテスト対象については要因組み合わせではなく、要因を単に列挙するだけの要因列挙テストとしましょう。要因列挙テストでは、パラメータのすべての値が少なくとも1回はテストされます。仕様変更のない機能については組み合わせを行なわず、列挙するだけで済ますといったことです。PictMasterのサブモデルの機能を使用することで、同じテストにおいて一部のパラメータは要因組み合わせで、残りのパラメータは要因列挙で、といった使い分けもできます。
3.取り上げる代表的なパラメータと値を明記する
よく取り上げることになるパラメータと値の一覧表を作成しておきましょう。テスト設計をする人によって取り上げるパラメータに違いがでることはよくありません。誰がテスト仕様書を作成しても同じレベルのテスト仕様書が作成できるようにする上で、こうした一覧表は役に立ちます。
4.エイリアス化が可能な代表的なパラメータと値を明記する
エイリアス化はテストケース数の増加を合理的に抑える上でとても役に立つものです。エイリアス化が可能な代表的なパラメータと値の一覧表を作成しておきましょう。テスト対象によってはエイリアス化は危険な場合があり得ます。特に新規機能などリスクの大きいテスト対象がそれです。こうした点に注意した上で使用することで効果的にテストを実施することができます。
5.代表的な制約の関係を明記する
レビューを実施してもテスト実施中に組み合わせできないテストケースに遭遇することがあります。制約の関係は機能仕様を良く理解していないと把握が難しいものです。代表的な制約の関係を明記した一覧表を作成しておきましょう。こうしておけば制約指定が間違ったテストケースが紛れ込むことをかなり防ぐことができます。
6.複雑なデータ設定が必要な機能についてデータ設定項目を明記する
機能を動作させるために複雑なデータ設定が必要な場合があります。テスト担当者のすべてがそうした機能に精通しているという訳ではないかもしれません。そうした場合に、必要なデータ設定項目の説明が明記された一覧表があれば、時間をかけずにテストを実施することができるようになります。
組み合わせテスト技法は数あるテスト技法のひとつに過ぎません。組み合わせテスト技法でテストの網羅性を高めることはできますが、そのままではテストの効率が向上する訳ではありません。これまで10人でやっていたテストが、組み合わせテスト技法を採用したことで8人で済むようになるというようなことはなかなか難しいと思います。
組み合わせテスト技法では、1つのテストケースに数多くのパラメータが組み合わされるようになるために、テストケース1件当たりのテスト実施時間が増加する傾向があります。ここで挙げた6つの対策を講じることで、組み合わせテスト技法採用によるテスト実施効率の低下を防ぐ効果が期待できます。