(57)【要約】      （修正有）【課題】不具合が生じるテストデータと、生じないテストデータの境界を、精度良く且つ効率良く推定する。【解決手段】支援装置４０は、テストデータを試験対象２０に与える試験装置３０と連係して動作する。支援装置は、結果取得部６１と、生成部６３と、供給部６４を備える。結果取得部は、試験装置が試験対象に与えた第１テストデータと、第１テストデータを与えた場合における試験対象の動作の良否を判定した判定結果の組を取得する。生成部は、第１テストデータと判定結果の組に基づき、試験装置が試験対象を試験するための第２テストデータを生成する。供給部は、第２テストデータを試験装置に供給する。生成部は、判定結果が異なる２つの第１テストデータを選択し、選択した前記２つの第１テストデータの中間領域の範囲内の値となるようなテストデータを中間領域の範囲外のテストデータよりも高頻度で生成することによって、第２テストデータを生成する。【選択図】図１
2017058838.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのパラメータを含むテストデータを試験対象に与える第１装置と連係して動作する情報処理装置であって、
前記第１装置が前記試験対象に与えた第１テストデータと、前記第１テストデータを与えた場合における前記試験対象の動作の良否を判定した判定結果との組を取得する結果取得部と、
前記第１テストデータと前記判定結果との組に基づき、前記第１装置が前記試験対象を試験するための第２テストデータを生成する生成部と、
前記第２テストデータを前記第１装置に供給する供給部と、
を備え、
前記生成部は、
前記判定結果が異なる２つの前記第１テストデータを選択し、
選択した２つの前記第１テストデータの中間領域の範囲内の値となるようなテストデータを、前記中間領域の範囲外のテストデータよりも高頻度で生成することによって、前記第２テストデータを生成し、
選択した２つの前記第１テストデータの前記中間領域は、テストデータの集合を包含する領域であり、
前記中間領域に属するそれぞれのテストデータは、それぞれのパラメータの値が、選択した２つの前記第１テストデータの、対応するパラメータの２つの値のうち、小さい方の値から大きい方の値までの閉区間に含まれる
情報処理装置。
【請求項２】
前記生成部は、
前記判定結果が異なり、前記中間領域に他の前記第１テストデータが存在しない２つの前記第１テストデータを選択する
請求項１に記載の情報処理装置。
【請求項３】
前記生成部は、前記判定結果が異なり、含まれるパラメータの距離が最も近い２つの前記第１テストデータを選択する
請求項２に記載の情報処理装置。
【請求項４】
前記生成部は、前記判定結果が異なり、同一の値のパラメータを最も多く含む２つの前記第１テストデータを選択する
請求項２に記載の情報処理装置。
【請求項５】
前記生成部は、選択した２つの前記第１テストデータにおける一部のパラメータの値を入れ替えた２つの前記第２テストデータを生成する
請求項２から４の何れか１項に記載の情報処理装置。
【請求項６】
前記生成部は、選択した２つの前記第１テストデータにおける対応するパラメータの平均値を、それぞれのパラメータの値とした前記第２テストデータを生成する
請求項２から４の何れか１項に記載の情報処理装置。
【請求項７】
前記第１装置が前記試験対象に与えた前記第１テストデータと、前記第１テストデータを与えた場合における前記試験対象の動作の良否を判定した前記判定結果との組を記憶する結果記憶部と、
前記結果取得部に、前記試験装置が前記試験対象に与えた前記第２テストデータと、前記第２テストデータを与えた場合における前記試験対象の動作の良否を判定した前記判定結果との組を取得させ、取得した前記第２テストデータと前記判定結果との組を前記結果記憶部に新たな前記第１テストデータと前記判定結果との組として追加して記憶させ、前記生成部に、前記結果記憶部に記憶された前記第１テストデータと前記判定結果との組に基づき新たな前記第２テストデータを生成させる繰返制御部をさらに備える
請求項１から６の何れか１項に記載の情報処理装置。
【請求項８】
前記判定結果が切り替わるパラメータの閾値と、前記閾値で分割されるそれぞれの領域の前記判定結果とを表す境界情報を推定する推定部をさらに備える
請求項１から７の何れか１項に記載の情報処理装置。
【請求項９】
前記境界情報に基づき、前記閾値を挟んだそれぞれの領域のパラメータを含む確認用テストデータを生成する確認データ生成部と、
前記確認用テストデータを与えた場合における前記試験対象の動作の良否を判定した前記判定結果と、前記判定結果を予測した予測情報とが一致するか否かを確認し、前記判定結果と前記予測情報とが一致した場合に前記境界情報を出力させる確認部と、
をさらに備える請求項８に記載の情報処理装置。
【請求項１０】
少なくとも１つのパラメータを含むテストデータを試験対象に与える第１装置と、
請求項１から９の何れか１項に記載の情報処理装置とを備える
試験システム。
【請求項１１】
少なくとも１つのパラメータを含むテストデータを試験対象に与える第１装置と連係するための情報処理方法であって、
結果取得部が、前記第１装置が前記試験対象に与えた第１テストデータと、前記第１テストデータを与えた場合における前記試験対象の動作の良否を判定した判定結果との組を取得する結果取得ステップと、
生成部が、前記第１テストデータと前記判定結果との組に基づき、前記第１装置が前記試験対象を試験するための第２テストデータを生成する生成ステップと、
供給部が、前記第２テストデータを前記第１装置に供給する供給ステップとを
含み、
前記生成ステップにおいて、
前記判定結果が異なる２つの前記第１テストデータを選択し、
選択した２つの前記第１テストデータの中間領域の範囲内の値となるようなテストデータを、前記中間領域の範囲外のテストデータよりも高頻度で生成することによって、前記第２テストデータを生成し、
選択した２つの前記第１テストデータの前記中間領域は、テストデータの集合を包含する領域であり、
前記中間領域に属するそれぞれのテストデータは、それぞれのパラメータの値が、選択した２つの前記第１テストデータの、対応するパラメータの２つの値のうち、小さい方の値から大きい方の値までの閉区間に含まれる
情報処理方法。
【請求項１２】
少なくとも１つのパラメータを含むテストデータを試験対象に与えて試験する第１装置を支援する装置として、情報処理装置を機能させるためのプログラムであって、
前記情報処理装置を、
前記第１装置が前記試験対象に与えた第１テストデータと、前記第１テストデータを与えた場合における前記試験対象の動作の良否を判定した判定結果との組を取得する結果取得部と、
前記第１テストデータと前記判定結果との組に基づき、前記第１装置が前記試験対象を試験するための第２テストデータを生成する生成部と、
前記第２テストデータを前記第１装置に供給する供給部と
して機能させ、
前記生成部が、
前記判定結果が異なる２つの前記第１テストデータを選択し、
選択した２つの前記第１テストデータの中間領域の範囲内の値となるようなテストデータを、前記中間領域の範囲外のテストデータよりも高頻度で生成することによって、前記第２テストデータを生成し、
選択した２つの前記第１テストデータの前記中間領域は、テストデータの集合を包含する領域であり、
前記中間領域に属するそれぞれのテストデータは、それぞれのパラメータの値が、選択した２つの前記第１テストデータの、対応するパラメータの２つの値のうち、小さい方の値から大きい方の値までの閉区間に含まれる
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置、試験システム、情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
近年、ソフトウェア開発者は、開発したプログラムに機能およびセキュリティの欠陥が無いかどうかを試験する。欠陥を発見した場合、開発者は、デバッガ等を利用してプログラムの内部動作を監視しながら、不具合を引き起こすコードを特定し、特定したコードを修正する。
【０００３】
プログラムを組み込んだ機器を試験する場合、開発者は、デバッガを用いて不具合を引き起こすコードを特定することができない場合がある。このような場合、開発者は、例えばファジングと呼ばれる手法を用いてランダムなテストデータを機器に与え、不具合が生じたテストデータと不具合が生じなかったテストデータとを取得する。そして、開発者は、不具合が生じたテストデータと不具合が生じなかったテストデータとの境界を解析して、不具合を引き起こす原因を推定する。
【０００４】
ところで、不具合が生じたテストデータと不具合が生じなかったテストデータとの境界を精度良く推定するためには、テストデータに含まれるパラメータを細かく変化させながら、機器に与えなければならない。しかし、この場合、大量のテストデータを機器に与えなければならなく、効率が良くない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−７７１２４号公報
【非特許文献】
【０００６】
【非特許文献１】Michael  Greene，  Adam  Amini，  Pedram  Sutton，  “FUZZING  Brute  Force  Vulnerability  Discovery”，  Addison-Wesley  Professional，  2007/6/29
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明が解決しようとする課題は、効率良く試験することにある。
【課題を解決するための手段】
【０００８】
実施形態の情報処理装置は、少なくとも１つのパラメータを含むテストデータを試験対象に与える第１装置と連係して動作する。前記情報処理装置は、結果取得部と、生成部と、供給部とを備える。前記結果取得部は、前記第１装置が前記試験対象に与えた第１テストデータと、前記第１テストデータを与えた場合における前記試験対象の動作の良否を判定した判定結果との組を取得する。前記生成部は、前記第１テストデータと前記判定結果との組に基づき、前記第１装置が前記試験対象を試験するための第２テストデータを生成する。前記供給部は、前記第２テストデータを前記第１装置に供給する。そして、前記生成部は、前記判定結果が異なる２つの前記第１テストデータを選択し、選択した２つの前記第１テストデータの中間領域の範囲内の値となるようなテストデータを、前記中間領域の範囲外のテストデータよりも高頻度で生成することによって、前記第２テストデータを生成する。選択した２つの前記第１テストデータの前記中間領域は、テストデータの集合を包含する領域である。前記中間領域に属するそれぞれのテストデータは、それぞれのパラメータの値が、選択した２つの前記第１テストデータの、対応するパラメータの２つの値のうち、小さい方の値から大きい方の値までの閉区間に含まれる。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態に係る試験システムの構成を示す図。
【図２】テストデータの構成を示す図。
【図３】ＩＰｖ４パケットの構成を示す図。
【図４】試験履歴の一例を示す図。
【図５】境界情報の第１の表示例を示す図。
【図６】境界情報の第２の表示例を示す図。
【図７】境界情報の第３の表示例を示す図。
【図８】境界情報の第４の表示例を示す図。
【図９】試験システムの処理順序を示すフロー図。
【図１０】第１テストデータおよび判定結果および結果不明領域を示す図。
【図１１】第１テストデータおよび判定結果および中間領域を示す図。
【図１２】テストデータおよび推定境界の一例を示す図。
【図１３】変形例に係る試験システムの構成を示す図。
【図１４】変形例に係る試験システムの処理順序を示すフロー図。
【図１５】推定された境界および確認用テストデータの一例を示す図。
【図１６】第２実施形態に係る試験システムの構成を示す図。
【図１７】第３実施形態に係る試験システムの構成を示す図。
【図１８】実施形態に係る情報処理装置のハードウェア構成を示す図。
【発明を実施するための形態】
【００１０】
以下、図面を参照しながら実施形態に係る試験システムについて詳細に説明する。本実施形態に係る試験システムは、不具合が生じるテストデータと不具合が生じないテストデータとの境界を表す境界情報を、精度良く且つ効率良く推定することを目的とする。
【００１１】
（第１実施形態）
図１は、第１実施形態に係る試験システム１０の構成を試験対象２０とともに示す図である。試験システム１０は、試験装置３０（第１装置）と、試験装置（第１装置）と連係して動作する支援装置４０（情報処理装置）とを備える。試験システム１０は、試験対象２０を試験する。
【００１２】
試験対象２０は、例えば、プログラムが組み込まれた機器である。試験対象２０は、例えば、半導体装置等のハードウェアデバイスであってもよい。また、試験対象２０は、コンピュータで実行されるプログラムであってもよい。本実施形態においては、試験対象２０は、プログラムが組み込まれた機器であり、ＩＰｖ４(Internet  Protocol  version  4)の通信プロトコルを用いた通信機能を有する。
【００１３】
試験装置３０は、試験対象２０を試験する。より具体的には、試験装置３０は、テストデータを試験対象２０に与え、その後に試験対象２０の動作を直接的または間接的に観測することにより、試験対象２０の動作の良否を判定する。動作の良否とは、試験対象２０が一定の基準にしたがって従って動作しているかどうかを示す「合格」「不合格」２値の情報である。動作が合格とされる基準は、試験対象２０の構成および試験の内容によって異なる。本実施形態においては、試験装置３０は、テストデータとしてＩＰｖ４パケットを試験対象２０に与えて、試験対象２０が有する通信機能を試験する。
【００１４】
テストデータは、少なくとも１つのパラメータを含む。試験装置３０は、含まれるパラメータの値を変化させた複数のテストデータを試験対象２０に与えることにより、試験対象２０を複数の条件で動作させることができる。そして、試験装置３０は、それぞれの条件において、試験対象２０が正常に動作する（合格）か、試験対象２０が正常に動作しないか（不合格）か、を判定する。なお、試験装置３０は、１つのテストデータに複数のパラメータが含まれる場合、一部のパラメータの値を変化させ、他のパラメータの値を例えば固定してもよい。これにより、試験装置３０は、変化させた場合に試験対象２０が正常に動作しなくなるパラメータを容易に特定させることができる。
【００１５】
支援装置４０は、試験装置３０を支援する。また、支援装置４０は、試験装置３０から試験履歴を取得し、取得した試験履歴に基づき境界情報を推定する。また、支援装置４０は、１回目の試験における試験履歴に基づき、２回目の試験において試験装置３０が用いるテストデータを生成する。そして、支援装置４０は、生成したテストデータを試験装置３０に供給する。
【００１６】
試験装置３０と支援装置４０とは、例えばネットワークにより接続される。また、試験装置３０および支援装置４０は、同一の情報処理装置により実現され、アプリケーション間で通信してもよい。
【００１７】
試験装置３０は、初期データ発生部５１と、データ出力部５２と、観測部５３と、判定部５４と、結果出力部５５とを有する。
【００１８】
初期データ発生部５１は、１回目の試験において試験対象２０に与える複数の第１テストデータを発生する。初期データ発生部５１は、例えば、ファジングと呼ばれる手法で、変化させる対象となるパラメータの値がランダムに分散するような複数の第１テストデータを発生する。初期データ発生部５１は、例えば、ユーザが予め生成した複数の第１テストデータを１回目の試験に先だって内部に記憶し、１回目の試験において内部に記憶している複数の第１テストデータを発生してもよい。なお、初期データ発生部５１は、支援装置４０または他の装置に備えられてもよい。この場合、試験装置３０は、１回目の試験に先だって、複数の第１テストデータを取得する。
【００１９】
データ出力部５２は、試験対象２０にテストデータを与える。１回目の試験においては、データ出力部５２は、第１テストデータを初期データ発生部５１から取得して試験対象２０に与える。また、２回目の試験においては、データ出力部５２は、第２テストデータを支援装置４０から取得して試験対象２０に与える。
【００２０】
データ出力部５２は、試験対象２０の構成または試験の内容によってテストデータを与える方法が異なる。例えば、試験対象２０の通信機能を試験する場合、データ出力部５２は、ネットワークを介してテストデータを試験対象２０に与える。また、試験対象２０が半導体装置等のハードウェアデバイスである場合、データ出力部５２は、試験対象２０の端子へとテストデータを与える。また、試験対象２０がプログラムであって試験装置３０と同一の情報処理装置で動作している場合、データ出力部５２は、プロセス間通信、共有メモリまたはその他の伝達手段等を用いて、テストデータを試験対象２０に与える。本実施形態においては、データ出力部５２は、ＩＰｖ４パケットをテストデータとしてネットワークを介して試験対象２０に与える。
【００２１】
観測部５３は、試験対象２０の動作を観測する。観測とは、試験対象２０が一定の基準に従って動作しているかどうかを判断するために必要な情報を収集することである。観測部５３は、試験対象２０の構成および試験の内容によって観測方法、すなわち情報を収集する方法が異なる。
【００２２】
例えば、観測部５３は、テストデータが与えられたことに応じて、もしくはテストデータが与えられた後の時点において、試験対象２０が出力した応答データあるいは応答信号を取得する。観測部５３は、例えば、テストデータと同様の方法で応答データを取得する。具体的には、試験対象２０の通信機能を試験する場合、観測部５３は、ネットワークを介して応答データを試験対象２０から取得する。
【００２３】
また、試験対象２０が半導体装置等のハードウェアデバイスである場合、観測部５３は、試験対象２０の端子から信号を取得する。信号は、例えば電圧値などのアナログ信号であってもよく、この場合、観測部５３は、アナログ・デジタル変換によりアナログ信号をデジタル信号に変換してもよい。
【００２４】
また、試験対象２０の通信機能を試験する場合、観測部５３は、試験対象２０から応答データを取得するために、データ出力部５２が試験対象２０に対してテストデータを与えた後に、試験対象２０に当該テストデータとは異なるデータを与えてもよい。例えば、観測部５３は、試験対象２０に対してｐｉｎｇコマンドを実行することにより応答を確認するためのＩＣＭＰ（Internet  Control  Message  Protocol）パケットを送り、その応答データを取得するものであってもよい。
【００２５】
また、試験対象２０が異常状態をエラーランプの点灯で示すハードウェア装置である場合、観測部５３は、ハードウェア装置をカメラ等で撮影することにより、エラーランプの点灯状態を取得してもよい。
【００２６】
また、試験対象２０がプログラムであって、試験装置３０と同一の情報処理装置で動作している場合、観測部５３は、プロセス間通信、共有メモリまたはその他の伝達手段等を用いて、応答データを試験対象２０から取得してもよい。または、観測部５３は、ソフトウェアデバッガを用いて試験対象２０を動作させ、ソフトウェアデバッガから試験対象２０の内部動作に関する情報を取得してもよい。本実施形態においては、観測部５３は、応答データとしてＩＰｖ４パケットをネットワークを介して試験対象２０から取得する。なお、観測部５３はこれらの観測方法を組み合わせ、複数の情報を取得してもよい。
【００２７】
判定部５４は、観測部５３による観測の結果に基づき、テストデータを与えた場合における試験対象２０の動作の良否を判定する。判定部５４は、試験対象２０の構成、観測部５３の構成、および試験の内容によって判定方法が異なる。
【００２８】
例えば、観測部５３が試験対象２０の通信機能を試験する場合、判定部５４は、観測部５３が取得した応答データの受信の有無に基づき、受信があれば正常な動作をしている（合格）と判定し、受信がなければ正常な動作をしていない（不合格）と判定する。また、応答データの内容に基づき、応答データの内容が正常であれば合格、応答データに異常がある場合に不合格と判定してもよい。
【００２９】
また別の一例として、判定部５４は、試験対象２０が定常的に規定にしたがった信号を出力するハードウェア装置であり、観測部５３が試験対象２０出力信号を取得した場合、観測部５３が観測によって取得した信号が規定通りである場合に合格、信号が取得できなかった場合や、取得された信号が規定を満たさない場合に不合格と判定してもよい。また別の一例として、判定部５４は、観測部５３が試験対象２０のエラーランプの点灯状態を取得した場合、エラーランプが消灯している場合に合格、点灯している場合に不合格と判定してもよい。
【００３０】
また別の一例として、試験対象２０がソフトウェアである場合、判定部５４は、テストデータに応じて出力された結果データと、仕様上期待される結果データとが一致する場合に合格、一致しない場合もしくは途中で処理が異常終了した場合に不合格と判定してもよい。また、判定部５４は、デバッガにより観測された内部状態が正常である場合に合格、異常である場合に不合格と判定してもよい。なお、判定部５４はこれら複数の判定方法を組み合わせて動作の良否を判定してもよい。
【００３１】
結果出力部５５は、データ出力部５２が試験対象２０に与えたテストデータと、判定部５４による判定結果とを組にして、試験履歴として支援装置４０に送信する。１回目の試験において、結果出力部５５は、試験対象２０に与えたそれぞれの第１テストデータと、対応する判定結果との組を支援装置４０に送信する。また、２回目の試験において、結果出力部５５は、第２テストデータと対応する判定結果との組を支援装置４０に送信する。
【００３２】
支援装置４０は、結果取得部６１と、結果記憶部６２と、生成部６３と、供給部６４と、推定部６５と、提示部６６とを有する。
【００３３】
結果取得部６１は、試験装置３０から試験履歴を取得する。より具体的には、１回目の試験において、結果取得部６１は、試験装置３０が試験対象２０に与えたそれぞれの第１テストデータと、第１テストデータを与えた場合における試験対象２０の動作の良否を判定したそれぞれの判定結果との組を取得する。また、２回目の試験において、結果取得部６１は、試験装置３０が試験対象２０に与えた第２テストデータと、第２テストデータを与えた場合における試験対象２０の動作の良否を判定した判定結果との組を取得する。
【００３４】
結果記憶部６２は、結果取得部６１が取得した試験履歴を記憶する。具体的には、結果記憶部６２は、それぞれの第１テストデータと、対応するそれぞれの判定結果との組を記憶する。また、結果記憶部６２は、第２テストデータと、対応する判定結果との組もさらに記憶する。結果記憶部６２は、例えば、データベース、ファイルシステムまたは主記憶メモリ等のどのような記憶部であってもよい。
【００３５】
生成部６３は、１回目の試験の後、２回目の試験の前において、第１テストデータと判定結果との組に基づき、試験装置３０が試験対象２０を試験するための第２テストデータを生成する。生成部６３は、含まれる何れかのパラメータが、第１テストデータと判定結果とに基づいて定められる結果不明領域の値となる第２テストデータを生成する。なお、生成部６３による第２テストデータの生成方法の具体例については、図１０以降を参照してさらに説明する。
【００３６】
供給部６４は、２回目の試験の前において、生成した第２テストデータを試験装置３０に供給する。推定部６５は、結果記憶部６２に記憶された試験履歴に基づき、判定結果が切り替わるパラメータの閾値と、閾値で分割されるそれぞれの領域の判定結果とを表す境界情報を推定する。提示部６６は、推定部６５により推定された境界情報をユーザに提示する。
【００３７】
図２は、テストデータの構成を示す図である。テストデータは、図２に示すように、少なくとも１つのパラメータを含む。試験装置３０は、含まれるパラメータの値を変更した複数のテストデータを試験対象２０に与えて、試験対象２０が正常な動作をするか、正常な動作をしていないかを判定する。なお、テストデータに複数のパラメータが含まれる場合、試験装置３０は、一部のパラメータの値を変更し、他のパラメータの値を固定してもよい。
【００３８】
図３は、ＩＰｖ４パケットの構成を示す図である。本実施形態においては、試験装置３０は、テストデータしてＩＰｖ４パケットを試験対象２０に送信する。ＩＰｖ４パケットは、パラメータとして、version、header_length、tos、total_length、identification、flags、fragment_offset、ttl、protocol、checksum、source_addressおよびdestination_address等を含む。
【００３９】
試験装置３０は、１回目の試験において、これらのパラメータの値をランダムに組み合わせた複数のテストデータ（ＩＰｖ４パケット）を出力する。また、試験装置３０は、一部のパラメータの値をランダムに変化させ、他の一部のパラメータの値を固定したＩＰｖ４パケットを出力してもよい。
【００４０】
また、それぞれのパラメータの値は、試験対象２０が通常通信時に受け取る範囲より外の値であってもよい。これにより、試験装置３０は、例えば、試験対象２０が通常通信時に受け取る範囲外の値のパラメータを受け取った場合に、異常動作をしないこと等を判定することができる。
【００４１】
なお、テストデータは、このようなパケットに限らず、どのようなデータであってもよい。例えば、試験対象２０が画像データを処理する機器またはソフトウェアである場合には、テストデータは、画像データを含む情報である。
【００４２】
図４は、試験履歴の一例を示す図である。結果取得部６１は、試験装置３０から試験履歴を取得して、結果記憶部６２に記憶させる。
【００４３】
結果記憶部６２は、それぞれのテストデータと、そのテストデータを与えた場合における試験対象２０の動作の良否を示す判定結果とを対応付けて記憶する。判定結果は、合格または不合格を表す。合格は、そのテストデータを与えた場合に試験対象２０が正常な動作をしたことを表す判定結果である。不合格は、そのテストデータを与えた場合に試験対象２０が正常な動作をしなかったことを表す判定結果である。
【００４４】
なお、判定結果は、さらに、スキップ等を表してもよい。スキップは、試験装置３０の原因等によりテストデータを出力できなかったことを表す判定結果である。また、判定結果は、さらに、試験対象２０の合格品質または合格レベルを表してもよい。
【００４５】
図５、図６、図７および図８は、境界情報の表示例を示す図である。推定部６５は、境界情報を推定する。提示部６６は、推定部６５が推定した境界情報をユーザに提示する。境界情報は、判定結果が切り替わるパラメータの閾値と、閾値で分割されるそれぞれの領域の判定結果とを表す。
【００４６】
例えば、テストデータに含まれるパラメータのうち、一部のパラメータを変化させ、他のパラメータを任意の値に固定した場合に、合格と不合格とが切り替わるとする。この場合、境界情報により表される閾値は、その一部のパラメータにおける合格と不合格とが切り替わる値である。また、境界情報により表されるそれぞれの領域の判定結果は、閾値より大きい値（または閾値以上の値）が合格であるか不合格であるか、もしくは、閾値より小さい値（または閾値以下の値）が合格であるか不合格であるかを示す情報である。
【００４７】
提示部６６は、例えば、不等式で表された境界情報、または、グラフで表された境界情報をユーザに提示する。
【００４８】
例えば、境界情報が、パラメータＸが１０より小さい場合に不合格であり、パラメータＸが１０以上の場合に合格であることを表す場合、提示部６６は、図５に示すような、不合格の条件が“Ｘ＜１０”であることを表す不等式を境界情報として表示してもよい。また、境界情報が、パラメータＸが１０より小さい場合に不合格であり、パラメータＸが１０以上の場合に合格であることを表す場合、提示部６６は、図６に示すような、１次元のグラフを境界情報として表示してもよい。すなわち、提示部６６は、Ｘ軸上の閾値の位置と、Ｘ軸における合格の領域と不合格の領域とを示した１次元のグラフを表示してもよい。
【００４９】
例えば、境界情報が、パラメータＸが１０より小さく且つＹが１０より小さい場合に不合格であり、他の場合には合格であることを表す場合、提示部６６は、図７に示すような、不合格の条件が“Ｘ＜１０”ＡＮＤ“Ｙ＜１０”であることを表す論理式を境界情報として表示してもよい。また、境界情報が、パラメータＸが１０より小さく且つＹが１０より小さい場合に不合格であり、他の場合には合格であることを表す場合、提示部６６は、図８に示すような２次元のグラフを境界情報として表示してもよい。すなわち、提示部６６は、Ｘ軸およびＹ軸の閾値の位置と、Ｘ軸およびＹ軸により形成される空間における合格の領域と不合格の領域とを示した２次元のグラフを表示してもよい。
【００５０】
図９は、試験システム１０の処理順序を示すフロー図である。まず、ステップＳ１１において、初期データ発生部５１は、複数の第１テストデータを発生する。初期データ発生部５１は、一例として、含まれる少なくとも一部のパラメータがランダムに変化する複数の第１テストデータを発生する。
【００５１】
続いて、ステップＳ１２において、データ出力部５２は、試験対象２０に、複数の第１テストデータを１つずつ順次に与える。ステップＳ１３において、観測部５３は、試験対象２０を観測する。
【００５２】
続いて、ステップＳ１４において、判定部５４は、観測部５３による観測結果に基づき、データ出力部５２が第１テストデータを与えた場合それぞれにおける試験対象２０の動作の良否を判定する。続いて、ステップＳ１５において、結果出力部５５は、第１テストデータと判定結果との組のそれぞれを支援装置４０に送信する。
【００５３】
続いて、ステップＳ１６において、結果取得部６１は、試験装置３０から、第１テストデータと判定結果との組のそれぞれを受信する。続いて、ステップＳ１７において、結果記憶部６２は、結果取得部６１が取得した第１テストデータと判定結果との組のそれぞれを記憶する。
【００５４】
続いて、ステップＳ１８において、生成部６３は、結果記憶部６２に記憶された第１テストデータと判定結果との組に基づき、試験装置３０が試験対象２０を試験するための第２テストデータを生成する。なお、生成部６３による第２テストデータの生成方法の具体例については、図１０以降を参照してさらに説明する。続いて、ステップＳ１９において、供給部６４は、生成部６３が生成した第２テストデータを試験装置３０に供給する。
【００５５】
続いて、ステップＳ２０において、データ出力部５２は、試験対象２０に、第２テストデータを与える。ステップＳ２１において、観測部５３は、試験対象２０を観測する。
【００５６】
続いて、ステップＳ２２において、判定部５４は、観測部５３による観測結果に基づき、対応する第２テストデータを与えた場合における試験対象２０の動作の良否を判定する。続いて、ステップＳ２３において、結果出力部５５は、第２テストデータと判定結果との組を支援装置４０に送信する。
【００５７】
続いて、ステップＳ２４において、結果取得部６１は、試験装置３０から、第２テストデータと判定結果との組を受信する。続いて、ステップＳ２５において、結果記憶部６２は、現在記憶している第１テストデータと判定結果との組のそれぞれに、結果取得部６１が取得した第２テストデータと判定結果との組を追加して記憶する。
【００５８】
続いて、ステップＳ２６において、推定部６５は、結果記憶部６２に記憶されたテストデータと判定結果との組（第１テストデータと判定結果との組、および、第２テストデータと判定結果との組）に基づき境界情報を推定する。続いて、ステップＳ２７において、提示部６６は、推定部６５により推定された境界情報をユーザに提示する。
【００５９】
図１０は、図４に示した試験履歴の第１テストデータおよび判定結果、結果不明領域、並びに、生成した第２テストデータを示す図である。
【００６０】
生成部６３は、結果記憶部６２に記憶された第１テストデータと判定結果とに基づき、試験装置３０が試験対象２０を試験するための第２テストデータを生成する。この場合において、生成部６３は、含まれる全てのパラメータが、判定結果の異なる複数の第１テストデータに挟まれた結果不明領域の範囲内となるようなテストデータを、結果不明領域の範囲外となるようなテストデータよりも高頻度となるように、第２テストデータを生成する。
【００６１】
一般に、パラメータの値をランダムに分散させた複数の第１テストデータを試験対象２０に与えた場合、パラメータの値を軸とする空間は、合格となる第１テストデータが属する領域と、不合格となる第１テストデータが属する領域と、その他の領域とに分けられる。例えば、パラメータＸとパラメータＹをランダムに分散させた複数の第１テストデータを試験対象２０に与えた場合、Ｘ軸とＹ軸とにより形成される平面は、合格の推定領域と不合格の推定領域とに分けられる。図１０の例であれば、番号＃１のテストデータ（Ｘ＝１０，Ｙ＝１０）および番号＃２のテストデータ（Ｘ＝２０，Ｙ＝２０）が属する領域が合格の推定領域となり、番号＃３のテストデータ（Ｘ＝３２，Ｙ＝３６）、番号＃４のテストデータ（Ｘ＝２０，Ｙ＝６０）および番号＃５のテストデータ（Ｘ＝５０，Ｙ＝６０）が属する領域が不合格の推定領域となる。
【００６２】
さらに、パラメータの値をランダムに分散させた複数の第１テストデータを試験対象２０に与えた場合、パラメータの値を軸とする空間には、合格の領域と不合格の領域との間に挟まれた位置に、合格か不合格かが不明な領域が存在する。この領域を本実施形態では、結果不明領域という。
【００６３】
この結果不明領域に、実際の合格の領域と実際の不合格の領域とを区切る境界が含まれると予測される。そこで、生成部６３は、含まれる全てのパラメータが、このように分離された合格の領域と不合格の領域とに挟まれる結果不明領域の範囲内となるようなテストデータを、結果不明領域の範囲外となるようなテストデータよりも高頻度となるように、第２テストデータを生成する。テストデータがより高頻度であるとは、テストデータのパラメータの間隔が他と比較してより狭いことである。直感的には、図１０の例のように、テストデータを２つのパラメータからなる平面上の点として表したときには、テストデータがより高頻度であるとは、同一面積あたりのテストデータの数がより多いことを意味する。また、範囲内のテストデータのみを生成し、範囲外のテストデータを生成しない場合も、範囲内のテストデータが範囲外のテストデータよりも高頻度であるとみなす。
【００６４】
図１０の例であれば、例えば、番号＃２（合格）と番号＃３（不合格）との間に挟まれた領域を、結果不明領域とみなすことができる。従って、図１０の例であれば、生成部６３は、含まれるパラメータの値が、番号＃２（合格）と番号＃３（不合格）との間に挟まれた結果不明領域の範囲内となるようなテストデータを、結果不明領域の範囲外となるようなテストデータよりも高頻度になるように、第２テストデータを生成する。これにより、生成部６３は、実際の合格と不合格との間の境界の位置をより詳細に推定可能な第２テストデータを生成することができる。
【００６５】
なお、生成部６３は、１つの第２テストデータを生成してもよいし、複数の第２テストデータを生成してもよい。複数の第２テストデータを生成する場合、生成部６３は、第１テストデータよりも高頻度となるように第２テストデータを生成してもよい。これにより、生成部６３は、合格と不合格との間の境界の位置をさらに精度良く推定可能な第２テストデータを生成することができる。
【００６６】
図１１は、図４に示した試験履歴の第１テストデータおよび判定結果、中間領域、並びに、生成した第２テストデータを示す図である。生成部６３は、第２テストデータを生成するために、例えば以下のような処理を実行する。
【００６７】
生成部６３は、判定結果が異なる２つの第１テストデータを選択する。すなわち、生成部６３は、合格と判定された１つの第１テストデータと、不合格と判定された１つの第１テストデータとを選択する。そして、生成部６３は、選択した２つの第１テストデータの中間領域に含まれるテストデータをより高頻度に生成することによって、第２テストデータを生成してもよい。これにより、生成部６３は、合格と不合格との間の境界の位置を精度良く推定可能な第２テストデータを生成することができる。
【００６８】
ここで、２つのテストデータＡ，Ｂの中間領域は、次のように定義される。すなわち、２つのテストデータＡ，Ｂの中間領域は、テストデータの集合を包含する領域である。中間領域に包含されるテストデータの集合に属するそれぞれのテストデータＰは、それぞれのパラメータの値ｐが、２つのテストデータＡ，Ｂの、対応するパラメータの２つの値ａ，ｂのうち、小さい方の値から大きい方の値までの閉区間［ａ，ｂ］に含まれる。なお、中間領域に包含されるテストデータの集合は、２つのテストデータＡ，Ｂを含まない。
【００６９】
つまり、集合の内包的表記を用いれば、Ａ＝（ａ１，…，ａｎ），Ｂ＝（ｂ１，…，ｂｎ）の中間領域Ｒは、下式のように定義される。
Ｒ：＝｛（ｐ１，…，ｐｎ）｜∀ｉ．ｐｉ∈［ａｉ，ｂｉ］｝＼｛Ａ，Ｂ｝
ただし、ｎはパラメータの数＝パラメータ空間の次元を表し、「＼」は差集合演算を表す。
【００７０】
例えば、テストデータが２つのパラメータから成る場合、すなわちパラメータ空間が二次元の場合、中間領域は、集合に属する全てのテストデータＰ＝（ｐｘ，ｐｙ）の第１パラメータｐｘが、選択した２つの第１テストデータＡ＝（ａｘ，ａｙ），Ｂ＝（ｂｘ，ｂｙ）における第１パラメータａｘ，ｂｘの間となり、かつ、集合に属する全てのテストデータＰの第２パラメータｐｙが、選択した２つの第１テストデータＡ，Ｂにおける第２パラメータａｙ，ｂｙの間となるような集合である。つまり、中間領域は、図１１に示すように、二次元のパラメータ空間すなわちテストデータの２つのパラメータをＸ軸およびＹ軸とした座標平面上において、選択された２つの第１テストデータが対角の頂点となる長方形およびその内部から２つの第１テストデータ自身を除いた領域である。ただし、一方のパラメータの値が同一である場合、中間領域は、選択された２つの第１テストデータを結ぶ線分（ただし端点を含まない）となる。また、指定されたパラメータが３つである場合、指定された３つのパラメータをＸ軸、Ｙ軸およびＺ軸とした座標空間上において、中間領域は、選択された２つの第１テストデータが対角の頂点となる直方体の境界および内部から２つの第１テストデータ自身を除いた領域となる。
【００７１】
そして、生成部６３は、このような中間領域に他の第１テストデータが存在しないような２つの第１テストデータを選択してもよい。例えば、図１１の例の場合、パラメータＸとＹとが指定される。そして、この場合、番号＃１の第１テストデータ（Ｘ＝１０，Ｙ＝１０）と番号＃３の第１テストデータ（Ｘ＝３２，Ｙ＝３６）とにより形成される中間領域には、番号＃２の第１テストデータ（Ｘ＝２０，Ｙ＝２０）が存在する。従って、生成部６３は、番号＃１の第１テストデータと番号＃３の第１テストデータとの組は選択しない。一方、番号＃２の第１テストデータ（Ｘ＝２０，Ｙ＝２０）と番号＃３の第１テストデータ（Ｘ＝３２，Ｙ＝３６）とにより形成される中間領域には、何れの他の第１テストデータが存在しない。従って、生成部６３は、番号＃２の第１テストデータと番号＃３の第１テストデータとの組を選択する。
【００７２】
このように生成部６３は、判定結果が異なり、中間領域に他の第１テストデータが存在しない２つの第１テストデータを選択することにより、境界を含む可能性の高い領域に第２テストデータを生成することができる。
【００７３】
また、生成部６３は、判定結果が異なり、含まれるパラメータの距離が最も近い２つの第１テストデータを選択してもよい。生成部６３は、一例として、判定結果が異なる２つの第１テストデータのそれぞれについて距離を算出して、距離が最も小さい２つの第１テストデータを選択する。
【００７４】
距離は、例えば、ユークリッド距離であってよい。図１１の例であれば、判定結果が異なり、ユークリッド距離が最も近い２つの第１テストデータは、番号＃２の第１テストデータ（Ｘ＝２０，Ｙ＝２０）と番号＃３の第１テストデータ（Ｘ＝３２，Ｙ＝３６）との組である。従って、この場合、生成部６３は、番号＃２の第１テストデータと番号＃３の第１テストデータとの組を選択する。なお、生成部６３は、ユークリッド距離に限らず、マンハッタン距離またはマハラノビス距離等が最も近い２つの第１テストデータを選択してもよい。
【００７５】
このように生成部６３は、判定結果が異なり、距離が最も近い２つの第１テストデータを選択することにより、境界を含む可能性の高い領域に第２テストデータを生成することができる。
【００７６】
また、生成部６３は、判定結果が異なり、同一の値のパラメータを最も多く含む２つの第１テストデータを選択してもよい。例えば、図１１の例であれば、番号＃２の第１テストデータ（Ｘ＝２０，Ｙ＝２０）および番号＃４の第１テストデータ（Ｘ＝２０，Ｙ＝６０）は、パラメータＸの値が同一である。従って、この場合、生成部６３は、番号＃２の第１テストデータと番号＃４の第１テストデータとの組を選択する。これにより、生成部６３は、互いに類似しているにも関わらず判定結果の異なる２つの第１テストデータを選択することができる。
【００７７】
なお、生成部６３は、以上の方法に限らず、他の方法により複数の第１テストデータの中から、２つの第１テストデータを選択してもよい。
【００７８】
また、生成部６３は、選択した２つの第１テストデータにおける、一部のパラメータの値を入れ替えた２つの第２テストデータを生成してもよい。これにより、生成部６３は、第２テストデータを簡易に生成することができる。例えば、図１１の例において、番号＃２の第１テストデータ（Ｘ＝２０，Ｙ＝２０）と番号＃３の第１テストデータ（Ｘ＝３２，Ｙ＝３６）とが選択されたとする。この場合、生成部６３は、パラメータＹの値を入れ替えて、２つの第２テストデータ（Ｘ＝２０，Ｙ＝３６），（Ｘ＝３２，Ｙ＝２０）を生成する。
【００７９】
また、生成部６３は、上述の何れかの方法で選択した２つの第１テストデータにおける対応するパラメータの平均値を、それぞれのパラメータの値とした１つの第２テストデータを生成してもよい。これにより、生成部６３は、合格と不合格との間の境界を効率良く推定可能な第２テストデータを生成することができる。
【００８０】
例えば、図１１の例において、番号＃２の第１テストデータ（Ｘ＝２０，Ｙ＝２０）と番号＃３の第１テストデータ（Ｘ＝３２，Ｙ＝３６）とが選択された場合、パラメータＸの平均値は２６、パラメータＹの平均値は２８となる。従って、この場合、生成部６３は、１つの第２テストデータ（Ｘ＝２６，Ｙ＝２８）を生成する。なお、このような方法を用いた場合、生成部６３は、一部のパラメータが同一値の場合にも第２テストデータを生成することができる。
【００８１】
なお、生成部６３は、以上の方法に限らず、他の方法により２つの第１テストデータから、少なくとも１つの第２テストデータを生成してもよい。
【００８２】
図１２は、テストデータおよび判定結果、並びに、推定された境界の一例を示す図である。推定部６５は、１回目の試験および２回目の試験が終了した後、結果記憶部６２に記憶されている試験履歴に基づき、境界情報を推定する。推定部６５は、一例として、統計分類の手法等を用いて、境界情報を推定する。
【００８３】
推定部６５は、統計分類の手法として、サポートベクターマシンを用いることができる。サポートベクターマシンは、２つのクラスに分類される複数のデータを、そのデータに基づいて線形分離する手法である。具体的には、サポートベクターマシンは、２クラスに分類される複数のデータを点として表し、クラスを分類する直線を描く。そして、サポートベクターマシンは、それぞれの点までの距離（マージン）が最大となるような直線を算出する。
【００８４】
例えば、分類対象のデータが、図１２に示すようなＸとＹの２つのパラメータを含むテストデータの場合、推定部６５は、まず、合格となる領域と、不合格となる領域とを分離する直線ａＸ＋ｂＹ＋ｃ＝０を生成する。そして、推定部６５は、それぞれのテストデータ（点）との間の距離の最小値が最大となるような定数ａ、ｂ、ｃを算出する。これにより、推定部６５は、判定結果が切り替わるそれぞれのパラメータの閾値と、閾値で分割されるそれぞれの領域の判定結果とを表す境界情報を推定することができる。
【００８５】
なお、推定部６５は、他の方法により境界情報を推定してもよい。例えば、推定部６５は、ニューラルネットワークまたは決定木学習等の統計手法を用いて境界情報を推定してもよい。
【００８６】
（変形例）
図１３は、第１実施形態の変形例に係る試験システム１０の構成を示す図である。変形例に係る試験システム１０は、図１に示した構成と略同一であるので、略同一の機能および構成を有する部材には同一の符号を付け、相違点を除き詳細な説明を省略する。
【００８７】
本変形例に係る試験装置３０は、試験対象２０を３回以上繰り返して試験する。支援装置４０は、２回目以降の試験において、直前の試験までに得られた試験履歴に基づき第２テストデータを生成して、試験装置３０に与える。
【００８８】
支援装置４０は、図１に示した構成に加えて、繰返制御部７１と、確認データ生成部７２と、確認部７３とをさらに有する。
【００８９】
繰返制御部７１は、２回目以降の試験において用いる第２テストデータを生成するために各部を制御する。より具体的には、繰返制御部７１は、結果取得部６１に、試験装置３０が試験対象に与えた第２テストデータと、第２テストデータを与えた場合における試験対象２０の動作の良否を判定した判定結果との組を取得させる。そして、繰返制御部７１は、取得した第２テストデータと判定結果との組を結果記憶部６２に追加して記憶させ、既に記憶されている第１テストデータと判定結果との組と合成する。合成後の第２テストデータと判定結果との組は、以後、第１テストデータと判定結果との組として取り扱われる。
【００９０】
さらに、繰返制御部７１は、生成部６３に、結果記憶部６２に記憶された第１テストデータと判定結果との組に基づき新たな第２テストデータを生成させる。そして、繰返制御部７１は、所定の条件に達するまで、以上の処理を繰り返す。
【００９１】
繰返制御部７１による繰り返し制御が終了した後、推定部６５は、結果記憶部６２に記憶されたテストデータと判定結果との組に基づき境界情報を推定する。確認データ生成部７２は、推定部６５により推定された境界情報に基づき、閾値を挟んだそれぞれの領域の値のパラメータを含む確認用テストデータを生成する。また、確認データ生成部７２は、境界情報と確認用テストデータとの関係に基づき、確認用テストデータを与えた場合における試験対象２０の動作の良否を予測した予測情報を生成する。確認データ生成部７２は、予測情報を確認部７３に与える。
【００９２】
確認データ生成部７２が確認用テストデータを生成した場合、供給部６４は、確認用テストデータを試験装置３０に供給する。データ出力部５２は、支援装置４０から確認用テストデータを受け取った場合、試験対象２０に確認用テストデータを与える。観測部５３は、試験対象２０を観測する。判定部５４は、確認用テストデータを与えた場合における試験対象２０の動作の良否を判定する。結果出力部５５は、データ出力部５２が試験対象２０に与えた確認用テストデータと、判定部５４による判定結果とを組にして、支援装置４０に送信する。結果取得部６１は、試験装置３０から確認用テストデータと、その確認用テストデータを与えた場合における試験対象２０の動作の良否を判定した判定結果との組を受信する。
【００９３】
確認部７３は、確認用テストデータを与えた場合における試験対象２０の動作の良否を判定した判定結果を取得する。また、確認部７３は、その確認用テストデータを与えた場合における試験対象２０の動作の良否を予測した予測情報を確認データ生成部７２から取得する。そして、確認部７３は、判定結果と予測情報とが一致するか否かを確認して、判定結果と予測情報とが一致した場合に境界情報を提示部６６に出力させる。
【００９４】
図１４は、変形例に係る試験システム１０の処理順序を示すフロー図である。まず、ステップＳ４１において、初期データ発生部５１は、複数の第１テストデータを発生する。
【００９５】
続いて、ステップＳ４２において、試験装置３０は、試験対象２０に複数の第１テストデータを順次に与え、複数の応答データを順次に取得する。そして、試験装置３０は、取得した複数の応答データのそれぞれに基づき試験対象２０の動作の良否を判定し、第１テストデータと判定結果との組のそれぞれを支援装置４０に送信する。
【００９６】
続いて、ステップＳ４３において、結果取得部６１は、試験装置３０から、第１テストデータと判定結果との組のそれぞれを取得する。続いて、ステップＳ４４において、結果記憶部６２は、結果取得部６１が取得した第１テストデータと判定結果との組のそれぞれを記憶する。
【００９７】
続いて、ステップＳ４５において、繰返制御部７１は、繰り返しを終了するか否かを判定する。繰返制御部７１は、繰り返しを終了しない場合（Ｓ４５のＮｏ）、処理をステップＳ４６に進め、繰り返しを終了する場合（Ｓ４５のＹｅｓ）、処理をステップＳ５１に進める。
【００９８】
繰り返しを終了しない場合（Ｓ４５のＮｏ）、ステップＳ４６において、生成部６３は、結果記憶部６２に記憶された第１テストデータと判定結果との組に基づき、試験装置３０が試験対象２０を試験するための第２テストデータを生成する。続いて、ステップＳ４７において、供給部６４は、生成部６３が生成した第２テストデータを試験装置３０に供給する。
【００９９】
続いて、ステップＳ４８において、試験装置３０は、試験対象２０に第２テストデータを与え、応答データを取得する。そして、試験装置３０は、取得した応答データに基づき試験対象２０の動作の良否を判定し、第２テストデータと判定結果との組を支援装置４０に送信する。
【０１００】
続いて、ステップＳ４９において、結果取得部６１は、試験装置３０から、第２テストデータと判定結果との組を取得する。続いて、ステップＳ５０において、結果記憶部６２は、結果取得部６１が取得した第２テストデータと判定結果との組を、新たな第１テストデータと判定結果との組として追加して記憶する。これにより、結果記憶部６２は、既に記憶している第１テストデータと判定結果との組に、取得した第２テストデータと判定結果との組を合成することができる。
【０１０１】
ステップＳ５０を終えると、繰返制御部７１は、処理をステップＳ４５に戻して、再度繰り返しを終了するか否かを判定する。
【０１０２】
ここで、繰返制御部７１は、ステップＳ４５において、境界情報を推定するのに十分な結果が得られた場合に、繰り返しを終了する。例えば、繰返制御部７１は、判定結果が異なり、且つ、最も近い２つの第１テストデータを選択する。続いて、繰返制御部７１は、最も近い２つの第１テストデータの間に挟まれた領域に、新たな第２テストデータを生成する余地があるかを判断する。すなわち、繰返制御部７１は、最も近い２つの第１テストデータのパラメータの値が隣接しているか否かを判断する。パラメータの値が隣接している場合、２つの第１テストデータの間に挟まれた領域には、新たな第２テストデータを生成する余地が無い。反対に、パラメータの値が隣接していない場合、２つの第１テストデータの間に挟まれた領域には、新たな第２テストデータを生成する余地がある。そして、繰返制御部７１は、新たな第２テストデータを生成する余地がある場合には、繰り返しを続行し、新たな第２テストデータを生成する余地が無い場合には、境界情報を推定するのに十分な結果が得られたと判断して、繰り返しを終了する。
【０１０３】
なお、繰返制御部７１は、このような方法に限らず、他の方法により繰り返しを終了するか否かを判断してもよい。繰返制御部７１は、一例として、一定回または一定時間繰り返しを継続した場合に、繰り返しを終了してもよい。
【０１０４】
繰り返しを終了する場合（Ｓ４５のＹｅｓ）、ステップＳ５１において、推定部６５は、結果記憶部６２に記憶されたテストデータと判定結果との組に基づき境界情報を推定する。続いて、ステップＳ５２において、確認データ生成部７２は、境界情報に基づき、閾値を挟んだそれぞれの領域のパラメータを含む確認用テストデータを生成する。続いて、ステップＳ５３において、供給部６４は、確認用テストデータを試験装置３０に供給する。
【０１０５】
続いて、ステップＳ５４において、試験装置３０は、試験対象２０に確認用テストデータを与え、応答データを取得する。そして、試験装置３０は、取得した応答データに基づき試験対象２０の動作の良否を判定し、確認用テストデータと判定結果との組を支援装置４０に送信する。
【０１０６】
続いて、ステップＳ５５において、結果取得部６１は、試験装置３０から、確認用テストデータと判定結果との組を取得する。続いて、ステップＳ５６において、確認部７３は、確認用テストデータを与えた場合における試験対象２０の動作の良否を判定した判定結果と、予測情報とが一致するか否かを確認する。確認部７３は、一致しなかった場合（Ｓ５６のＮｏ）、処理をステップＳ５０に戻す。処理が戻されると、結果記憶部６２は、結果取得部６１が取得した確認用テストデータと判定結果との組を、第１テストデータと判定結果との組として追加して記憶する。
【０１０７】
確認部７３は、一致した場合（Ｓ５６のＹｅｓ）、処理をステップＳ５７に進める。ステップＳ５７において、提示部６６は、推定部６５により推定された境界情報をユーザに提示する。
【０１０８】
図１５は、推定された境界および確認用テストデータの一例を示す図である。確認データ生成部７２は、境界情報に示された境界における近傍であって、合格側の領域と、不合格側の領域のそれぞれに確認用テストデータを生成する。例えば、確認データ生成部７２は、合格側の領域に属する確認用テストデータと不合格側の領域に属するテストデータの組を、複数組生成する。
【０１０９】
この場合において、確認データ生成部７２は、合格側の領域に属する確認用テストデータと不合格側の領域に属する確認用テストデータの組のパラメータを隣接する値としてもよい。例えば、不合格の条件がパラメータＹが３５より大きい（Ｙ＞３５）場合、確認データ生成部７２は、パラメータＹ＝３６となる確認用テストデータと、パラメータＹ＝３５となる確認用テストデータとの組を、他のパラメータＸを変更して複数組生成する。なお、確認データ生成部７２は、隣接する値に限らず、境界を挟んで一定値離れた値としてもよい。これにより、確認データ生成部７２は、推定情報を精度良く確認することが可能な確認用テストデータを生成することができる。
【０１１０】
（効果）
以上のように、本実施形態に係る試験システム１０は、第１テストデータにより試験対象２０を試験し、第１テストデータと判定結果との組に基づき第２テストデータを生成する。この場合において、試験システム１０は、含まれる何れかのパラメータが、判定結果の異なる複数の第１テストデータに挟まれた結果不明領域の値となる第２テストデータを生成する。そして、試験システム１０は、第２テストデータにより試験対象２０を試験し、第１テストデータの判定結果および第２テストデータの判定結果に基づき、境界情報を推定する。
【０１１１】
これにより、本実施形態に係る試験システム１０によれば、１回の試験により境界情報を推定するよりも精度良く境界情報を推定することができる。また、実施形態に係る試験システム１０によれば、大量のテストデータを与えて精度を上げた場合と同様の精度を、少ない数のテストデータにより得ることができる。
【０１１２】
例えば、テストデータが“type”および“length”の２つのパラメータを含み、“length”が１０を超える場合に、バッファオーバーフローによって試験対象２０が異常動作する場合を考える。
【０１１３】
この場合、従来、開発者は、１回の判定結果しか得られない。従って、開発者には、例えば「｛type＝７，length＝２０｝の場合に不具合が生じた」という事実だけが与えられる。しかし、開発者は、“type”の値に問題があったのか、“length”の値に問題があったのかを特定できない。また、さらに、開発者は、問題があったとすれば、どのような範囲に問題があるのかを特定できない。開発者は、このような問題を特定できなければ、試験対象２０の不具合の原因を予想することは困難である。
【０１１４】
一方、開発者は、「“length”が大きすぎる場合に不具合が起きた」という境界情報を得られたら、不具合の原因がバッファオーバーフローである可能性が高いと予想することができる。さらに、「“length”が１０を超える場合に不具合が起きた」という境界情報を得られたら、開発者は、プログラムにおける“length”が用いられている近辺で定数「１０」を用いたメモリの確保および定数「１０」との比較等を行っている箇所を調査すればよい。これにより、開発者は、試験対象２０の欠陥を直接発見して修正することができる。このように、判定結果から具体的な原因条件を推定することにより、開発者は、試験対象２０の欠陥の箇所を発見し、修正することができる。
【０１１５】
判定結果から具体的な境界情報を機械的に推定するには、統計的なデータ処理を用いて、テストデータと判定結果との相関関係を算出する手法が用いられる。しかし、１回の試験のテストデータおよび判定結果からは、精度の高い境界情報が推定できない可能性が高い。例えば、｛type＝７，length＝5｝の場合に不具合が無く、｛type＝７，length＝３０｝の場合に不具合があるとの判定結果が得られた場合、length＞１０の場合に不具合が起きるのか、length＞２０の場合に不具合が起きるのか、といった閾値の特定が難しいケースが多い。これを防ぐには、１回の試験において、多数のパラメータを変化させた多数のテストデータを試験対象２０に与えて試験を実行する必要がある。しかし、例えばＩＰｖ４パケットのように多くのパラメータを含むテストデータの場合、パラメータの値の組み合わせが膨大になり、試験期間が長くなり、試験を実行するのが困難となってしまう。
【０１１６】
本実施形態に係る試験システム１０は、１回目の試験において得られたテストデータ（第１テストデータ）と判定結果との組に基づいて、追加のテストデータ（第２テストデータ）を生成する。この第２テストデータは、含まれる何れかのパラメータが、判定結果の異なる複数の第１テストデータに挟まれた結果不明領域の値となる。
【０１１７】
例えば、１回目の試験において、判定結果が切り替わる閾値が１０以上２０以下の範囲であることが検出された場合、試験システム１０は、lengthをその範囲内の値（例えば１５）とした第２テストデータを生成し、２回目の試験を行う。これにより、もし、length＝１５の場合にも問題があったのであれば、閾値の範囲を１０以上１５以下に絞り込むことができる。一方、length＝１５の場合に問題がなかったのであれば、閾値の範囲を１５以上２０以下に絞り込むことができる。
【０１１８】
このように本実施形態に係る試験システム１０は、２回目以降の試験におけるテストデータをランダムに生成するのではなく、閾値に近い範囲のテストデータを生成する。従って、本実施形態に係る試験システム１０は、１回の試験により境界情報を推定する場合に比べて、精度の良い境界情報を少ないテストデータで生成することができる。
【０１１９】
（第２実施形態）
図１６は、第２実施形態に係る試験システム１００の構成を試験対象２０とともに示す図である。第２実施形態に係る試験システム１００は、例えば、一つの情報処理装置により実現される。試験システム１００は、試験部１１０と、支援部１２０とを備える。試験部１１０は、第１実施形態に係る試験装置３０と同一の構成および機能を有する。支援部１２０は、第１実施形態に係る支援装置４０と同一の構成および機能を有する。このような試験システム１００は、一つの情報処理装置により第１実施形態に係る試験システム１０と同一の機能を実現することができる。
【０１２０】
（第３実施形態）
図１７は、第３実施形態に係る試験システム１３０の構成を試験対象２０とともに示す図である。第３実施形態に係る試験システム１３０は、複数の情報処理装置とネットワークとにより実現される。
【０１２１】
試験システム１３０は、試験装置３０と、支援サービスサーバ１４０と、端末装置１５０とを備える。試験装置３０は、第１実施形態と同一の構成および機能を有する。試験装置３０は、ネットワークを介して支援サービスサーバ１４０と接続される。
【０１２２】
支援サービスサーバ１４０は、ネットワークに接続された１または複数のコンピュータにより実現される情報処理装置である。支援サービスサーバ１４０は、第１実施形態に係る支援装置４０と同一の構成および機能を有する。支援サービスサーバ１４０は、一例として、単一のサーバ装置により実現される。また、支援サービスサーバ１４０は、複数のコンピュータとネットワークとにより構成されるコンピューティング環境（クラウド）により実現されてもよい。
【０１２３】
端末装置１５０は、ユーザにより操作される情報処理装置である。端末装置１５０は、試験装置３０および支援サービスサーバ１４０とネットワークを介して接続される。端末装置１５０は、ネットワークを介して試験装置３０を操作して、例えば試験の開始または終了等を制御する。また、端末装置１５０は、ネットワークを介して支援サービスサーバ１４０から推定情報等を取得し、ユーザに提示する。
【０１２４】
ネットワークは、例えばＴＣＰ(Transmission  Control  Protocol)およびＨＴＴＰ(Hyper  Text  Transfer  Protocol)等の標準プロトコルを用いて装置間で情報をやり取りさせる。このような試験システム１３０は、複数の情報処理装置とネットワークとにより第１実施形態に係る試験システム１０と同一の機能を実現することができる。
【０１２５】
（ハードウェア構成）
図１８は、実施形態に係る情報処理装置２００のハードウェア構成を示す図である。試験装置３０および支援装置４０は、例えば図１８に示すようなハードウェア構成の情報処理装置２００により実現される。
【０１２６】
この情報処理装置２００は、ＣＰＵ（Central  Processing  Unit）２０１と、ＲＡＭ（Random  Access  Memory）２０２と、ＲＯＭ（Read  Only  Memory）２０３と、操作入力装置２０４と、表示装置２０５と、記憶装置２０６と、通信装置２０７とを備える。そして、これらの各部は、バスにより接続される。
【０１２７】
ＣＰＵ２０１は、プログラムに従って演算処理および制御処理等を実行するプロセッサである。ＣＰＵ２０１は、ＲＡＭ２０２の所定領域を作業領域として、ＲＯＭ２０３および記憶装置２０６等に記憶されたプログラムとの協働により各種処理を実行する。
【０１２８】
ＲＡＭ２０２は、ＳＤＲＡＭ（Synchronous  Dynamic  Random  Access  Memory）等のメモリである。ＲＡＭ２０２は、ＣＰＵ２０１の作業領域として機能する。ＲＯＭ２０３は、プログラムおよび各種情報を書き換え不可能に記憶するメモリである。
【０１２９】
操作入力装置２０４は、マウスおよびキーボード等の入力デバイスである。操作入力装置２０４は、ユーザから操作入力された情報を指示信号として受け付け、指示信号をＣＰＵ２０１に出力する。
【０１３０】
表示装置２０５は、ＬＣＤ（Liquid  Crystal  Display）等の表示デバイスである。表示装置２０５は、ＣＰＵ２０１からの表示信号に基づいて、各種情報を表示する。
【０１３１】
記憶装置２０６は、フラッシュメモリ等の半導体による記憶媒体、または、磁気的若しくは光学的に記録可能な記憶媒体等にデータを書き込みおよび読み出しをする装置である。記憶装置２０６は、ＣＰＵ２０１からの制御に応じて、記憶媒体にデータの書き込みおよび読み出しをする。通信装置２０７は、ＣＰＵ２０１からの制御に応じて外部の機器とネットワークを介して通信する。
【０１３２】
試験装置３０で実行されるプログラムは、初期データ発生モジュール、データ出力モジュール、観測モジュール、判定モジュールおよび結果出力モジュールを含むモジュール構成となっている。このプログラムは、ＣＰＵ２０１（プロセッサ）によりＲＡＭ２０２上に展開して実行されることにより、情報処理装置を初期データ発生部５１、データ出力部５２、観測部５３、判定部５４および結果出力部５５として機能させる。なお、試験装置３０は、このような構成に限らず、初期データ発生部５１、データ出力部５２、観測部５３、判定部５４および結果出力部５５の少なくとも一部をハードウェア回路（例えば半導体集積回路）により実現した構成であってもよい。
【０１３３】
支援装置４０で実行されるプログラムは、結果取得モジュール、結果記憶モジュール、生成モジュール、供給モジュール、推定モジュールおよび提示モジュールを含むモジュール構成となっている。このプログラムは、ＣＰＵ２０１（プロセッサ）によりＲＡＭ２０２上に展開して実行されることにより、情報処理装置を結果取得部６１、結果記憶部６２、生成部６３、供給部６４、推定部６５および提示部６６として機能させる。なお、支援装置４０は、このような構成に限らず、結果取得部６１、結果記憶部６２、生成部６３、供給部６４、推定部６５および提示部６６の少なくとも一部をハードウェア回路（例えば半導体集積回路）により実現した構成であってもよい。
【０１３４】
また、試験装置３０または支援装置４０で実行されるプログラムは、コンピュータにインストール可能な形式または実行可能な形式のファイルで、ＣＤ−ＲＯＭ、フレキシブルディスク、ＣＤ−Ｒ、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【０１３５】
また、試験装置３０または支援装置４０で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、試験装置３０または支援装置４０で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。また、試験装置３０または支援装置４０で実行されるプログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【０１３６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１３７】
１０  試験システム
２０  試験対象
３０  試験装置
４０  支援装置
５１  初期データ発生部
５２  データ出力部
５３  観測部
５４  判定部
５５  結果出力部
６１  結果取得部
６２  結果記憶部
６３  生成部
６４  供給部
６５  推定部
６６  提示部
７１  繰返制御部
７２  確認データ生成部
７３  確認部
１００  試験システム
１１０  試験部
１２０  支援部
１３０  試験システム
１４０  支援サービスサーバ
１５０  端末装置
【図１】
2017058838.tif 000003
【図２】
2017058838.tif 000004
【図３】
2017058838.tif 000005
【図４】
2017058838.tif 000006
【図５】
2017058838.tif 000007
【図６】
2017058838.tif 000008
【図７】
2017058838.tif 000009
【図８】
2017058838.tif 000010
【図９】
2017058838.tif 000011
【図１０】
2017058838.tif 000012
【図１１】
2017058838.tif 000013
【図１２】
2017058838.tif 000014
【図１３】
2017058838.tif 000015
【図１４】
2017058838.tif 000016
【図１５】
2017058838.tif 000017
【図１６】
2017058838.tif 000018
【図１７】
2017058838.tif 000019
【図１８】
2017058838.tif 000020