(57)【要約】      （修正有）【課題】テスト対象に水準数が異なる因子が混在する場合にもテストケース数の増加を抑制する。【解決手段】テスト設計支援装置１０は、テスト対象の複数の因子ごとに、該因子が取り得る値の数を示す水準数の情報を取得し、直交表に基づき生成した複数水準の因子を割付可能な行列の中から、情報における最大の水準数の因子を全て割付可能な行列を選択し、選択された行列に対して未割付の因子の水準数のうち最大の水準数を注目水準数に設定し、選択された行列において注目水準数の因子を割付可能な列の数が注目水準数の因子の数以上である場合には、行列に注目水準数の因子を割り付け、選択された行列において注目水準数の因子を割付可能な列の数が注目水準数の因子の数以上でない場合であって、行列において注目水準数よりも大きな水準数の因子を割付可能な余剰列が残っているときには、余剰列を、注目水準数を割り付け可能な列に分解して行列を更新する。【選択図】図１
2014178846.tif 000002
【特許請求の範囲】
【請求項１】
テスト対象の複数の因子ごとに、該因子が取り得る値の数を示す水準数の情報を取得する取得手段と、
直交表に基づき生成した複数水準の因子を割付可能な行列の中から、少なくとも前記取得した情報における最大の水準数の因子を全て割付可能な行列を選択する選択手段と、
前記選択された行列に対して未割付の因子の水準数のうち最大の水準数を注目水準数に設定する設定手段と、
前記選択された行列において前記注目水準数の因子を割付可能な列の数が前記注目水準数の因子の数以上である場合には、前記行列に前記注目水準数の因子を割り付ける割付手段と、
前記選択された行列において前記注目水準数の因子を割付可能な列の数が前記注目水準数の因子の数以上でない場合であって、前記行列において前記注目水準数よりも大きな水準数の因子を割付可能な余剰列が残っているときには、当該余剰列を、前記注目水準数を割り付け可能な列に分解して前記行列を更新する更新手段と、
前記割付手段又は前記更新手段による処理の後に前記設定手段による処理を実行させて、前記設定手段、前記割付手段、前記更新手段による処理を再帰的に実行させる手段と、を含む
ことを特徴とするテスト設計支援装置。
【請求項２】
前記複数の因子のうち水準数が二の累乗数でない因子については、水準数が二の累乗数となるように水準を追加する追加手段をさらに含み、
前記取得手段は、前記追加手段により水準が追加された前記複数の因子ごとに、該因子が取り得る値の数を示す水準数の情報を取得する
ことを特徴とする請求項１に記載のテスト設計支援装置。
【請求項３】
水準数が等しい因子のみを有する直交表を、その列の数だけ横に連結した後に、該横連結した直交表をさらに縦に二段組み上げて、下段については直交表ごとに列の順番を変えるようにして直交表を拡張するサイズ拡張手段と、
２水準の直交表を、４以上の二の累乗数の水準を割付可能な多水準の列を含む直交表に拡張する水準数拡張手段と、を含み、
前記選択手段は、前記水準数拡張手段により拡張された直交表における水準数ごとに、該水準数の直交表について前記サイズ拡張手段により拡張した直交表を組み合わせて作成した行列の中から、少なくとも前記取得した情報における最大の水準数の因子を全て割付可能な行列を選択する
ことを特徴とする請求項２に記載のテスト設計支援装置。
【請求項４】
前記選択された行列において前記注目水準数の因子を割付可能な列の数が前記注目水準数の因子の数以上でない場合であって、前記行列において前記注目水準数よりも大きな水準数の因子を割付可能な余剰列が残っていないときには、前記選択手段は、前記選択した行列よりも大きな行列を再選択する
ことを特徴とする請求項１乃至３のいずれかに記載のテスト設計支援装置。
【請求項５】
前記割付手段により前記取得した情報における最小の水準数の因子を前記行列に全て割り付けた場合に、該行列を出力する出力手段をさらに含む
ことを特徴とする請求項１乃至４のいずれかに記載のテスト設計支援装置。
【請求項６】
テスト対象の複数の因子ごとに、該因子が取り得る値の数を示す水準数の情報を取得する取得手段と、
直交表に基づき生成した多水準の因子を割付可能な行列の中から、少なくとも前記取得した情報における最大の水準数の因子を全て割付可能な行列を選択する選択手段と、
前記選択された行列に対して未割付の因子の水準数のうち最大の水準数を注目水準数に設定する設定手段と、
前記選択された行列において前記注目水準数の因子を割付可能な列の数が前記注目水準数の因子の数以上である場合には、前記行列に前記注目水準数の因子を割り付ける割付手段と、
前記選択された行列において前記注目水準数の因子を割付可能な列の数が前記注目水準数の因子の数以上でない場合であって、前記行列において前記注目水準数よりも大きな水準数の因子を割付可能な余剰列が残っているときには、当該余剰列を、前記注目水準数を割り付け可能な列に分解して前記行列を更新する更新手段と、
前記割付手段又は前記更新手段による処理の後に前記設定手段による処理を実行させて、前記設定手段、前記割付手段、前記更新手段による処理を再帰的に実行させる手段
としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テスト設計支援装置及びプログラムに関する。
【背景技術】
【０００２】
ソフトウェア等において複数因子間の設定の組合せによって異常な振る舞いが起きないかどうかを確認するためにテストを行うことがある（特許文献１を参照）。
【０００３】
直交表を利用して複数因子間の設定の組合せをテストする場合には、全ての因子の保有する水準の数が２の場合、因子数ｎに対してｎ＋１回のテストが必要となり、因子数の増大に対してテストケースが線形的に増大してしまっていた。そこで、水準の等しい因子のみを有する直交表をその列の数だけ横に連結した後に、横連結した直交表を縦に二段組みし、下段の直交表については列の順番を直交表ごとに1列ずつ循環的にずらして生成したテストマトリクスを用いることで、ｎ２の因子数を２ｎ−１のテストケースで実行可能とすることが提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−２８８０３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、テスト対象に水準数が異なる因子が混在する場合にもテストケース数の増加を抑制できるテスト設計支援装置及びプログラムを提供することにある。
【課題を解決するための手段】
【０００６】
請求項１に係る発明は、テスト対象の複数の因子ごとに、該因子が取り得る値の数を示す水準数の情報を取得する取得手段と、直交表に基づき生成した複数水準の因子を割付可能な行列の中から、少なくとも前記取得した情報における最大の水準数の因子を全て割付可能な行列を選択する選択手段と、前記選択された行列に対して未割付の因子の水準数のうち最大の水準数を注目水準数に設定する設定手段と、前記選択された行列において前記注目水準数の因子を割付可能な列の数が前記注目水準数の因子の数以上である場合には、前記行列に前記注目水準数の因子を割り付ける割付手段と、前記選択された行列において前記注目水準数の因子を割付可能な列の数が前記注目水準数の因子の数以上でない場合であって、前記行列において前記注目水準数よりも大きな水準数の因子を割付可能な余剰列が残っているときには、当該余剰列を、前記注目水準数を割り付け可能な列に分解して前記行列を更新する更新手段と、前記割付手段又は前記更新手段による処理の後に前記設定手段による処理を実行させて、前記設定手段、前記割付手段、前記更新手段による処理を再帰的に実行させる手段と、を含むことを特徴とするテスト設計支援装置である。
【０００７】
請求項２に係る発明は、前記複数の因子のうち水準数が二の累乗数でない因子については、水準数が二の累乗数となるように水準を追加する追加手段をさらに含み、前記取得手段は、前記追加手段により水準が追加された前記複数の因子ごとに、該因子が取り得る値の数を示す水準数の情報を取得することを特徴とする請求項１に記載のテスト設計支援装置である。
【０００８】
請求項３に係る発明は、水準数が等しい因子のみを有する直交表を、その列の数だけ横に連結した後に、該横連結した直交表をさらに縦に二段組み上げて、下段については直交表ごとに列の順番を変えるようにして直交表を拡張するサイズ拡張手段と、２水準の直交表を、４以上の二の累乗数の水準を割付可能な多水準の列を含む直交表に拡張する水準数拡張手段と、を含み、前記選択手段は、前記水準数拡張手段により拡張された直交表における水準数ごとに、該水準数の直交表について前記サイズ拡張手段により拡張した直交表を組み合わせて作成した行列の中から、少なくとも前記取得した情報における最大の水準数の因子を全て割付可能な行列を選択することを特徴とする請求項２に記載のテスト設計支援装置である。
【０００９】
請求項４に係る発明は、前記選択された行列において前記注目水準数の因子を割付可能な列の数が前記注目水準数の因子の数以上でない場合であって、前記行列において前記注目水準数よりも大きな水準数の因子を割付可能な余剰列が残っていないときには、前記選択手段は、前記選択した行列よりも大きな行列を再選択することを特徴とする請求項１乃至３のいずれかに記載のテスト設計支援装置である。
【００１０】
請求項５に係る発明は、前記割付手段により前記取得した情報における最小の水準数の因子を前記行列に全て割り付けた場合に、該行列を出力する出力手段をさらに含むことを特徴とする請求項１乃至４のいずれかに記載のテスト設計支援装置である。
【００１１】
請求項６に係る発明は、テスト対象の複数の因子ごとに、該因子が取り得る値の数を示す水準数の情報を取得する取得手段と、直交表に基づき生成した多水準の因子を割付可能な行列の中から、少なくとも前記取得した情報における最大の水準数の因子を全て割付可能な行列を選択する選択手段と、前記選択された行列に対して未割付の因子の水準数のうち最大の水準数を注目水準数に設定する設定手段と、前記選択された行列において前記注目水準数の因子を割付可能な列の数が前記注目水準数の因子の数以上である場合には、前記行列に前記注目水準数の因子を割り付ける割付手段と、前記選択された行列において前記注目水準数の因子を割付可能な列の数が前記注目水準数の因子の数以上でない場合であって、前記行列において前記注目水準数よりも大きな水準数の因子を割付可能な余剰列が残っているときには、当該余剰列を、前記注目水準数を割り付け可能な列に分解して前記行列を更新する更新手段と、前記割付手段又は前記更新手段による処理の後に前記設定手段による処理を実行させて、前記設定手段、前記割付手段、前記更新手段による処理を再帰的に実行させる手段としてコンピュータを機能させるためのプログラムである。
【発明の効果】
【００１２】
請求項１及び６に記載の発明によれば、テスト対象に水準数が異なる因子が混在する場合にもテストケース数の増加を抑制できる。
【００１３】
請求項２に記載の発明によれば、本構成を有さない場合と比較して、それぞれの因子の全水準を網羅しつつ、計算し易くすることができる。
【００１４】
請求項３に記載の発明によれば、本構成を有さない場合と比較して、テスト可能な因子の数を増加させることができる。
【００１５】
請求項４に記載の発明によれば、本構成を有さない場合と比較して、テスト対象の因子を割付可能な行列を得やすくなる。
【００１６】
請求項５に記載の発明によれば、テスト対象の因子を全て割付可能な行列を提供することができる。
【図面の簡単な説明】
【００１７】
【図１】本実施形態に係るテスト設計支援装置の機能ブロック図である。
【図２】Ｌ１６直交表を示した図である。
【図３】Ｌ１６直交表を４水準の因子にも対応するように拡張した拡張Ｌ１６直交表を示した図である。
【図４】拡張Ｌ１６直交表に割り付けることができる因子、水準の数の組合せを示した図である。
【図５】４水準の因子を２５個割付可能な基礎テストマトリクスを示した図である。
【図６】図５の基礎テストマトリクスの一列を２水準の因子を割付可能な列に分解した図である。
【図７】基礎テストマトリクステーブルの一例を示す図である。
【図８】テスト設計支援装置により実行される処理のフローチャートである。
【図９】テスト設計支援装置により実行される処理のフローチャートである。
【図１０】ＨＡＹＳＴ法、反復スライド法、ペアワイズ法の評価を比較する表である。
【図１１】ＨＡＹＳＴ法、反復スライド法、ペアワイズ法の評価を比較する表である。
【図１２】反復スライド法がペアワイズテストに対してテストケース数が少なくなる因子数を示した図である。
【図１３】因子数とテストケース数を反復スライド法とペアワイズで比較したグラフである。
【図１４】反復スライド法のツールと，ＰＩＣＴツールとを用いてそれぞれ作成した１２通りの因子の大きさと数のパターンについてのテストケース数を示した図である。
【図１５】２０種類の組込み製品について組合せテストを実施したときの因子の大きさの割合を示した図である。
【図１６】反復スライド法ツールとＰＩＣＴツールを用いて割り付けを実施した結果を示す図である。
【図１７】反復スライド法の割り付け結果と見積もり結果との比較を示す図である。
【図１８】反復スライド法の割り付け結果と見積もり結果との比較を示す図である。
【発明を実施するための形態】
【００１８】
以下、本発明を実施するための実施の形態（以下、実施形態という）を、図面に従って説明する。
【００１９】
［１．テスト設計支援装置１０に備えられる機能の説明］
図１には、本実施形態に係るテスト設計支援装置１０の機能ブロック図を示した。図１に示されるように、テスト設計支援装置１０は、入力受付部１１、テスト情報取得部１２、テストマトリクス要件情報生成部１３、基礎テストマトリクスデータ生成部１４、基礎テストマトリクスデータ格納部１５、基礎テストマトリクス選択部１６、テストマトリクスデータ保持部１７、因子割付可否判定部１８、テストマトリクス更新部１９、テストマトリクス出力部２０を備える。なお、本実施形態に係るテスト設計支援装置１０は、ソフトウェアのテストを実行する際の、テスト対象のそれぞれの因子の水準の組が各行に表れるテストマトリクスを生成するものである。すなわち、テストマトリクスの一行が一つのテストケースに対応することとなる。
【００２０】
テスト設計支援装置１０に備えられる上記の各部の機能は、ＣＰＵ等の制御手段、メモリ等の記憶手段、外部デバイスとデータを送受信する入出力手段等を備えたコンピュータが、コンピュータ読み取り可能な情報記憶媒体に格納されたプログラムを読み込み実行することで実現されるものとしてよい。なお、プログラムは光ディスク、磁気ディスク、磁気テープ、光磁気ディスク、フラッシュメモリ等の情報記憶媒体によってコンピュータたるテスト設計支援装置１０に供給されることとしてもよいし、インターネット等のデータ通信網を介してテスト設計支援装置１０に供給されることとしてもよい。
【００２１】
入力受付部１１は、キーボードやマウス等の入力デバイス、又は外部デバイスからのデータ入力を受け付ける。
【００２２】
テスト情報取得部１２は、入力受付部１１により受け付けたデータに基づいて、テスト対象ソフトウェアにおけるテスト対象の因子（テスト対象ソフトウェアにおける入力や環境要因、状態等を表す変数）と、その因子の水準（因子が取り得る値）の情報（テスト対象情報）を取得することとしてよい。ここで、テスト対象情報は、因子の総数をｎ，ｋ番目の因子をＴｋ，ｋ番目の因子が保有する水準の数をＳｋ（１≦ｋ≦ｎ），ｋ番目の因子が保有するｌ番目の水準の値をＳｋｌ（１≦ｌ≦Ｓｉ）として表される。
【００２３】
テストマトリクス要件情報生成部１３は、テスト情報取得部１２により取得したテスト対象情報に基づいて、テスト対象の因子を割り付けるために必要なテストマトリクスの要件情報を生成する。具体的には、テストマトリクス要件情報生成部１３は、テスト対象情報に含まれる因子のうち、水準の数が２の累乗でない因子について、その水準の数が２の累乗となるように水準数を追加する。すなわち、ｋ番目の因子が保有する水準の数Ｓｋが，２（ｉ−１）＜Ｓｋ＜２ｉを満たすならば、Ｓｋが２ｉになるまで因子Ｔｋにダミー水準を追加することとする。ここで、ダミー水準とは因子Ｔｋの水準のうちのどれでもよいが、例えばより多くテストをしたい水準をダミー水準として選択してもよい。
【００２４】
基礎テストマトリクスデータ生成部１４は、テストマトリクスを生成するための基礎となる基礎テストマトリクスに関するデータを生成する。ここで具体例を用いて、直交表から基礎テストマトリクスを生成する場合の処理例について説明する。
【００２５】
図２には、Ｌ１６直交表を示した。なお、直交表とは，正の整数の集合Ｓ＝｛０，１，２，……，ｓ−１｝に対して，行数がλ×ｓ２，列数がｍの行列Ａを考えた時に，Ａの任意の２列に対して，すべての順序対Ｓ×Ｓ＝｛（０，０），（０，１），…，（０，（ｓ−１）），（１，０），（１，１），…，（（ｓ−１），（ｓ−１））｝がちょうどλ個現れる場合の行列Ａのことを指す。そして、Ｌ１６直交表とは、行数が１６、列数が１５の直交表である。
【００２６】
図２にも示されているように、Ｌ１６直交表の各要素の値は０か１であり、２水準の因子にしか対応していないため、これを３以上の水準の因子にも対応するように、Ｌ１６直交表を拡張する。
【００２７】
図３には、Ｌ１６直交表を４水準の因子にも対応するように拡張した拡張Ｌ１６直交表を示した。図３に示した拡張Ｌ１６直交表は、実験計画法の多水準列の作成法を用いて、交互作用の関係にある列を合体し、図２に示したＬ１６直交表を変形したものである。図３に示した拡張Ｌ１６直交表では、例えば、１，２，３列を２水準（０，１）の因子として使ってもよいし，それを合体した１−２−３列の４水準（０００，０１１，１０１，１１０）として使っても直交性が保たれるようにしている。ただし、１，２，３列のいずれかと１−２−３列の組合せは１／２しか出現しないので同時に使用することはできない。そのため、拡張Ｌ１６直交表に割り付けることができる因子、水準の数の組合せは図４に示した通りとなる。
【００２８】
ここで、同水準数の直交表についてのテスト可能な因子数を増加させるための直交表の拡張手法（スライド法）について説明する。スライド法は、水準の数が等しい因子のみを有する直交表をその列の数だけ横に連結し、縦方向に２段組み上げる方法である。ただし直交表の２段目では、２つ目以降の表について列を１列ずつ左へスライドさせて構成することで、上下の段で行の内容が重複しないようにする。ここで、水準の数が等しい因子のみを有するｍ行ｎ列の直交表Ｌｍが与えられたとき、スライド法の２ｍ行ｎ２列のテストマトリクスＭ２ｍを作成するアルゴリズムは次のとおりである。
【００２９】
まず、ステップ１として、以下の式（１）により直交表を横に拡張して、上段の行列を生成する。
【００３０】
【数１】
2014178846.tif 000003
ただし，式（１）中の演算子（○の中に＋）は列を追加する演算子とし，Ｍ’ｍはｎ個のＬｍを横に連結したものとする．これは，元の直交表Ｌｍを列数分「表の横並べ」を実施している。
【００３１】
次に、ステップ２として、以下の式（２）により下段の行列を生成する。
【００３２】
【数２】
2014178846.tif 000004
ただし，Ｌｍｉは，ｌｉを直交表Ｌｍのｉ番目の列としたときに次式で与えられる表とする。
【００３３】
【数３】
2014178846.tif 000005
すなわち，Ｌｍｉは，直交表Ｌｍのｉ列から開始し（ｉ−１）列で終わる直交表である。
【００３４】
最後に、ステップ３として、以下の式（４）により上段と下段の行列を積み重ねてテストマトリクスＭ２ｍを作成する。
【００３５】
【数４】
2014178846.tif 000006
ただし，式（４）中の演算子（□の中に＋）は行を追加する演算子とする。
【００３６】
ここで、基礎テストマトリクスデータ生成部１４は、２水準の直交表を２以上の水準の直交表に拡張した行列に対して、上述したスライド法を適用することで基礎テストマトリクスを生成する。
【００３７】
例えば、Ｌ１６直交表を全て２水準の因子の割付に用いる場合には２２５列、３２行の基礎テストマトリクスが得られ、また、Ｌ１６直交表を全て４水準の因子の割付に用いる場合には、２５列、３２行の基礎テストマトリクス（図５参照）が得られる。このように、基礎テストマトリクス生成部は、任意の大きさの直交表Ｌｍに基づいて、１以上の水準数の因子を割付可能な基礎テストマトリクスを生成することとする。
【００３８】
なお、図５に示した４水準の因子を２５個割付可能な基礎テストマトリクスについては、図６に示されるように、その１以上の列を２水準の因子を割付可能な列に分解することができる。図６に示した例では、図５におけるＹの列を、２水準の因子を割付可能な８列に分解している。こうすることにより、４水準の因子を２４個と２水準の因子を８個割付可能なテストマトリクスが生成される。
【００３９】
基礎テストマトリクスデータ格納部１５は、基礎テストマトリクスデータ生成部１４により生成された基礎テストマトリクスに関するデータを格納する。
【００４０】
図７には、基礎テストマトリクスデータ格納部１５に格納される基礎テストマトリクステーブルの一例を示した。図７に示される基礎テストマトリクステーブルには、テストマトリクスの構成、実施可能なテストケース数、因子の大きさ（水準数）別の割付可能な因子数の情報がそれぞれ関連付けて記憶される。ここて、テストマトリクスの構成がＬｍ×２段とは、直交表Ｌｍの対応可能な水準数や因子数をスライド法により拡張して生成したことを示している。
【００４１】
基礎テストマトリクス選択部１６は、テストマトリクス要件情報生成部１３により生成されたテストマトリクス要件情報（各因子の水準数を２の累乗化したデータ）に基づいて、基礎テストマトリクスデータ格納部１５に格納される基礎テストマトリクステーブルの中から、基礎テストマトリクスを選択する。例えば、基礎テストマトリクス選択部１６は、テストマトリクス要件情報において最大の水準数を有する因子を全て割付可能な基礎テストマトリクスを基礎テストマトリクステーブルの中から選択することとしてよい。
【００４２】
テストマトリクスデータ保持部１７は、基礎テストマトリクス選択部１６により選択された基礎テストマトリクスをテストマトリクスの初期データとして保持する。なお、テストマトリクスデータ保持部１７に保持されるテストマトリクスは、因子割付可否判定部１８による判定結果に基づいてテストマトリクス更新部１９によって更新される。
【００４３】
因子割付可否判定部１８は、テストマトリクスデータ保持部１７に保持されるテストマトリクスに対して、テストマトリクス要件情報に含まれる水準の大きな因子から順に割り付け可能か否かを判定する。因子割付可否判定部１８は、現在（未更新であれば初期状態の、更新されていれば更新後の）のテストマトリクスに対象の水準数の因子を全て割り付け可能である場合には、現在のテストマトリクスに対して因子を割り付け、割り付けが可能でない場合には、対象の水準数よりも大きな水準数の因子を割り付け可能な列が残っているときには、その列を対象の水準数の因子を割り付け可能な列に分解するようにテストマトリクス更新部１９に指示する。そして、因子割付可否判定部１８は、更新されたテストマトリクスに対して因子割付の可否を再度判定する。また、因子割付可否判定部１８は、現在のテストマトリクスに対象の水準数の因子の割り付けが可能でない場合であって、対象の水準数よりも大きな水準数の因子を割り付け可能な列が残っていないときには、割付不可と判定し、基礎テストマトリクス選択部１６に基礎テストマトリクスの再選択を指示することとしてよい。また、因子割付可否判定部１８は、テストマトリクス要件情報に含まれる最小の水準数の因子をテストマトリクスデータ保持部１７に格納されたテストマトリクスに全て割り付けることができた場合には、割付が成功したと判定して、テストマトリクス出力部２０にデータの出力を指示する。
【００４４】
テストマトリクス更新部１９は、因子割付可否判定部１８の判定結果に基づいて、テストマトリクスデータ保持部１７に格納されたテストマトリクスを更新する。具体的には、テストマトリクス更新部１９は、因子割付可否判定部１８により、現在のテストマトリクスに対象の水準数の因子の割り付けが可能でない場合であって、対象の水準数よりも大きな水準数の因子を割り付け可能な列が残っていると判定された場合に、当該対象の水準数よりも大きな水準数の因子を割り付け可能な列を、対象の水準数の因子を割付て可能な列に分解して、テストマトリクスデータ保持部１７に格納されたテストマトリクスを更新する。
【００４５】
テストマトリクス出力部２０は、因子割付可否判定部１８により割付が成功したと判定された場合に、テストマトリクスデータ保持部１７に保持されたテストマトリクスを出力する。例えば、テストマトリクスの出力には、テストマトリクスを表示装置に表示させること、テストマトリクスをデータ送信させること、テストマトリクスを印刷出力させること等を含むこととしてよい。
【００４６】
［２．テスト設計支援装置１０により実行される処理の説明］
次に、図８及び図９に示したフローチャートを参照しながら、テスト設計支援装置１０により実行される処理の詳細を説明する。
【００４７】
図８に示されるように、テスト設計支援装置１０は、例えばユーザからテスト対象の因子、水準についての情報（テスト対象情報）の入力を受け付ける（Ｓ１０１）。上述したように、テスト対象情報は、因子の総数をｎ，ｋ番目の因子をＴｋ，ｋ番目の因子が保有する水準の数をＳｋ（１≦ｋ≦ｎ），ｋ番目の因子が保有するｌ番目の水準の値をＳｋｌ（１≦ｌ≦Ｓｉ）として表される情報である。
【００４８】
次に、テスト設計支援装置１０は、変数ｋを１に設定して（Ｓ１０２）、因子Ｔｋの水準数Ｓｋが２の累乗でない場合には（Ｓ１０３：Ｙ）、因子Ｔｋにダミー水準を加えてＳｋを２の累乗に修正する（Ｓ１０４）。
【００４９】
テスト設計支援装置１０は、因子Ｔｋの水準数Ｓｋが２の累乗である場合（Ｓ１０３：Ｙ）、又はＳ１０４の後に、変数ｋが因子の総数ｎに達していない場合には（Ｓ１０５：Ｎ）、ｋをインクリメント（ｋに１を加算）して（Ｓ１０６）、Ｓ１０３に戻る。また、テスト設計支援装置１０は、変数ｋが因子の総数ｎに達した場合には（Ｓ１０５：Ｙ）、水準２ｊ（ｊ＝１〜ｍ）ごとの因子数Ｃｊを計数する（Ｓ１０７）。Ｓ１０７以降の処理については図９のフローチャートを参照しながら説明する。
【００５０】
図９に示されるように、テスト設計支援装置１０は、Ｓ１０７の後に、水準数が最大である２ｍの因子数Ｃｍを割付可能な基礎テストマトリクスを、基礎テストマトリクステーブルを参照して選択する（Ｓ２０１）。例えば、テスト設計支援装置１０は、水準数２ｍについて割付可能な因子数がＣｍ以上である基礎テストマトリクスを基礎テストマトリクステーブルから選択することとしてよい。そして、テスト設計支援装置１０は、選択した基礎テストマトリクスをテストマトリクスＭの初期データとする。
【００５１】
次に、テスト設計支援装置１０は、テストマトリクスＭの水準２ｊ（ｊ＝１〜ｍ）ごとの割付可能な因子数ｄｊを取得する（Ｓ２０２）。そして、テスト設計支援装置１０は、変数ｉをｍに設定して（Ｓ２０３）、以下の処理を実行する。
【００５２】
まず、テスト設計支援装置１０は、変数ｉが１以上である場合には（Ｓ２０４：Ｙ）、Ｓ２０５に進む。ここで、テスト設計支援装置１０は、テスト対象情報に係る水準２ｉの因子数Ｃｉが０である場合には（Ｓ２０５：Ｙ）、変数ｉをデクリメント（ｉから１を減算）して（Ｓ２０６）、Ｓ２０４に戻る。また、テスト設計支援装置１０は、テスト対象情報に係る水準２ｉの因子数Ｃｉが０でない場合には（Ｓ２０５：Ｎ）、以下の処理に進む。
【００５３】
テスト設計支援装置１０は、テスト対象情報に係る水準２ｉの因子数Ｃｉが、テストマトリクスＭにおける水準２ｉについての割付可能な因子数ｄｉ以下である場合には（Ｓ２０７：Ｙ）、現在のｄｉからＣｉを減算してｄｉを更新するとともに（Ｓ２０８）、変数ｉをデクリメント（ｉから１を減算）して（Ｓ２０９）、Ｓ２０４に戻る。
【００５４】
また、テスト設計支援装置１０は、テスト対象情報に係る水準２ｉの因子数Ｃｉが、テストマトリクスＭにおける水準２ｉについての割付可能な因子数ｄｉ以下でない場合には（Ｓ２０７：Ｎ）、以下の処理に進む。
【００５５】
ここで、テスト設計支援装置１０は、テストマトリクスＭにおいて、ｋ＞ｉであって且つｄｋ＞０を満たすｋが存在する場合には（Ｓ２１０：Ｙ）、テストマトリクスＭにおいて水準２ｋのｄｋ個の列を分解して、水準２ｉの列をΔｄｋ個作成する（Ｓ２１１）。そして、テスト設計支援装置１０は、テストマトリクスにおける水準２ｉについての割付可能な因子数ｄｉにΔｄｋを加算して（Ｓ２１２）、Ｓ２０７に戻る。
【００５６】
また、テスト設計支援装置１０は、テストマトリクスＭにおいて、ｋ＞ｉであって且つｄｋ＞０を満たすｋが存在しない場合には（Ｓ２１０：Ｎ）、基礎テストマトリクステーブルにテストマトリクスＭよりも大きい基礎テストマトリクスがあるか否かを判定する（Ｓ２１３）。
【００５７】
テスト設計支援装置１０は、Ｓ２１３でＭよりも大きい基礎テストマトリクスがないと判定される場合には（Ｓ２１３：Ｎ）、Ｍより大きい基礎テストマトリクスを生成する（Ｓ２１４）。基礎テストマトリクスの生成は、基礎テストマトリクスデータ生成部１４により行うこととしてよい。
【００５８】
テスト設計支援装置１０は、Ｓ２１３でＭよりも大きい基礎テストマトリクスがあると判定される場合（Ｓ２１３：Ｙ）、又はＳ２１４の後で、Ｍよりも大きい基礎テストマトリクスを新たなテストマトリクスＭとして選択してＳ２０２に戻る。
【００５９】
なお、テスト設計支援装置１０は、Ｓ２０４で変数ｉが１以上でない、すなわち０になった場合には（Ｓ２０４：Ｎ）、テスト対象情報に係る全ての因子の割付が完了したとしてテストマトリクスＭを出力して（Ｓ２１６）、処理を終了する。
【００６０】
上記のフローチャートにおいて、テスト設計支援装置１０が、Ｓ２１３においてＭよりも大きい基礎テストマトリクスがないと判定される場合には（Ｓ２１３：Ｎ）、Ｍより大きい基礎テストマトリクスを生成する（Ｓ２１４）ことに代えて、因子数、水準数を小さくしてＳ２０２に戻ることとしてもよいし、割付不可として処理を終了しても構わない。
【００６１】
［３．テストケース数についての説明］
次に、本発明による手法（以下では反復スライド法と称する）で作成したテストマトリクス（表）についてテストケース数（行数）の見積り式を定式化する。まず，反復スライド法で作成した表を，因子数ｎ１，ｎ２，…のスライド法の表と考える。ここで各因子の大きさはＳ１，Ｓ２，…，それぞれのスライド法による表の大きさをＮ１，Ｎ２，…とする。各表の大きさは式（５）の通りになる（ここではＮ２までを示している）。
【００６２】
【数５】
2014178846.tif 000007
したがって，反復スライド法で作成した表の大きさＮは式(６)で表される。
【００６３】
【数６】
2014178846.tif 000008
【００６４】
［４．本実施形態に係る手法の評価と効果］
次に、反復スライド法と，直交表による手法（以下ＨＡＹＳＴ法），およびペアワイズテストの実装の一つであるＰＩＣＴを比較評価する。
【００６５】
［４−１．評価方法］
反復スライド法とペアワイズテストの比較を実施するために，組合せテストケースの評価に関係する要因として「因子，水準，テストケース数，網羅率，強度」を選択した。これらの要因の選択理由は以下の通りである。まず，因子と水準によってテスト対象の規模が決定する。組合せテストでは，大きさが異なる複数の因子を組み合わせるので，テスト対象の因子と水準について，因子が保有する水準数に因子の個数を累乗する表記で示すものとする。たとえば，テスト対象が４水準の因子が１５個，３水準の因子が１７個，２水準の因子が３９個である場合，４１５３１７２３９と表現する。これは，すべての水準の総当たりの組合せ数を表している。テストケース数は，ＨＡＹＳＴ法の場合は採用した直交表の行数であり，ペアワイズテストでは生成した行数に当たる。網羅率は，テスト対象とした全ての因子から任意のｋ個の因子を取り出したときに現れるすべての水準組合せの数に対する割合であり，ｋ因子間網羅率と呼ぶ。強度とは，テストマトリクスが，ｋ因子間網羅率１００％の状態の時のｋの値である。たとえば，２因子間網羅率が１００％であるときその表は「強度２の表」という。直交表は強度２が保証されている。また，ペアワイズテストは強度が２になるまでテストケースを追加する技法である。直交表とペアワイズテストのどちらも強度３以上のテストマトリクスを作成することもできる（これをｋ−ｗａｙテストと呼ぶ）。
【００６６】
上記評価要因を用いて，次の３点に関し、ＨＡＹＳＴ法とペアワイズテストの評価を行った。
（Ａ）定式化した近似式によるテストケース数の評価
（Ｂ）テストケース数の実測値と３因子間網羅率についての評価
（Ｃ）テストマトリクスの組合せの出現回数についての評価
【００６７】
［４−１−１．定式化した近似式と実測値によるテストケース数の評価］
式（６）で示した通り，反復スライド法のテストケース数は，因子数の１／２乗のオーダーで増加する。ＨＡＹＳＴ法によるテストケース数は以下の式（７）により表される。また、ペアワイズテストでＰＩＣＴツールが採用しているｇｒｅｅｄｙアルゴリズムを用いた場合，テストケース数は以下の式（８）の通りに近似されることが分かっている。
【００６８】
【数７】
2014178846.tif 000009
【００６９】
【数８】
2014178846.tif 000010
ここでｌは因子の大きさを表す。
【００７０】
図１０には、以上の近似式（６），（７），（８）から因子の大きさを２としたときの近似計算結果を示す。因子数に対して２の累乗引く１の値を採用した理由はＨＡＹＳＴ法（直交表）に最も因子を詰め込んだケースに該当するためである。したがって，例えば，ＨＡＹＳＴ法で１６．０の値の箇所はＬ１６直交表を使用することに対応している。
【００７１】
図１０より，因子の大きさが全て２である場合，反復スライド法は，ＨＡＹＳＴ法と比較して，例えば，因子数が２５５で１／７のテストケースに減少していることが示されている。
【００７２】
図１１は，同様の演算を因子の大きさを８としたときの計算結果および実測値である。ＨＡＹＳＴ法で不可としたところは，直交表Ｌ１０２４，Ｌ２０４８，Ｌ４０９６において８水準線点図を作成していないためであり理論的には１０２４件，２０４８件，４０９６件である。
【００７３】
反復スライド法の列を使い切るケースである大きさが８の因子を８１個割り付けると反復スライド法で，１２８項目，ＰＩＣＴツールで２０４項目のテストケースが得られる。近似式によると，因子数が少ないうちは反復スライド法の方が、テストケース数が少ないが，因子数が３７８個を超えると，ペアワイズテストの方のテストケース数が少なくなる。
【００７４】
図１２には、反復スライド法がペアワイズテストに対してテストケース数が少なくなる因子数を示す。図１２は，近似式において４水準の因子が５３個までは反復スライド法のテストケース数の方がペアワイズよりも少なくなるということを示している。８水準の因子ではそれが３７７個になり，１６水準の因子では２２５１個となる。１６水準の実測値としては因子数２８９個で，反復スライド法で５１２項目，ＰＩＣＴツールで１０５０項目であった。
【００７５】
図１３は，因子の大きさを８に固定したときの因子数とテストケース数を反復スライド法とペアワイズで比較したグラフである。因子数が３７７個を超える点でグラフがクロスしていることがわかる。なお，２水準の大きさの因子についてはペアワイズの方が必ず少なくなる。また、３水準の大きさの因子の場合も反復スライド法ではダミー水準を追加し４水準の因子として取り扱うため無駄が生じるのでペアワイズの方が少なくなる。このように，４水準以上の大きさの因子については，因子の大きさが大きくなると，反復スライド法の方がペアワイズテストよりもテストケース数が少なくなる。
【００７６】
以上では，近似式を用いてテストケース数に着目した比較評価を行った。一般に直交表によるテストはペアワイズテストよりもテストケース数は多くなるが，組合せの出現バランスが良いので多因子間網羅率がペアワイズテストよりも高いと言われている。
【００７７】
［４−１−２．テストケース数の実測値と３因子間網羅率についての評価］
次に，反復スライド法とペアワイズで１２種類のサンプルを使用し実際に割り付けたテストケース数を比較するとともに，３因子間網羅率について比較を実施した。図１４には、その比較結果を示した。
【００７８】
図１４は，本実施形態に係る反復スライド法のツールと，ＰＩＣＴツールとを用いてそれぞれ作成した１２通りの因子の大きさと数のパターンについてのテストケース数を示したものである。なお、２因子間網羅率はいずれも１００％であるため括弧内に３因子間網羅率を示した。ペアワイズ列の１項目目は，デフォルトの生成モードである２因子間網羅率１００％で生成した結果であり，２項目目は３因子間網羅率を反復スライド法の結果と比較するため，反復スライドの生成テストケース数へ合わせたものである。なお，ペアワイズテストで生成したテストケース数の方が少ない１〜５については，ペアワイズテストにより強度３で生成後，反復スライド法のテストケース数に合わせ，そのほかについては強度２で生成後，テストケース数が合うようにテストケースを削減している。１から５までは，因子の大きさが２水準から４水準である。これらに対しては，反復スライド法よりもペアワイズの方が２因子間網羅率１００％を実現するテストケース数が半分程度である。また，ペアワイズで反復スライド法と同数のテストケース数へ増やした場合，３因子間網羅率は反復スライド法よりも大きい値になっている。以上のことからこれらのケースにおいては，ペアワイズで作成した方が良いことが分かる。６から８までは，因子の大きさとして８水準，１６水準のものを有している。これらに対しては，反復スライド法の方がペアワイズよりも２因子間網羅率１００％を実現するテストケース数が少ない。３因子間網羅率についても同じ件数までペアワイズで生成したものを減らすと反復スライド法の方が大きな値になっていることからこれらについては，反復スライド法で作成した方が良いことが分かる。９から１２までは，反復スライド法で隙間無く因子・水準を割り付けたパターンである。このようなパターンにおいては，同等もしくは反復スライド法の方が少ないテストケース数となっている。なお、表中で（−）となっている部分は因子数が多く３因子間網羅率を計算できなかった部分である。本実施形態では因子の大きさが５以上の因子を「大きな因子」と呼び４以下であれば「小さな因子」と呼ぶことにする。因子が大きい，小さいは実際の製品テストにおける因子の大きさの分布からの区分けである。
【００７９】
図１５は、２０種類の組込み製品について組合せテストを実施したときの因子の大きさの割合を示している。図１５から，因子の大きさが４までの小さな因子が全体の７６％を占めているものの，５水準以上の因子も２４％存在し，無視できないことが分かる。
【００８０】
以上のことから，小さな因子ばかりのテスト（図１４の１から５）においては，ペアワイズが有利であること，大きな因子が含まれてくると（図１４の６から１２においては），反復スライド法が有利であることが上述した近似式だけでなく実測値として確認できた。また，３因子間網羅率については一般的には直交表が優れていると言われていた。しかしながら，テストケース数を合わせるとケース３を除き５％以内の差に収まっており，テストケース数の違いの方が３因子間網羅率の決定に寄与していると考えられる。
【００８１】
ここで，図１４のケース２は，３因子間網羅率の比較において３１．３％と大きな差があるが，これは反復スライド法においては３水準の因子は４水準として扱うためと考えられる。その理由は，３１３ではなく４１３で生成すると反復スライド法で３１（４２．３％），ペアワイズで３３（４５．１％），３１（４３．１％）という近い値となるからである。
【００８２】
［４−１−３．テストマトリクスの組合せの出現回数についての評価］
反復スライド法は，直交表をベースに作成しているため前半もしくは後半のテストケースで同じ組合せが同数回出現する。したがって，反復スライド法で横に増やした直交表上にある違う列間の全分散と交互作用の分析については，前半分のテストケースの結果で分析し，同じ列の全分散と交互作用の分析については，後半分のテストケースの結果で分析すればよい。例えば，Ｌ８を２段にするケースを考える。元となるＬ８では７個の２水準の因子（Ａ１〜Ｇ１とする）がある。これを横に７つ連結するが，一つ目の因子Ａ１について分析する時には，残りの６つの直交表についてはＡ１に当たる因子（Ａ２〜Ａ７）は削除して分析する。因子Ａ１と前半で削除した因子については，後半分の直交表で直交しているので後半の直交表ではＡ１〜Ａ７だけで分析する。
【００８３】
以上の事から，テストマトリクスの組合せの出現回数が，テスト結果分析機能において大きな意味を持っていることが確認できた。したがって，テスト結果分析においてはペアワイズテストよりもＨＡＹＳＴ法を拡張した反復スライド法に優位性がある。
【００８４】
［４−２．反復スライド法の効果について］
反復スライド法は，従来のＨＡＹＳＴ法によるテストの弱点であった「テスト対象の因子の大きさが小さいものが多数存在した時のテストケース数の増加」すなわち「因子数ｎに対するテストケース数Ｎの一時関数的増加」に対して，それを「因子数ｎ１／２，すなわち１／２乗増加（平方根のオーダー）」へ抑えることができた。
【００８５】
また、反復スライド法は，ＨＡＹＳＴ法に比べ２機能間網羅率１００％を変えず，テストケース数が一次関数的増加から１／２乗増加になるため少ないテストケース数になっている。また，本実施形態に係る手法は，ペアワイズテストに比べ２水準あるいは３水準の大きさの因子についてはペアワイズテストの方が、テストケース数が少ないが，４水準以上の大きさの因子については近似式において図１２の条件で本実施形態に係る手法の方が、テストケース数が少なくなる。ただし，反復スライド法のテストケースは２の累乗の大きさをとるため，実際には，飛び飛びの大きさのテストマトリクスになる。
【００８６】
図１６は，反復スライド法ツールとＰＩＣＴツールを用いて割り付けを実施した結果である。因子の大きさが８水準のケースで２８９因子までは反復スライド法の方が、テストケース数が少ないことが確認できた。因子の大きさが１６水準のケースで２８９までの因子の数以降の作成をしていないが、実際は図１２の２２５１に近い値になるものと考えられる。
【００８７】
次に，テストケース数の見積り式について考察する。図１４の条件で式（６）を用いてテストケース数を計算すると図１７のとおりになる。
【００８８】
図１７の反復スライド法の列でテストケース数（行の数）が２の累乗数でない項目があるが，それは２段に組み上げた時の１行目が同じケースを除いているからである。また，反復スライド法で作成した表のテストケース数と，式（６）による見積もりの差が大きい場合がある。その理由は，直交表の大きさが２の累乗数しかないため飛び飛びの大きさしか直交表が存在しないからである（因子が入る列が余っている）。そこで，見積り式（６）で得られた値を，その値より大きい２の累乗数に切り上げしてから計算すると図１８のとおりになる。
【００８９】
このように反復スライド法を使用する場合のテストケース数の特性を明らかにし，その見積りを立てることができるようになった。これにより，テスト計画，テスト要求分析の段階で，反復スライド法による定式化したテストケース数を使用することで設計時の効果と効率のトレードオフが可能となる。すなわち，以下の４ステップを踏むことによって，テストケース数の再計画を行うことができる。
（ステップ１）：組み合わせるべき因子・水準を洗い出す。
（ステップ２）：見積り式（６）によりテストケース数を算出する。
（ステップ３）：（ステップ２）で得られた値より大きい２の累乗数に切り上げる。
（ステップ４）：（ステップ３）で得られた値をテスト工数から導かれるテストケース可能数と比較する。
【００９０】
また，見積り式から得たテストケース数が実施可能なテストケース数より少なかった場合は因子を追加し，より充実したテストを実施することができる。ペアワイズテストの場合は，割り付けを実施して初めてテストケース数が判明する。また，希望するテストケース数にするためにどの位，因子を削減すべきかの情報が無く試行錯誤を繰り返すことになる。
【００９１】
本発明は以上説明した実施形態に限定されるものではない。また、以上説明したテスト設計支援装置１０により生成されたテストマトリクスの列ごとに、当該列の水準数に応じた因子及び水準の具体的な値を割り付けた後に、テストマトリクスの行ごとのテストケースを順次実行することとしてよい。
【符号の説明】
【００９２】
１０  テスト設計支援装置、１１  入力受付部、１２  テスト情報取得部、１３  テストマトリクス要件情報生成部、１４  基礎テストマトリクスデータ生成部、１５  基礎テストマトリクスデータ格納部、１６  基礎テストマトリクス選択部、１７  テストマトリクスデータ保持部、１８  因子割付可否判定部、１９  テストマトリクス更新部、２０  テストマトリクス出力部。
【図１】
2014178846.tif 000011
【図２】
2014178846.tif 000012
【図３】
2014178846.tif 000013
【図４】
2014178846.tif 000014
【図５】
2014178846.tif 000015
【図６】
2014178846.tif 000016
【図７】
2014178846.tif 000017
【図８】
2014178846.tif 000018
【図９】
2014178846.tif 000019
【図１０】
2014178846.tif 000020
【図１１】
2014178846.tif 000021
【図１２】
2014178846.tif 000022
【図１３】
2014178846.tif 000023
【図１４】
2014178846.tif 000024
【図１５】
2014178846.tif 000025
【図１６】
2014178846.tif 000026
【図１７】
2014178846.tif 000027
【図１８】
2014178846.tif 000028