(57)【特許請求の範囲】
【請求項１】
プログラムを実行する対象装置に対して複数の入力データを与えて検査した場合における、前記プログラムに含まれる要素毎の実行履歴である総実行履歴を取得し、前記プログラムに含まれる複数の要素のうち、前記総実行履歴が検査基準を満たしていない未達要素を特定する特定部と、
前記複数の入力データのそれぞれを、前記未達要素を前記対象装置に実行させたデータと、前記未達要素を前記対象装置に実行させていないデータとに分類する分類部と、
前記未達要素を前記対象装置に実行させたデータに共通する特徴を前記入力データの条件として決定する条件決定部と、
を備える情報処理装置。
【請求項２】
前記複数の入力データのそれぞれについての、前記入力データと、前記入力データを前記対象装置に対して与えた場合における要素毎の実行履歴である個別実行履歴との組を示す実行情報を取得する取得部と、
前記実行情報に示された複数の前記個別実行履歴を合成して前記総実行履歴を生成する合成部と、
をさらに備える請求項１に記載の情報処理装置。
【請求項３】
前記プログラムに含まれる要素は、命令文であり、
前記個別実行履歴は、１つの前記入力データを前記対象装置に与えた場合における、前記対象装置による対応する前記命令文の実行回数であり、
前記総実行履歴は、前記複数の入力データを前記対象装置に与えた場合における、前記対象装置による対応する前記命令文の実行回数であり、
前記検査基準は、実行回数が設定値以上である場合に合格であることを示す条件であり、
前記特定部は、前記プログラムに含まれる複数の命令文のうち、前記総実行履歴に示された実行回数が前記検査基準を満たさない命令文を、前記未達要素として特定する
請求項２に記載の情報処理装置。
【請求項４】
前記条件決定部は、前記未達要素を前記対象装置に実行させたデータと、前記未達要素を前記対象装置に実行させていないデータとの関係に基づき、前記入力データの前記条件を決定する
請求項１から３の何れか１項に記載の情報処理装置。
【請求項５】
前記入力データは、複数のパラメータにより属性が表され、
前記条件決定部は、何れかのパラメータについて、前記未達要素を前記対象装置に実行させたデータと、前記未達要素を前記対象装置に実行させていないデータとの境界値を決定し、前記パラメータの境界値に基づき、前記パラメータについての前記入力データの前記条件を決定する
請求項４に記載の情報処理装置。
【請求項６】
前記条件決定部は、データマイニングにより前記入力データの前記条件を決定する
請求項４に記載の情報処理装置。
【請求項７】
前記入力データは、複数のパラメータにより属性が表され、
前記入力データは、前記複数のパラメータのそれぞれの値を特定することにより決定され、
前記条件決定部は、
前記複数のパラメータのうちの一部または全部のパラメータのそれぞれについて、前記未達要素を前記対象装置に実行させたデータに共通する値の範囲を特定し、
前記一部または全部のパラメータのそれぞれの値が特定した範囲内であることを、前記入力データの条件として決定する
請求項１から４の何れか１項に記載の情報処理装置。
【請求項８】
前記条件を満たす前記入力データを生成する入力データ生成部をさらに備える
請求項１から７の何れか１項に記載の情報処理装置。
【請求項９】
前記入力データ生成部は、前記対象装置に既に与えた前記入力データと重複しない前記入力データを生成する
請求項８に記載の情報処理装置。
【請求項１０】
コンピュータを請求項１から９の何れか１項に記載の情報処理装置として機能させるための情報処理プログラム。
【請求項１１】
プログラムを実行する対象装置を検査する検査システムであって、
複数の入力データを生成する入力データ生成部と、
前記複数の入力データを前記対象装置に与えて検査をするデータ供給部と、
前記複数の入力データのそれぞれについての、前記入力データと、前記入力データを前記対象装置に対して与えた場合における前記プログラムに含まれる要素毎の実行履歴である個別実行履歴との組を示す実行情報を取得する取得部と、
前記実行情報に示された複数の前記個別実行履歴を合成して、前記対象装置に対して前記複数の入力データを与えて検査をした場合における、前記プログラムに含まれる要素毎の実行履歴である総実行履歴を生成する合成部と、
前記プログラムに含まれる複数の要素のうち、前記総実行履歴が検査基準を満たしていない未達要素を特定する特定部と、
前記複数の入力データのそれぞれを、前記未達要素を前記対象装置に実行させたデータと、前記未達要素を前記対象装置に実行させていないデータとに分類する分類部と、
前記未達要素を前記対象装置に実行させたデータに共通する特徴を前記入力データの条件として決定する条件決定部と、
を備える検査システム。
【請求項１２】
検査システムは、前記対象装置を複数回検査し、
前記入力データ生成部は、２回目以降の検査において、前回の検査により決定された前記条件を満たす前記入力データを生成する
請求項１１に記載の検査システム。
【請求項１３】
複数のテストデータを記憶するテストデータ記憶部をさらに備え、
前記入力データ生成部は、
それぞれの検査において、前記複数のテストデータから、前記複数の入力データを抽出し、
２回目以降の検査において、前回以前の検査において抽出した前記入力データと重複しない前記複数の入力データを抽出する
請求項１２に記載の検査システム。
【請求項１４】
前記合成部は、今回の検査において取得された前記実行情報に示された複数の前記個別実行履歴を合成して前記総実行履歴を生成し、
前記特定部は、前回の検査以前において特定した前記未達要素のうちの、前記総実行履歴が前記検査基準を満たしていない要素を、今回の検査における前記未達要素として特定する
請求項１３に記載の検査システム。
【請求項１５】
前記データ供給部は、今回の検査において生成された前記複数の入力データと、前回の検査以前において生成された前記複数の入力データとを加えた前記複数の入力データを前記対象装置に与える
請求項１３に記載の検査システム。
【請求項１６】
前記条件決定部は、予め定められた回数検査した場合、検査を終了する
請求項１２から１５の何れか１項に記載の検査システム。
【請求項１７】
コンピュータを請求項１１から１６の何れか１項に記載の検査システムとして機能させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置、情報処理プログラムおよび検査システムに関する。
【背景技術】
【０００２】
プログラムおよびプログラムを実行する対象装置に含まれる未知の脆弱性を検出する手法の一つに、ファジングと呼ばれる手法がある。ファジングでは、検査装置が、対象装置に対して何種類ものランダムなデータを大量に供給し、対象装置からの応答および対象装置の挙動を監視する。そして、検査装置は、得られた応答および挙動から、脆弱性を検出する。
【０００３】
しかし、ファジングでは、大量のデータをランダムに選択するので、対象装置が検査中に実行するプログラムの要素に偏りが生じる場合がある。例えば、関数Ｘは１００回以上実行されるにもかかわらず、関数Ｙは１回しか実行されなかった、といった場合がある。検査において実行された要素に偏りが生じた場合、開発したプログラムは、脆弱性を有し、部分的に検査が十分でない要素を含んでしまう。
【０００４】
対象装置が検査中に実行するプログラムの要素に偏りが生じないようにするには、検査において、全ての組み合わせを網羅したデータを生成し、生成した全てのデータを対象装置に供給して応答および挙動を監視すればよい。しかし、このような方法は、供給するデータが膨大となってしまい、検査時間が長くなり現実的ではない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−７１０７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明が解決しようとする課題は、プログラムに含まれる十分に検査されていない要素を対象装置に実行させることができる入力データの条件を決定することにある。
【課題を解決するための手段】
【０００７】
実施形態の情報処理装置は、特定部と、分類部と、条件決定部とを備える。前記特定部は、プログラムを実行する対象装置に対して複数の入力データを与えて検査した場合における、前記プログラムに含まれる要素毎の実行履歴である総実行履歴を取得する。さらに、前記特定部は、前記プログラムに含まれる複数の要素のうち、前記総実行履歴が検査基準を満たしていない未達要素を特定する。前記分類部は、前記複数の入力データのそれぞれを、前記未達要素を前記対象装置に実行させたデータと、前記未達要素を前記対象装置に実行させていないデータとに分類する。前記条件決定部は、前記未達要素を前記対象装置に実行させたデータに共通する特徴を前記入力データの条件として決定する。
【図面の簡単な説明】
【０００８】
【図１】第１実施形態に係る条件決定装置の構成図。
【図２】対象装置により実行されるプログラムの一例を示す図。
【図３】実行情報の構成の一例を示す図。
【図４】入力データの属性を表すパラメータの一例を示す図。
【図５】複数の個別実行履歴および総実行履歴の一例を示す図。
【図６】検査基準の一例を示す図。
【図７】実行有無情報の一例を示す図。
【図８】実行有りデータと実行無しデータとの境界値の一例を示す図。
【図９】第１実施形態に係る条件決定装置の処理フローを示す図。
【図１０】第２実施形態に係る検査システムの構成図。
【図１１】第２実施形態に係る対象装置、検査装置および支援装置の構成図。
【図１２】第２実施形態に係る検査システムの処理フローを示す図。
【図１３】第３実施形態に係る検査システムの処理フローを示す図。
【図１４】条件決定装置および検査装置のハードウェア構成を示す図。
【発明を実施するための形態】
【０００９】
以下、図面を参照しながら実施形態について詳細に説明する。
【００１０】
（第１実施形態）
図１は、第１実施形態に係る条件決定装置１０の構成を示す図である。条件決定装置１０は、プログラムを実行する対象装置に対して複数の入力データを与えて検査する場合における、対象装置に与えるべき入力データの条件を決定する。生成した条件は、一例として、対象装置を検査する検査装置に供給され、入力データの生成のために用いられる。
【００１１】
条件決定装置１０は、取得部２１と、合成部２２と、基準記憶部２３と、特定部２４と、分類部２５と、条件決定部２６とを備える。
【００１２】
取得部２１は、実行情報を取得する。実行情報は、過去の検査において検査装置が対象装置に与えた複数の入力データのそれぞれについての、入力データと個別実行履歴との組を示す。個別実行履歴は、対応する入力データを対象装置に対して与えた場合における、プログラムに含まれる要素毎の実行履歴である。なお、プログラムに含まれる要素、実行情報、入力データおよび個別実行履歴については、図２、図３、図４および図５を参照してさらに説明する。
【００１３】
合成部２２は、実行情報に示された複数の個別実行履歴を受け取る。合成部２２は、実行情報に示された複数の個別実行履歴を合成して総実行履歴を生成する。総実行履歴は、検査装置が対象装置に対して複数の入力データを与えて検査した場合における、プログラムに含まれる要素毎の実行履歴である。すなわち、個別実行履歴は、１つの入力データを対象装置に対して与えた場合の要素毎の実行履歴であるのに対して、総実行履歴は、複数の入力データを対象装置に対して与えた場合の要素毎の実行履歴である。なお、総実行履歴については、図５を参照してさらに説明する。
【００１４】
基準記憶部２３は、検査基準を記憶する。検査基準は、プログラムに含まれるそれぞれの要素が、脆弱性を有さないと判断される程度に十分に、検査において実行されたかを判定するための条件である。検査基準については、図６を参照してさらに説明する。
【００１５】
特定部２４は、合成部２２から総実行履歴を取得する。また、特定部２４は、基準記憶部２３から検査基準を読み出す。特定部２４は、対象装置が実行するプログラムに含まれる複数の要素のうち、総実行履歴が検査基準を満たしていない未達要素を特定する。
【００１６】
分類部２５は、特定部２４が特定した未達要素を受け取る。また、分類部２５は、取得部２１が取得した実行情報に含まれる入力データと個別実行履歴との組を、複数の入力データの全てについて取得する。
【００１７】
分類部２５は、複数の入力データのそれぞれを、未達要素を対象装置に実行させたデータ（実行有りデータ）と、未達要素を対象装置に実行させていないデータ（実行無しデータ）とに分類する。具体的には、分類部２５は、複数の入力データのそれぞれについて、組となっている個別実行履歴を参照して、未達要素を実行しているか否かを判断する。分類部２５は、組となっている個別実行履歴に未達要素が実行されていることが示されている場合には、その入力データを、未達要素を対象装置に実行させたデータ（実行有りデータ）とする。また、分類部２５は、組となっている個別実行履歴に未達要素が実行されていることが示されていない場合には、その入力データを、未達要素を対象装置に実行させていないデータ（実行無しデータ）とする。
【００１８】
なお、分類部２５は、実行有無情報をさらに生成してもよい。実行有無情報は、複数の入力データのそれぞれについて、パラメータと、未達要素を実行したか否かの区別とを示す情報である。実行有無情報については、図７を参照してさらに説明する。
【００１９】
条件決定部２６は、未達要素を対象装置に実行させたデータ（実行有りデータ）と共通の特徴を有する入力データの条件を決定する。例えば、条件決定部２６は、未達要素を対象装置に実行させたデータ（実行有りデータ）と、未達要素を対象装置に実行させていないデータ（実行無しデータ）との関係に基づき、実行有りデータと共通の特徴を有する入力データの条件を決定する。条件の決定方法については、図８を参照してさらに説明する。
【００２０】
条件決定装置１０は、このように決定した条件を例えば検査装置へと出力する。
【００２１】
図２は、対象装置により実行されるプログラムの一例を示す図である。対象装置は、プロセッサおよびメモリを有し、プログラムを実行する機能を有する。
【００２２】
プログラムは、複数の命令文を含む。対象装置のプロセッサは、プログラムに含まれる命令文を順次に実行してプログラムに従った処理を実行する。
【００２３】
それぞれの命令文は、例えば、行番号、ディレクトリ名およびファイル名により位置が特定される。行番号は、プログラム内における命令文の相対位置を表す。ディレクトリ名は、プログラムが格納されているディレクトリの名前を示す。ファイル名は、プログラムの名前を示す。
【００２４】
プログラムに含まれる要素は、プログラムを構成する一部分である。本実施形態において、要素は、命令文である。命令文は、プログラムを行単位で分割したコードであり、ディレクトリ名、ファイル名および行番号により位置が特定される。なお、要素は、命令文に限らず、例えば、関数、一定数のコードがまとまったサブルーチンまたはファイルであってもよい。
【００２５】
図３は、実行情報の構成の一例を示す図である。実行情報は、入力データと個別実行履歴との組を複数個含む。実行情報に含まれる複数の入力データのそれぞれは、過去の検査において検査装置が対象装置に与えたデータである。個別実行履歴は、組となっている入力データを対象装置に与えた場合における、対象装置のプログラムに含まれる要素毎の実行履歴である。
【００２６】
取得部２１は、このような実行情報を外部に設けられた実行情報記憶部から取得する。実行情報記憶部は、入力データと個別実行履歴とを対に保持することによって、入力データのそれぞれについて、プログラムに含まれる複数の要素のうちの実行された箇所および実行履歴を知らせることができる。また、実行情報記憶部は、入力データ毎に独立に実行履歴を保持するので、入力データ毎に、入力データの属性とプログラムの実行箇所との対応関係を分析させることができる。
【００２７】
図４は、入力データの属性を表すパラメータの一例を示す図である。検査装置から対象装置へと供給される入力データは、対象装置の機能および検査の内容によって異なる。例えば、対象装置がネットワークを介して通信をする機器である場合、入力データは、例えば通信プロトコルに従ったパケットである。また、対象装置が画像処理装置の場合、入力データは、例えば画像データである。また、対象装置が与えられた入力変数に応じた応答等を出力する機器の場合、入力データは、入力変数である。
【００２８】
本実施形態においては、入力データは、識別情報が割り当てられている。条件決定装置１０は、識別情報により入力データを特定することができる。
【００２９】
また、本実施形態においては、入力データは、複数のパラメータにより属性が表される。入力データは、それぞれのパラメータの値を特定することにより、決定される。通信用のパケットである入力データは、パラメータとして、例えば、バージョン（パラメータ＃１）、ヘッダ長（パラメータ＃２）、タイプ（パラメータ＃３）等が存在する。
【００３０】
図５は、複数の個別実行履歴と総実行履歴の一例を示す図である。実行履歴は、プログラムに含まれるそれぞれの要素を対象装置が実行した回数または時間等を表す、要素毎の履歴である。
【００３１】
本実施形態において、個別実行履歴は、１つの入力データを対象装置に与えた場合における、対象装置による対応する命令文の実行回数である。従って、図５のＡ、ＢおよびＣに示すように、個別実行履歴は、１つの入力データを対象装置に与えた場合における、命令文の位置毎（ディレクトリ名、ファイル名および行番号）の実行回数により表される。
【００３２】
また、本実施形態において、総実行履歴は、複数の入力データを対象装置に与えた場合における、対象装置による対応する命令文の合計の実行回数である。従って、図５のＤに示すように、総実行履歴は、複数の入力データを対象装置に与えた場合における、命令文の位置毎の実行回数により表される。
【００３３】
本実施形態において、合成部２２は、プログラムに含まれる命令文毎に、複数の個別実行履歴のそれぞれから対応する位置の実行回数を取得し、取得した複数の実行回数を加算することにより、総実行履歴を生成する。例えば、合成部２２は、図５の行番号が“０１”の命令文については、個別実行履歴Ａの実行回数“３”と、個別実行履歴Ｂの実行回数“１”と、個別実行履歴Ｃの実行回数“１０”とを加算して、総実行履歴Ｄの実行回数“１４”を算出する。また、例えば、合成部２２は、図５の行番号が“０２”の命令文については、個別実行履歴Ａの実行回数“３”と、個別実行履歴Ｂの実行回数“０”と、個別実行履歴Ｃの実行回数“０”とを加算して、総実行履歴Ｄの実行回数“３”を算出する。
【００３４】
図６は、検査基準の一例を示す図である。検査基準は、プログラムに含まれるそれぞれの要素が、脆弱性を有さないと判断される程度に十分に検査において実行されたかを判定するための条件である。検査基準は、総実行履歴を用いた条件式等により表される。
【００３５】
本実施形態においては、検査基準は、実行回数を用いた条件式により表される。具体的には、検査基準は、総実行履歴が設定値（例えば５回）以上の場合に合格であることが示される。
【００３６】
特定部２４は、プログラムに含まれるそれぞれの命令文について、総実行履歴に示された実行回数が、検査基準を満たすか否かを判断する。特定部２４は、プログラムに含まれる複数の命令文のうち、総実行履歴に示された実行回数が検査基準を満たさない命令文を、未達要素として特定する。図６の例であれば、特定部２４は、総実行履歴に示された実行回数が５回以上でない命令文（すなわち、実行回数が４回以下の命令文）を未達要素として特定する。これにより、特定部２４は、検査において十分に実行がされていない要素（例えば命令文）を特定することができる。
【００３７】
図７は、実行有無情報の一例を示す図である。分類部２５は、複数の入力データのそれぞれについて、未達要素を対象装置に実行させたデータ（実行有りデータ）であるか、未達要素を対象装置に実行させていないデータ（実行無しデータ）であるかに分類する。
【００３８】
本実施形態においては、分類部２５は、複数の入力データのそれぞれについて、組となっている個別実行履歴における未達要素の位置の実行回数を参照して、未達要素を実行しているか否かを判断する。例えば、分類部２５は、未達要素が行番号“０１”の命令文である場合、個別実行履歴の行番号“０１”の命令文の実行回数を参照し、実行回数が１回以上であれば、対応する入力データが未達要素を実行させていると判断し、実行回数が０回であれば、対応する入力データが未達要素を実行させていないと判断する。
【００３９】
分類部２５は、プログラムに含まれる複数の要素のそれぞれについて、以上のような分類をした後、図７に示すような実行有無情報を生成する。実行有無情報は、複数の入力データのそれぞれについて、未達要素を実行させたか（ｔｒｕｅ）または未達要素を実行させていないか（ｆａｌｓｅ）の区別を示す情報を含む。
【００４０】
さらに、実行有無情報は、複数の入力データのそれぞれについて、識別情報および複数のパラメータの値を含んでもよい。このような実行有無情報は、未達要素を実行させた入力データと未達要素を実行させていない入力データの属性を解析しやすくすることができる。
【００４１】
図８は、あるパラメータ（パラメータ＃２）についての実行有りデータと実行無しデータとの境界値の一例を示す図である。条件決定部２６は、例えば、未達要素を対象装置に実行させたデータと、未達要素を対象装置に実行させていないデータとの関係に基づき、未達要素を対象装置に実行させたデータと共通の特徴を有する入力データの条件を決定する。
【００４２】
例えば、条件決定部２６は、未達要素を対象装置に実行させたデータ（実行有りデータ）の集合の性質を表すパラメータの条件を決定する。より具体的には、条件決定部２６は、何れかのパラメータについて、未達要素を対象装置に実行させたデータ（実行有りデータ）と、未達要素を対象装置に実行させていないデータ（実行無しデータ）との境界値を決定する。そして、条件決定部２６は、パラメータの境界値に基づき、そのパラメータについての入力データの条件を決定する。
【００４３】
例えば、図８の例においては、実行有りデータの集合は、パラメータ＃２（ヘッダ長）がα以下であり、実行無しデータの集合は、パラメータ＃２（ヘッダ長）がαより大きい。従って、このような場合、条件決定部２６は、パラメータ＃２（ヘッダ長）がα以下を、入力データの条件として決定する。
【００４４】
また、条件決定部２６は、未達要素を対象装置に実行させたデータと共通の特徴を有する入力データの条件を、データマイニングにより決定してもよい。例えば、条件決定部２６は、汎用のデータマイニングツール（ソフトウェア）を利用して、条件を決定してもよい。なお、ここでのデータマイニングとは、統計学、パターン認識および人工知能等のデータ解析技法を大量のデータに網羅的に適用することで知識を抽出する技術等であり、例えば相関分析、回帰分析、クラス分類およびクラスタリングなどの手法がある。
【００４５】
また、条件決定部２６は、複数のパラメータのそれぞれについて、入力データの条件を決定してもよい。さらに、条件決定部２６は、２以上のパラメータの値に相関関係が存在する場合には、２以上のパラメータを変数とする関数等により表される条件を決定してもよい。
【００４６】
図９は、第１実施形態に係る条件決定装置１０の処理フローを示す図である。検査装置が対象装置に複数の入力データを与えて検査をした後、条件決定装置１０は、Ｓ１１１から処理を実行する。
【００４７】
まず、Ｓ１１１において、取得部２１は、実行情報記憶部から、実行情報を取得する。実行情報は、検査装置が対象装置に与えた複数の入力データのそれぞれについての、入力データと個別実行履歴との組を示す情報である。ここでは、個別実行履歴は、その入力データを対象装置に与えた場合における、プログラムに含まれる複数の命令文毎の実行回数を表す。
【００４８】
続いて、Ｓ１１２において、合成部２２は、実行情報に含まれる複数の個別実行履歴を合成して、総実行履歴を生成する。合成部２２は、例えば、プログラムに含まれる命令文毎に、複数の個別実行履歴のそれぞれから対応する位置の実行回数を取得する。そして、合成部２２は、プログラムに含まれる命令文毎に、取得した複数の実行回数を加算することにより、総実行履歴を生成する。
【００４９】
続いて、Ｓ１１３において、特定部２４は、対象装置が実行するプログラムに含まれる複数の要素のうち、総実行履歴が検査基準を満たしていない未達要素を特定する。特定部２４は、例えば、プログラムに含まれるそれぞれの命令文について、総実行履歴に示された実行回数が、検査基準を満たすか否かを判断する。そして、特定部２４は、プログラムに含まれる複数の命令文のうち、総実行履歴に示された実行回数が検査基準を満たさない命令文を、未達要素として特定する。
【００５０】
なお、この場合において、特定部２４は、実行回数が０回の要素（命令文）については、未達要素として特定しなくてもよい。実行回数が０回の要素は、後述するＳ１１５において実行有りデータとして選択される入力データが存在せず、条件が決定されない。従って、特定部２４は、実行回数が０回の要素を未達要素として特定しないことにより、条件を決定できずにエラーとなってしまうことを回避することができる。
【００５１】
続いて、Ｓ１１４において、特定部２４は、未達要素が存在するか否かを判断する。特定部２４は、未達要素が存在しない場合（Ｓ１１４のＮｏ）、本フローを終了する。
【００５２】
未達要素が存在する場合（Ｓ１１４のＹｅｓ）、特定部２４は、処理をＳ１１５に進める。なお、特定部２４は、複数の未達要素が存在した場合、複数の未達要素のそれぞれについて、Ｓ１１５以下の処理を実行させる。また、特定部２４は、複数の未達要素が存在した場合、複数の未達要素のそれぞれに優先度を付け、優先度が高い一部の未達要素について、Ｓ１１５以下の処理を実行させてもよい。
【００５３】
続いて、Ｓ１１５において、分類部２５は、複数の入力データのそれぞれを、特定した未達要素を対象装置に実行させたデータ（実行有りデータ）と、未達要素を対象装置に実行させていないデータ（実行無しデータ）とに分類する。例えば、分類部２５は、複数の入力データのそれぞれについて、個別実行履歴を参照して、未達要素を実行しているか否かを判断して分類する。この場合において、分類部２５は、実行有無情報を生成してもよい。
【００５４】
続いて、Ｓ１１６において、条件決定部２６は、未達要素を対象装置に実行させたデータ（実行有りデータ）と、未達要素を対象装置に実行させていないデータ（実行無しデータ）との関係に基づき、実行有りデータと共通の特徴を有する入力データの条件を決定する。
【００５５】
例えば、条件決定部２６は、実行有りデータの集合の属性を表すパラメータの条件を決定する。より具体的には、条件決定部２６は、何れかのパラメータについて、実行有りデータと実行無しデータとの境界値を決定する。そして、条件決定部２６は、パラメータの境界値に基づき、パラメータの条件を決定する。
【００５６】
以上のように、条件決定装置１０は、検査において実行履歴が検査基準を満たさなかった要素を対象装置に実行させることができる入力データの条件を決定することができる。すなわち、条件決定装置１０は、プログラムに含まれる十分に検査されていない要素を対象装置に実行させることができる入力データの条件を決定することができる。
【００５７】
従って、検査装置は、この条件を満たす入力データを対象装置に与えることにより、これまで検査基準を満たさなかったプログラムの要素を実行させる可能性を高くすることができる。よって、検査装置は、検査が不十分な要素を少なくし、プログラムにおける脆弱性を有する部分を少なくすることができる。
【００５８】
（第２実施形態）
つぎに、第２実施形態について説明する。なお、第１実施形態と共通の事項については共通の用語を用いて説明を省略する。
【００５９】
図１０は、第２実施形態に係る検査システム４０の構成を対象装置５０とともに示す図である。検査システム４０は、プログラムを実行する対象装置５０に対して複数の入力データを与えて、プログラムおよび対象装置５０を検査する。
【００６０】
対象装置５０は、検査対象となるプログラムを実行する。対象装置５０は、プロセッサおよびメモリを有し、プログラムを実行する機能を有する。
【００６１】
検査システム４０は、検査装置６１と、支援装置６２と、表示装置６３とを備える。検査装置６１は、複数の入力データを対象装置５０に与えて、対象装置５０を検査する。対象装置５０は、検査装置６１から与えられた入力データを用いて、プログラムに従った処理を実行する。
【００６２】
支援装置６２は、検査装置６１による処理を支援する。具体的には、支援装置６２は、検査装置６１が入力データを生成するために用いる条件を決定する。検査装置６１は、支援装置６２により決定された条件を満たす入力データを生成して、対象装置５０に与える。
【００６３】
表示装置６３は、対象装置５０、検査装置６１および支援装置６２で用いられた各種の情報を表示する。
【００６４】
図１１は、第２実施形態に係る対象装置５０、検査装置６１および支援装置６２の構成を示す図である。検査装置６１は、テストデータ生成部７１と、テストデータ記憶部７２と、入力データ生成部７３と、データ供給部７４と、データ記憶部７５とを有する。
【００６５】
テストデータ生成部７１は、複数のテストデータを含むテストデータ群を生成する。テストデータ生成部７１は、対象装置５０が正常に動作することが確認された正常データの一部分を変位させてテストデータを生成する。
【００６６】
テストデータ記憶部７２は、テストデータ生成部７１が生成したテストデータ群を記憶する。テストデータ生成部７１は、検査に先だって、テストデータ群を生成してテストデータ記憶部７２に記憶させる。これにより、テストデータ生成部７１は、検査毎にテストデータを生成しなくてよく、処理負担が軽減する。
【００６７】
なお、テストデータ生成部７１は、生成したテストデータ群を表示装置６３に与えてもよい。表示装置６３は、テストデータ生成部７１から取得したテストデータ群を表示する。これにより、表示装置６３は、テストデータ群を操作者に確認させることができる。
【００６８】
入力データ生成部７３は、テストデータ記憶部７２に記憶されたテストデータ群に基づき、対象装置５０に与えるべき複数の入力データのそれぞれを生成する。
【００６９】
本実施形態においては、１回目の検査において、入力データ生成部７３は、テストデータ群からランダムにテストデータを抽出し、抽出したテストデータを入力データとして出力する。また、２回目以降の検査においては、入力データ生成部７３は、テストデータ群から、支援装置６２から受け取った条件を満たすテストデータを抽出し、抽出したテストデータを入力データとして出力する。
【００７０】
また、２回目以降の検査においては、入力データ生成部７３は、対象装置５０に既に与えた入力データと重複しない入力データを生成する。例えば、２回目以降の検査においては、入力データ生成部７３は、テストデータ群から、前回以前に抽出した入力データと重複しない入力データを抽出する。これにより、入力データ生成部７３は、同一の入力データを用いた検査を回避させることができる。
【００７１】
なお、入力データ生成部７３は、生成した複数の入力データを表示装置６３に与えてもよい。表示装置６３は、入力データ生成部７３から取得した複数の入力データを表示する。これにより、表示装置６３は、対象装置５０へと供給すべき複数の入力データを操作者に確認させることができる。
【００７２】
データ供給部７４は、入力データ生成部７３により生成された複数の入力データのそれぞれを対象装置５０に与えて、対象装置５０を検査する。データ記憶部７５は、対象装置５０に与えた複数の入力データを記憶する。データ記憶部７５は、複数回検査をした場合、検査毎に複数の入力データを記憶してもよい。
【００７３】
対象装置５０は、プログラム実行部８１と、実行履歴生成部８２とを有する。プログラム実行部８１は、検査対象のプログラムをプロセッサが実行することにより実現される。プログラム実行部８１は、検査装置６１から与えられた入力データを用いてプログラムに従った処理をし、結果を出力する。
【００７４】
プログラム実行部８１は、処理結果を表示装置６３に与えてもよい。表示装置６３は、プログラム実行部８１から取得した処理結果を表示する。これにより、表示装置６３は、処理結果を操作者に確認させ、例えばプログラムのデバッグ等に利用させることができる。
【００７５】
実行履歴生成部８２は、例えば、検査対象のプログラムを、実行履歴出力を付加するオプション付きでコンパイルしたコードをプロセッサが実行することにより実現される。例えば、ＧＣＣ（GNU  Compiler  Collection）の場合、実行履歴生成部８２は、検査対象のプログラムをカバレッジ計測オプション付きでコンパイルしたコードをプロセッサが実行することにより実現される。
【００７６】
実行履歴生成部８２は、検査装置６１が対象装置５０に入力データを与えた場合における、プログラムに含まれるそれぞれの要素毎の実行頻度（例えば命令文毎の実行回数）を検出する。そして、実行履歴生成部８２は、１つの入力データに応じた処理が終了する毎に、個別実行履歴を出力する。
【００７７】
実行履歴生成部８２は、個別実行履歴を表示装置６３に与えてもよい。表示装置６３は、実行履歴生成部８２から取得した個別実行履歴を表示する。これにより、表示装置６３は、個別実行履歴を操作者に確認させることができる。
【００７８】
支援装置６２は、実行情報生成部８５と、実行情報記憶部８６と、条件決定装置１０とを有する。実行情報生成部８５は、検査装置６１から、対象装置５０に与えた複数の入力データを取得する。また、実行情報生成部８５は、対象装置５０から、複数の個別実行履歴を取得する。実行情報生成部８５は、複数の入力データのそれぞれと、対応する個別実行履歴とを組にする。そして、実行情報生成部８５は、入力データと個別実行履歴との組を、複数の入力データのそれぞれについて含む実行情報を生成する。
【００７９】
実行情報生成部８５は、生成した実行情報を実行情報記憶部８６に記憶させる。実行情報記憶部８６は、実行情報生成部８５により生成された実行情報を記憶する。この場合、実行情報記憶部８６は、検査毎に実行情報を別個に記憶してもよい。
【００８０】
実行情報生成部８５は、実行情報を表示装置６３に与えてもよい。表示装置６３は、実行情報生成部８５から取得した実行情報を表示する。これにより、表示装置６３は、実行情報を操作者に確認させることができる。
【００８１】
条件決定装置１０は、実行情報記憶部８６に記憶された実行情報に基づき、対象装置５０に与えるべき入力データの条件を決定する。そして、条件決定装置１０は、決定した条件を検査装置６１に与える。条件決定装置１０は、第１実施形態と同一の機能および構成を有するので、詳細な説明を省略する。
【００８２】
条件決定装置１０は、総実行履歴、実行有無情報および決定した条件の全てまたは何れかを表示装置６３に与えてもよい。表示装置６３は、条件決定装置１０から取得した総実行履歴、実行有無情報および決定した条件を表示する。これにより、表示装置６３は、総実行履歴、実行有無情報および決定した条件を操作者に確認させることができる。
【００８３】
図１２は、第２実施形態に係る検査システム４０の処理フローを示す図である。本実施形態に係る検査システム４０は、対象装置５０を検査する場合、Ｓ１２１から処理を実行する。
【００８４】
まず、Ｓ１２１において、テストデータ生成部７１は、複数のテストデータを含むテストデータ群を生成する。テストデータ生成部７１は、テストデータ群を検査に先だって生成してテストデータ記憶部７２に記憶させてもよい。
【００８５】
続いて、Ｓ１２２において、入力データ生成部７３は、テストデータ群に基づき複数の入力データを生成する。本実施形態においては、入力データ生成部７３は、テストデータ群からランダムにテストデータを抽出し、抽出したテストデータを入力データとして出力する。
【００８６】
続いて、Ｓ１２３において、データ供給部７４は、生成された複数の入力データのそれぞれを、順次に、対象装置５０に与え、対象装置５０を検査する。
【００８７】
対象装置５０は、入力データを受け取る毎に、Ｓ１２５およびＳ１２６の処理を実行する（Ｓ１２４とＳ１２７との間のループ処理）。Ｓ１２５においては、対象装置５０は、与えられた入力データを用いて、プログラムに従った処理を実行する。Ｓ１２６においては、対象装置５０は、与えられた入力データに対応する個別実行履歴を生成する。対象装置５０は、全ての入力データについて、Ｓ１２５およびＳ１２６の処理を終了すると、Ｓ１２４とＳ１２７との間のループ処理を抜ける。
【００８８】
続いて、Ｓ１２８において、実行情報生成部８５は、検査装置６１が対象装置５０に与えた複数の入力データと、対象装置５０が生成した複数の個別実行履歴を取得する。そして、実行情報生成部８５は、複数の入力データのそれぞれについての、入力データと個別実行履歴との組を含む実行情報を生成する。
【００８９】
続いて、Ｓ１２９において、実行情報記憶部８６は、生成された実行情報を記憶する。
【００９０】
続いて、Ｓ１３０において、条件決定装置１０は、実行情報記憶部８６に記憶された実行情報に基づき、新しい入力データの条件を決定する。Ｓ１３０の処理は、図９に示した処理と同一であるので、詳細な説明を省略する。条件決定装置１０は、生成した条件を入力データ生成部７３に与える。なお、Ｓ１３０内の処理において、未達要素が存在しなかった場合（Ｓ１１４のＮｏ）、条件決定装置１０は、本フローを終了する。
【００９１】
続いて、Ｓ１３１において、入力データ生成部７３は、条件決定装置１０により決定された条件を満たす複数の入力データを生成する。本実施形態においては、入力データ生成部７３は、テストデータ群から条件を満たすテストデータを抽出し、抽出したテストデータを入力データとして出力する。この場合において、入力データ生成部７３は、Ｓ１２２で生成した入力データと重複しない複数の入力データを生成する。
【００９２】
続いて、Ｓ１３２において、表示装置６３は、生成された複数の入力データを表示する。
【００９３】
以上のように、本実施形態に係る検査システム４０は、検査において実行履歴が検査基準を満たさなかった要素を対象装置５０に実行させることができる可能性の高い入力データを生成することができる。すなわち、本実施形態に係る検査システム４０は、プログラムに含まれる十分に検査されていない要素を対象装置５０に実行させることができる入力データを生成することができる。
【００９４】
従って、検査システム４０は、このような入力データを対象装置５０に与えることにより、これまで検査基準を満たさなかったプログラムの要素を実行させる可能性を高くすることができる。よって、検査システム４０は、検査が不十分な要素を少なくし、プログラムにおける脆弱性を有する部分を少なくすることができる。
【００９５】
（第３実施形態）
つぎに、第３実施形態について説明する。なお、第３実施形態に係る検査システム４０の構成は、第２実施形態と同一であるので、説明は省略する。
【００９６】
図１３は、第３実施形態に係る検査システム４０の処理フローを示す図である。本実施形態に係る検査システム４０は、Ｓ１４１から処理を実行し、対象装置５０を複数回検査する。
【００９７】
まず、Ｓ１４１において、テストデータ生成部７１は、複数のテストデータを含むテストデータ群を生成する。
【００９８】
続いて、検査システム４０は、検査毎に、Ｓ１４３、Ｓ１４４およびＳ１２３〜Ｓ１３０の処理を実行する（Ｓ１４２とＳ１４５との間のループ処理）。
【００９９】
Ｓ１４３において、入力データ生成部７３は、前回の検査において決定された条件を、条件決定装置１０から取得する。なお、１回目の検査においては、条件決定装置１０によりまだ条件が決定されていないので、入力データ生成部７３は、条件を取得しなくてよい。
【０１００】
続いて、Ｓ１４４において、入力データ生成部７３は、テストデータ群に基づき、条件を満たす複数の入力データを生成する。なお、１回目の検査においては、入力データ生成部７３は、テストデータ群からランダムにテストデータを抽出し、抽出したテストデータを入力データとして出力する。
【０１０１】
また、２回目以降の検査においては、入力データ生成部７３は、テストデータ群から条件を満たすテストデータを抽出し、抽出したテストデータを入力データとして出力する。さらに、２回目以降の検査においては、入力データ生成部７３は、前回以前の検査において抽出した入力データと重複しない複数の入力データを抽出する。これにより、入力データ生成部７３は、重複した検査を無くすことができる。
【０１０２】
Ｓ１４４の処理を終えると、検査システム４０は、Ｓ１２３〜Ｓ１３０の処理を実行する。Ｓ１２３〜Ｓ１３０の処理は、第２実施形態と同一であるので詳細な説明を省略する。
【０１０３】
Ｓ１３０を終えた後、Ｓ１４５において、検査システム４０は、予め定められた回数の検査が終了したか否かを判断する。予め定められた回数の検査が終了していない場合、検査システム４０は、処理をＳ１４２に戻し、次の検査について処理を繰り返す。
【０１０４】
予め定められた回数の検査が終了した場合、検査システム４０は、本フローを終了する。予め定められた回数の検査が終了した場合にフローを終了することにより、検査システム４０は、例えば、条件に従い生成した入力データを与えても、対象装置５０が未達要素を実行しないような場合に、強制的に処理を終了することができる。
【０１０５】
以上のように、本実施形態に係る検査システム４０は、検査を複数回繰り返し、それぞれの検査において、実行履歴が検査基準を満たさなかった要素を対象装置５０に実行させることができる可能性の高い入力データを生成する。これにより、本実施形態に係る検査システム４０によれば、プログラムにおける検査が不十分な要素を集中的に対象装置５０に実行させて、プログラムの脆弱性をより少なくすることができる。
【０１０６】
なお、第３実施形態において、実行情報記憶部８６は、前回以前の検査において生成した実行情報を記憶している状態において、今回の試験において取得した新たな実行情報を記憶する場合、前回以前の検査において生成した実行情報を消去してもよい。この場合、合成部２２は、今回の検査において取得された実行情報に示された複数の個別実行履歴を合成して総実行履歴を生成する。さらに、特定部２４は、検査毎に、特定した未達要素を保存しておく。そして、特定部２４は、前回の検査以前において特定した未達要素のうちの、総実行履歴が検査基準を満たしていない要素を、今回の検査における未達要素として特定する。
【０１０７】
これにより、実行情報記憶部８６は、検査毎に実行情報を残しておかなくてよいので、記憶容量を効率良く使用することができる。また、特定部２４は、既に検査基準を満たした要素を新たに未達要素として特定することが無いので、効率良く検査させることができる。
【０１０８】
また、第３実施形態において、データ供給部７４は、今回の検査において生成された複数の入力データと、データ記憶部７５に記憶されている前回の検査以前において生成された複数の入力データとを加えた複数の入力データを対象装置５０に与えてもよい。これにより、実行履歴生成部８２は、これまでの全ての検査において生成された複数の入力データを与えた場合の個別実行履歴を生成することができる。従って、特定部２４は、これまでの全ての検査において生成した複数の入力データを対象装置５０に与えた場合における、実行履歴が検査基準を満たさない要素を特定することができる。
【０１０９】
（変形例）
以下、変形例について説明する。
【０１１０】
第２実施形態および第３実施形態において、テストデータ生成部７１は、テストデータの属性情報を、テストデータに付加してもよい。属性情報は、テストデータの性質および特徴を表す情報である。この場合、テストデータに付加された属性情報は、入力データ生成部７３が生成する入力データにも引き継がれる。条件決定装置１０は、条件を決定する場合に、属性情報をテストデータ（入力データ）のパラメータの一つとして用いてよい。例えば、テストデータの識別番号を属性情報とした場合、条件決定装置１０は、識別番号を、入力データの条件に含めてよい。
【０１１１】
第２実施形態および第３実施形態において、データ供給部７４は、対象装置５０へと入力データを与える場合に、属性情報に、入力データを対象装置５０に与えた時刻若しくは供給順序、または、時刻および供給順序の両者を含めてもよい。実行履歴生成部８２は、個別実行履歴に、個別実行履歴を生成した時刻若しくは生成順序、または、生成時刻および生成順序の両者を付加してもよい。これにより、実行情報生成部８５は、入力データと個別実行履歴とを容易に対にすることができる。
【０１１２】
第２実施形態および第３実施形態において、実行履歴生成部８２は、検査毎に、総実行履歴を生成してもよい。この場合、実行履歴生成部８２は、生成した総実行履歴を条件決定装置１０に与える。これにより、条件決定装置１０は、合成部２２を備えない構成とすることができる。また、この場合、実行履歴生成部８２は、個別実行履歴として、プログラムに含まれる要素毎の実行の有無を表す情報を生成すればよい。
【０１１３】
第２実施形態および第３実施形態において、入力データ生成部７３は、テストデータ群に関係なく入力データを生成してもよい。これにより、入力データ生成部７３は、テストデータ群に存在しない入力データを生成することができる。
【０１１４】
第１実施形態、第２実施形態および第３実施形態において、個別実行履歴および総実行履歴は、プログラムに含まれる要素毎に、当該要素の実行回数、当該要素の実行有無、当該要素の実行時間、当該要素毎を実行するに至ったトレース履歴、および、当該要素に対する入力変数のバリエーション数を含んでもよい。また、この場合、検査基準は、実行回数、実行有無、実行時間、トレース履歴および入力変数のバリエーション数を用いた条件で表される。
【０１１５】
第１実施形態、第２実施形態および第３実施形態において、個別実行履歴および総実行履歴は、プログラムに含まれる要素を識別するために、要素を識別する識別子を用いてもよい。
【０１１６】
第１実施形態、第２実施形態および第３実施形態において、基準記憶部２３は、予め検査基準を記憶していてもよいし、操作者によって例えば検査毎に入力される検査基準を記憶してもよい。基準記憶部２３は、予め記憶しておくことにより、外部から入力を受けずに、検査基準を満たしているかどうかを判断させることができる。基準記憶部２３は、操作者によって例えば検査毎に入力される検査基準を記憶することにより、例えば検査毎に検査基準を適切に変更することができる。
【０１１７】
第１実施形態、第２実施形態および第３実施形態において、実行情報は、入力データの実体に代えて、入力データに割り振られた識別子を含んでもよい。この場合、分類部２５および条件決定部２６は、入力データのパラメータ等を、例えば、入力データを記憶している外部の記憶部（例えば、第２実施形態および第３実施形態の場合、データ記憶部７５）を参照して取得する。実行情報は、識別子を含むことにより、サイズが小さくなる。
【０１１８】
第１実施形態、第２実施形態および第３実施形態において、特定部２４は、操作者が手動で指定した要素を、未達要素として特定してもよい。これにより、条件決定部２６は、操作者が特に検査を希望する要素を実行させる入力データの条件を決定することができる。
【０１１９】
第１実施形態、第２実施形態および第３実施形態において、実行有無情報は、操作者により生成された入力データに関する情報を追加して含んでもよい。また、分類部２５は、操作者による操作に応じて、実行有無情報に含める項目を適宜追加および削除してもよい。これにより、条件決定装置１０は、より高い精度で条件を決定することができる。
【０１２０】
第１実施形態、第２実施形態および第３実施形態において、条件決定部２６は、決定した条件が検査に有用であるかの判断結果を、操作者等から受け付けてもよい。条件決定部２６は、検査で有用でないと判断された場合、有用で無いと判断された一部分または全部の条件を削除する。
【０１２１】
第１実施形態、第２実施形態および第３実施形態において、条件決定部２６は、条件を決定できない場合には、検査を終了してもよい。
【０１２２】
また、第２実施形態および第３実施形態において、入力データ生成部７３は、条件を満たす入力データを抽出できない場合には、検査を終了してもよい。例えば、入力データ生成部７３は、テストデータ群から過去に生成したテストデータを除くと、条件を満たすテストデータが１つも存在しない場合、検査を終了する。
【０１２３】
（ハードウェア構成）
図１４は、条件決定装置１０および検査装置６１のハードウェア構成を示す図である。
【０１２４】
本実施形態に係る条件決定装置１０および検査装置６１は、例えば図１４に示すようなハードウェア構成の情報処理装置により実現される。この情報処理装置は、通常のコンピュータと同様の構成をしている。すなわち、情報処理装置は、ＣＰＵ（Central  Processing  Unit）２０１と、ＲＯＭ（Read  Only  Memory）２０２と、ＲＡＭ（Random  Access  Memory）２０３と、操作入力装置２０４と、ディスプレイ２０５と、記憶装置２０６と、通信装置２０７とを備える。そして、これらの各部は、バスにより接続される。
【０１２５】
ＣＰＵ２０１は、ＲＯＭ２０２および記憶装置２０６に記憶されたプログラムをＲＡＭ２０３に展開して実行し、プログラムに従って処理（各部の制御およびデータの加工等）をするプロセッサである。ＣＰＵ２０１は、ＲＡＭ２０３の所定領域を作業領域として、ＲＯＭ２０２および記憶装置２０６等に記憶されたプログラムとの協働により各種処理を実行する。
【０１２６】
ＲＯＭ２０２は、プログラムおよび各種情報を書き換え不可能に記憶するメモリである。ＲＯＭ２０２は、オペレーティングシステムの起動用プログラムを記憶装置２０６からＲＡＭ２０３に読み出すスタートプログラムが記憶されている。
【０１２７】
ＲＡＭ２０３は、ＳＤＲＡＭ（Synchronous  Dynamic  Random  Access  Memory）等のメモリである。ＲＡＭ２０３は、ＣＰＵ２０１による処理対象のデータ等を記憶し、ＣＰＵ２０１の作業領域として機能する。
【０１２８】
操作入力装置２０４は、マウスおよびキーボード等の入力デバイスである。操作入力装置２０４は、ユーザから操作入力された情報を指示信号として受け付け、指示信号をＣＰＵ２０１に出力する。
【０１２９】
ディスプレイ２０５は、ＬＣＤ（Liquid  Crystal  Display）等の表示デバイスである。ディスプレイ２０５は、ＣＰＵ２０１からの表示信号に基づいて、各種情報を表示する。
【０１３０】
記憶装置２０６は、例えば、ハードディスクドライブまたはフラッシュメモリ等である。記憶装置２０６は、オペレーティングシステム、アプリケーションプログラムおよびデータを記憶している。通信装置２０７は、ネットワークに接続するためのインターフェイス装置である。通信装置２０７は、ＣＰＵ２０１からの制御に応じて外部の機器とネットワークを介して通信する。
【０１３１】
本実施形態の情報処理装置で実行されるプログラムは、インストール可能な形式または実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録されて提供される。また、本実施形態の情報処理装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施形態の情報処理装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。また、本実施形態のプログラムを、ＲＯＭ２０２等に予め組み込んで提供するように構成してもよい。
【０１３２】
情報処理装置を条件決定装置１０として機能させるための情報処理プログラムは、取得モジュールと、合成モジュールと、特定モジュールと、分類モジュールと、条件決定モジュールとを有する。情報処理装置は、プロセッサ（ＣＰＵ２０１）が記憶媒体（記憶装置２０６等）からプログラムを読み出して実行することにより各モジュールが主記憶装置（ＲＡＭ２０３）上にロードされ、プロセッサ（ＣＰＵ２０１）が、取得部２１、合成部２２、特定部２４、分類部２５および条件決定部２６として機能する。また、ＲＡＭ２０３または記憶装置２０６は、基準記憶部２３として機能する。なお、取得部２１、合成部２２、特定部２４、分類部２５および条件決定部２６は、一部または全部がプロセッサ以外のハードウェアにより実現されてもよい。
【０１３３】
情報処理装置を検査装置６１として機能させるための情報処理プログラムは、テストデータ生成モジュールと、入力データ生成モジュールと、データ供給モジュールとを有する。情報処理装置は、プロセッサ（ＣＰＵ２０１）が記憶媒体（記憶装置２０６等）からプログラムを読み出して実行することにより各モジュールが主記憶装置（ＲＡＭ２０３）上にロードされ、プロセッサ（ＣＰＵ２０１）が、テストデータ生成部７１、入力データ生成部７３およびデータ供給部７４として機能する。また、ＲＡＭ２０３または記憶装置２０６は、テストデータ記憶部７２およびデータ記憶部７５として機能する。なお、テストデータ生成部７１、入力データ生成部７３およびデータ供給部７４は、一部または全部がプロセッサ以外のハードウェアにより実現されてもよい。
【０１３４】
本発明のいくつかの実施形態および変形例を説明したが、これらの実施形態および変形例は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１３５】
１０  条件決定装置
２１  取得部
２２  合成部
２３  基準記憶部
２４  特定部
２５  分類部
２６  条件決定部
４０  検査システム
５０  対象装置
６１  検査装置
６２  支援装置
６３  表示装置
７１  テストデータ生成部
７２  テストデータ記憶部
７３  入力データ生成部
７４  データ供給部
７５  データ記憶部
８１  プログラム実行部
８２  実行履歴生成部
８５  実行情報生成部
８６  実行情報記憶部
【図１】
0006559600.tif 000002
【図２】
0006559600.tif 000003
【図３】
0006559600.tif 000004
【図４】
0006559600.tif 000005
【図５】
0006559600.tif 000006
【図６】
0006559600.tif 000007
【図７】
0006559600.tif 000008
【図８】
0006559600.tif 000009
【図９】
0006559600.tif 000010
【図１０】
0006559600.tif 000011
【図１１】
0006559600.tif 000012
【図１２】
0006559600.tif 000013
【図１３】
0006559600.tif 000014
【図１４】
0006559600.tif 000015