組み合わせテストは無則だけをテストする? 有則・無則・禁則の考え方
有則・無則・禁則とは
組み合わせテストに関係した用語に「有則」「無則」「禁則」があります。禁則を除き、これらの言葉はもとからあるのではなく造語であり、直交表を用いる組み合わせテストで用いられています。ちなみに禁則はペアワイズ法では英語で Constraint といい、日本語では「制約」と呼びます。
禁則という言葉が登場したのはJasst05東京での「直交表を活用したソフトウェアテストの効率化 -HAYST法の活用-」が最初だと思われます。
さらに有則と無則という言葉が登場したのは、Jasst07東京の「ソフトウェアテストの展望 SW機能テストから、システム挙動の評価へ」が最初のようです
禁則とは、パラメータ(要因)を組み合わせることのできる組み合わせが制限されているという意味です。例えばエアコンの運転モードと設定の組み合わせでは、送風モードのときは温度設定は行えないので、これらの組み合わせは組み合わせることができず、禁則の関係にあります。
それでは有則はどういう意味でしょうか。組み合わせによって出力に影響を及ぼす組み合わせを有則の組み合わせといいます。例えばデシジョンテーブルでは条件の組み合わせ(ルール)に応じて出力であるアクションが様々に変化します。デシジョンテーブルは有則のテストであるということができます。
その他にデシジョンテーブルほどルールのパターンは多くなくても、組み合わせによって出力が変化するといったことはよくあることです。こうした組み合わせも有則の組み合わせといえます。
出力に影響を及ぼさないと考えられる組み合わせを無則の組み合わせといいます。どのように組み合わせても出力は常に同じであると考えられる関係を無則といいます。
組み合わせテストは無則だけをテストする?
直交表関係の組み合わせテストを論じている記事では、組み合わせテストは無則の関係をテストするとしています。記事を読んでみると、どうも組み合わせテストでは有則の関係にある組み合わせは考慮されていないようです。
前出の「ソフトウェアテストの展望…」では、「無則のテストは、悪影響が無いことをテストする 実験計画法(直交表)、All-Pair法は、無則の一部をテストする技法」と書かれています。どのような組み合わせであっても出力が変化しないと考えられる組み合わせだけをテストすると読めます。
この記事以外でも、組み合わせテストでは無則だけをテストする、としている記事がほとんどです。しかし、本当にそうでしょうか。実際のテストの現場で、組み合わせテストはどのような組み合わせでも出力が影響を受けない、変化しない組み合わせだけを扱っているでしょうか?
組み合わせテストでは有則の組み合わせもテストが必要
機能の組み合わせを考えた場合、機能Aと機能B、機能Cがあり、機能Aは機能Bと機能Cを呼び出してその出力結果に応じて異なる出力を行う、といった処理はよくあることです。そして各機能にはデータ設定があり、その設定内容に応じて異なる動作となる、といったこともよくある処理です。
このような機能の数が多くなると、結合テストあるいは総合テストではそれぞれのデータ設定の異なる内容の組み合わせを考慮するとテストケースが多くなりすぎる場合があります。そうした場合は組み合わせテストが最も最適なテスト技法だといえます。
組み合わせが多すぎるため、デシジョンテーブルは現実的ではありません。2つまでの要因の組み合わせで発生する障害を効率よく検出することができる組み合わせテストこそ、こうしたテストにふさわしいものです。
このテストではデータ設定内容に応じて動作が異なるので有則のテストです。したがって、有則のテストも組み合わせテストの対象になるのです。
もちろん、組み合わせによって出力が影響を受けないと考えられる無則のテストも組み合わせテストの対象です。またテストによっては無則の組み合わせと有則の組み合わせを組み合わせて実施する場合もよくあります。
組み合わせによって異なる結果となる場合、組み合わせに対応する結果を自動的にテストケースに設定できるように、PictMasterでは結果表という機能が用意されています。組み合わせテストにおいて、こうした機能の必要性は海外の論文などでは論じられています。
なお、2パラメータ間の組み合わせだけでは組み合わせに応じて異なる結果のバリエーションのすべてを網羅することができない場合は、テストケースは多くなりますがデシジョンテーブルですべての組み合わせをテストする必要があります。
「組み合わせテストは無則だけをテストする」といった誤解があるようですので指摘させていただきました。
PictMasterの直交表テンプレート決定方法
PictMasterでは直交表ベースの組み合わせ生成を行うことができますが、みなさんはPictMasterが、本当に正しく直交表どおりの組み合わせ生成を行なっているのだろうかと疑問に思うことはないでしょうか。PictMastreが内部で行っている処理は目に見えないので、そうした疑問を抱くことは自然だと思います。
でも安心してください。PictMasterでは生成した直交表ベースの組み合わせが正しく直交表の性質を保持していること(2因子間網羅率が100%)を、ペアワイズ法での組み合わせ生成結果との比較を行なって確認することで保証しています。この確認は環境設定で「カバレッジを表示」をチェックして生成を行なうことで行うことができます。
PictMasterは約300種類の直交表テンプレートを内蔵し、モデルのパラメータ数と水準数に合った最も小さなサイズのテンプレートを決定し、それをもとに組み合わせを生成しています。今回はそのテンプレート決定方法について説明します。
PictMasterでは、それぞれの直交表テンプレートが水準数別にいくつのパラメータがあるかを「テンプレート属性テーブル」で定義しています。直交表テンプレートは水準数の少ない列から多い列の順で並んでいます。属性テーブルも同じ列の順で並んでいます。モデルの水準数の大きな順からその水準のパラメータ数で属性テーブルをテンプレートのサイズの小さな順からサーチし、属性テーブルの水準別のパラメータ数がモデルのパラメータ数以上のテンプレートを探します。
属性テーブルの水準別のパラメータ数がモデルのパラメータ数以上のテンプレートが見つかったら、モデルの次に少ない水準数のパラメータ数が今見つかったテンプレートでカバーできるかを判定し、カバーできれば同じようにモデルのすべての水準数のパラメータについて判定します。すべての水準数をカバーできると分かったらそのテンプレートで組み合わせを生成します。
そのテンプレートの水準数のパラメータ数でモデルのパラメータ数をカバーできない場合は次に大きなサイズの属性テーブルをサーチします。ここでテンプレートの水準数のパラメータ数がモデルのパラメータ数をカバーできるかの判定においては、より上位の水準数のパラメータで組み合わせ生成に使われていないパラメータがあれば、そのパラメータを下位の水準に「繰り下げ」て組み合わせ生成に使用するようにします。
ここまでの説明では分かりにくいと思うので例を使って説明します。
例えば、モデルの水準別パラメータ数が次の表の場合、2水準系直交表の属性テーブルの水準数を見ると、どのテンプレートも一部のパラメータ数が不足していることが分かります。
No.167では4水準のパラメータ数が不足しています。No.168とNo.169についても4水準または2水準のパラメータ数が不足しています。こうした場合、PictMasterでは上位の水準で組み合わせ生成に使われていない余ったパラメータがあるかを調べ、あればそれを不足している水準に繰り下げます。繰り下げられた上位水準のパラメータはモデルの水準数で割った余り(MOD)を算出して実際の値の名称に変換します。
この時のテンプレート決定処理を次に示します。
こうした上位水準から下位水準への繰り下げは隣り合った水準のみに限られることはなく、例えば16水準から2水準への繰り下げといったことも可能です。極端な例ですが、No.168のテンプレートを使って2水準のパラメータが5+17+11+28=61個ある組み合わせを生成することも理論上は可能です。
このような柔軟性のあるテンプレート決定アルゴリズムを採用しているため、限られたテンプレート数にもかかわらず、実用上支障のない程度に様々なモデルへの適用が可能となっています。
PictMasterで採用している直交表テンプレートとは
PictMasterでは直交表方式でのテストケース生成ができますが、モデルに合わせた直交表の生成に直交表テンプレートを使用しています。直交表テンプレートには大きく分けて2水準系と混合水準系の2種類があります。2水準系とは、パラメータの水準数が2の階乗となる直交表で、水準数は2、4、8、16、32、64の6種類です。テンプレートの大きさ(行数)は最大L256までです。混合水準系とは、水準数が2の階乗以外となる直交表で、3、5、6、7、9、10などがあります。多くは2水準を含みます。テンプレートの大きさはL242までです。
有償の直交表ツールでは2水準系の直交表だけをサポートしていますが、2水準系だけですとモデルによってはテストケース数がかなり多くなってしまう場合があるため、PictMasterでは混合水準系の直交表もサポートし、モデルに応じて最適な直交表を選択するようにしています。
2種類のテンプレートのうち、混合水準系のテンプレートは次の2つのサイトで公開されている直交表を利用しています。2水準系でL512の直交表も含まれています。
http://neilsloane.com/oadir/index.html
http://support.sas.com/techsup/technote/ts723_Designs.txt
これらのサイトには多数の直交表が掲載されていますが、その多くは2水準や3水準など、水準数の小さいものが多く、ソフトウェアテストで使用できる多水準の直交表は残念ながらあまり多くはありません。PictMasterで使用しているのは97種類です。
2水準系のテンプレートは、サイズが小さいものを除いて公開されていません。そのため、PictMasterでは有償の直交表を購入し、利用しています。フリーソフトに使用することは著作権者の了承済みです。有償のため、直交表そのものは一般には公開できないので暗号化しています。処理を合わせるために混合水準系の直交表も暗号化しています。有償とは言っても数千円です。これで186種類もの2水準系直交表が利用できるのであれば安いものだと思います。自力で作成するのは大変なので…。
2水準系直交表を手に入れたいとお考えの方がおられるなら、次のサイトを訪問し、メールで問い合わせたら良いと思います。
http://ktsc.cafe.coocan.jp/sub3.html
このサイトがなければPictMasterの直交表対応はできませんでした。この場を借りて改めてお礼申し上げます。
PictMaster 7.0.2J をリリースしました
PictMaster 7.0.2J をリリースしました。
変更点は次の通りです。
【バグ修正】
・生成方式が直交表でカバレッジを表示が指定されていたとき、CIT-BACHがインストールされていない場合にVBAのエラーとなる問題を修正した。
・分析機能の「指定パラメータ間のカバレッジ表示」で、CIT-BACHがインストールされていない場合にVBAのエラーとなる問題を修正した。
PictMaster 7.0.2J は次のサイトからダウンロードすることができます。
64ビット版Excelにも対応した PictMaster64.xlsm をリリースしました
64ビット版Excelにも対応した PictMaster64.xlsm をリリースしました。
ダウンロードしたPictMasterのExcelファイルには
PictMaster.xlsm バージョン表示は 7.xJ
PictMaster64.xlsm バージョン表示は 7.xJ 64
の2種類のツールが同梱されています。
PictMaster.xlsm は32ビット版Excelでのみ使用可能です。64ビット版Excelでファイルを開くとVBAのエラーとなります。分析機能の全機能がサポートされています。
PictMaster64.xlsm は32ビット版Excelと64ビット版Excelのどちらでも使用可能です。ただし、分析機能の一部機能は64ビット版Excelの制限によりサポートされません。
PictMaster は次のサイトからダウンロードすることができます。
https://ja.osdn.net/projects/pictmaster/


