(57)【要約】【課題】用途に応じて算出されるデータの質を選択可能とする。【解決手段】データ生成装置は、複数種類の乱数関数を記憶する記憶部と、所定のデータを生成する時間の設定値である設定時間、及び生成する所定のデータのデータ総量の設定値である設定データ総量の少なくともいずれかを、ユーザの入力により取得する入力データ取得部２４と、乱数関数を用いて設定時間で生成可能な所定のデータのデータ総量予測値、及び、乱数関数を用いて設定データ総量分の所定のデータを生成した場合に要する時間予測値の、少なくともいずれかを算出する予測値算出部２６と、複数種類の乱数関数のうちユーザが選択した乱数関数の情報を取得する選択乱数関数取得部２７と、ユーザに選択された乱数関数を用いて、所定のデータを生成するデータ算出部２８と、を有する。【選択図】図３
2019061648.tif 000002
【特許請求の範囲】
【請求項１】
所定のデータを生成するデータ生成装置であって、
複数種類の乱数関数を記憶する記憶部と、
前記所定のデータを生成する時間の設定値である設定時間、及び生成する前記所定のデータのデータ総量の設定値である設定データ総量の少なくともいずれかを、ユーザの入力により取得する入力データ取得部と、
前記乱数関数を用いて前記設定時間で生成可能な前記所定のデータのデータ量の予測値であるデータ総量予測値、及び、前記乱数関数を用いて前記設定データ総量分の前記所定のデータを生成した場合に要する時間の予測値である時間予測値の、少なくともいずれかを算出する予測値算出部と、
複数種類の前記乱数関数のうち前記ユーザが選択した乱数関数の情報を取得する選択乱数関数取得部と、
前記ユーザに選択された乱数関数を用いて、前記所定のデータを生成するデータ算出部と、
を有する、データ生成装置。
【請求項２】
前記記憶部は、ファジングを行う対象プログラムを正常に作動させるための作動用データの情報を記憶しており、
前記入力データ取得部は、前記作動用データに含まれるデータ群のうち、前記所定のデータに置き換えるデータである置換データの情報を、前記ユーザの入力により取得し、
前記予測値算出部は、前記置換データの情報にも基づき、前記データ総量予測値及び前記時間予測値の少なくともいずれかを算出する、請求項１に記載のデータ生成装置。
【請求項３】
前記入力データ取得部は、算出する所定のデータがバイナリデータであるか数値データであるか文字データであるかを示すデータ種類情報と、１つのテストデータ用の前記所定のデータのデータ量であるデータ量情報とを、前記ユーザの入力により取得し、
前記予測値算出部は、前記データ種類情報と前記データ量情報とにも基づき、前記データ総量予測値及び前記時間予測値の少なくともいずれかを算出する、請求項１に記載のデータ生成装置。
【請求項４】
前記ユーザに情報を表示する表示部と、前記表示部の表示を制御する表示制御部とを有し、
前記表示部は、
前記設定時間及び前記設定データ総量の少なくともいずれかを前記ユーザが入力するための画面である設定値入力画面と、
前記データ総量予測値及び前記時間予測値の少なくともいずれかを、複数の前記乱数関数毎に表示する予測値表示画面と、
を表示し、
前記予測値算出部は、前記設定値入力画面が表示されている際に前記設定時間及び前記設定データ総量の少なくともいずれかが入力された場合に、前記データ総量予測値及び前記時間予測値の少なくともいずれかを、複数の前記乱数関数毎に算出し、
前記表示制御部は、前記データ総量予測値及び前記時間予測値の少なくともいずれかが算出された後、前記表示部に前記予測値表示画面を表示させる、
請求項１に記載のデータ生成装置。
【請求項５】
前記記憶部は、ファジングを行う対象プログラムを正常に作動させるための作動用データの情報を記憶しており、
前記入力データ取得部は、前記作動用データに含まれるデータ群のうち、前記所定のデータに置き換えるデータである置換データの情報を、前記ユーザの入力により取得し、
前記予測値算出部は、前記置換データの情報にも基づき、前記データ総量予測値及び前記時間予測値の少なくともいずれかを算出し、
前記表示部は、前記置換データの情報を前記ユーザが入力するための画面である置換データ入力画面を表示し、
前記表示制御部は、前記置換データ入力画面が表示されている際に前記置換データが入力された場合に、前記置換データ入力画面から前記設定値入力画面に表示を切り替える、請求項４に記載のデータ生成装置。
【請求項６】
前記入力データ取得部は、算出する所定のデータがバイナリデータであるか数値データであるか文字データであるかを示すデータ種類情報と、１つのテストデータ用の前記所定のデータのデータ量であるデータ量情報とを、前記ユーザの入力により取得し、
前記予測値算出部は、前記データ種類情報と前記データ量情報とにも基づき、前記データ総量予測値及び前記時間予測値の少なくともいずれかを算出し、
前記表示部は、前記データ種類情報と前記データ量情報とを前記ユーザが入力するための画面である算出用データ入力画面を表示し、
前記表示制御部は、前記算出用データ入力画面が表示されている際に前記データ種類情報及び前記データ量情報が入力された場合に、前記算出用データ入力画面から前記設定値入力画面に表示を切り替える、
請求項４又は請求項５に記載のデータ生成装置。
【請求項７】
前記置換データ入力画面は、前記作動用データが表示され、前記作動用データの一部を選択することで、前記置換データの情報を前記ユーザが入力する画面である、
請求項５に記載のデータ生成装置。
【請求項８】
前記表示部は、前記作動用データを表示するとともに、前記作動用データの一部が選択された場合には、前記乱数関数を用いて生成された前記所定のデータを表示するファジング用表示画面を表示する、
請求項７に記載のデータ生成装置。
【請求項９】
所定のデータを生成するデータ生成方法であって、
前記所定のデータを生成する時間の設定値である設定時間、及び生成する前記所定のデータのデータ量の設定値である設定データ総量の少なくともいずれかを、ユーザの入力により取得する設定値取得ステップと、
複数種類の乱数関数のうち少なくともいずれかの乱数関数を用いて前記設定時間で生成可能な前記所定のデータのデータ量の予測値であるデータ総量予測値、及び、前記乱数関数を用いて前記設定データ総量分の前記所定のデータを生成した場合に要する時間の予測値である時間予測値の、少なくともいずれかを算出する予測値算出ステップと、
前記複数種類の乱数関数のうち前記ユーザが選択した乱数関数の情報を取得する選択乱数関数取得ステップと、
前記ユーザに選択された乱数関数を用いて、前記所定のデータを生成するデータ算出ステップと、
を有する、データ生成方法。
【請求項１０】
所定のデータを生成するプログラムであって、
前記所定のデータを生成する時間の設定値である設定時間、及び生成する前記所定のデータのデータ量の設定値である設定データ総量の少なくともいずれかを、ユーザの入力により取得する設定値取得ステップと、
複数種類の乱数関数のうち少なくともいずれかの乱数関数を用いて前記設定時間で生成可能な前記所定のデータのデータ量の予測値であるデータ総量予測値、及び、前記乱数関数を用いて前記設定データ総量分の前記所定のデータを生成した場合に要する時間の予測値である時間予測値の、少なくともいずれかを算出する予測値算出ステップと、
前記複数種類の乱数関数のうち前記ユーザが選択した乱数関数の情報を取得する選択乱数関数取得ステップと、
前記ユーザに選択された乱数関数を用いて、前記所定のデータを生成するデータ算出ステップと、
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ生成装置、データ生成方法、及びプログラムに関する。
【背景技術】
【０００２】
ソフトウェアの脆弱性を検出するためのテストとして、ファジングと呼ばれるテスト方法が用いられる場合がある。ファジングとは、ソフトウェアの検出対象のプログラムに、複数のテストデータを入力することで、その入力に対するプログラムの動作を確認するものである。例えば、特許文献１には、ソフトウェアの機能別にファジングを行う旨が記載されている。ここで、ファジングのテスト精度の向上のためには、予期し難いデータに基づき、統計的に一様性のあるファジング用データを生成して用いることが好ましい。ここで統計的に一様性のあるファジング用データとは、統計的に十分に無秩序であるデータである。従って、ファジング用データの生成には、例えば予め定めた乱数関数（疑似乱数関数）を用いた生成ツールが用いられる場合がある。すなわち、乱数関数を用いて乱数（疑似乱数）を算出し、その乱数に基づきファジング用データを生成する。乱数関数を用いると、予測しにくい乱数を得ることができるため、その乱数を用いて、統計的に一様性のあるファジング用データを生成することができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１１６８４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで、乱数関数は、いくつも種類があり、算出される乱数の精度が互いに異なる。例えば、高精度の乱数関数を用いると、例えば算出される乱数の暗号学上の安全性は高くなるためファジング用データが高精度になり、例えば周期性や偏りが少なくなる。一方、それよりも精度の低い乱数関数を用いると、算出される乱数の安全性が高精度のものより低くなるため、ファジング用データの精度も低くなるが、算出に要する時間は短くなる。しかし、現状のツールでは、用いられる乱数関数が予め定められている場合があり、どのような乱数関数が用いられているかがユーザに知らされていない場合がある。そのため、ユーザは、このツールによって算出されたファジング用データの質、すなわち予期され難さを、認識できないおそれがある。また、ファジングを行う対象プログラムは、様々な用途があるので、用途に応じて、ファジング用データの質を選択できることが望ましい。従って、ユーザが、用途に応じて算出されるファジング用データの質を選択可能にすることが求められている。さらに言えば、ファジング用データだけでなく、様々なデータにおいて、ユーザが、用途に応じて算出されるデータの質を選択可能にすることが求められている。
【０００５】
本発明は、上記課題を鑑み、ユーザが用途に応じて算出されるデータの質を選択可能とするデータ生成装置、データ生成方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一態様にかかるデータ生成装置は、所定のデータを生成するデータ生成装置であって、複数種類の乱数関数を記憶する記憶部と、前記所定のデータを生成する時間の設定値である設定時間、及び生成する前記所定のデータのデータ総量の設定値である設定データ総量の少なくともいずれかを、ユーザの入力により取得する入力データ取得部と、前記乱数関数を用いて前記設定時間で生成可能な前記所定のデータのデータ量の予測値であるデータ総量予測値、及び、前記乱数関数を用いて前記設定データ総量分の前記所定のデータを生成した場合に要する時間の予測値である時間予測値の、少なくともいずれかを算出する予測値算出部と、複数種類の前記乱数関数のうち前記ユーザが選択した乱数関数の情報を取得する選択乱数関数取得部と、前記ユーザに選択された乱数関数を用いて、前記所定のデータを生成するデータ算出部と、を有する。
【０００７】
本発明の一態様にかかるデータ生成方法は、所定のデータを生成するデータ生成方法であって、前記所定のデータを生成する時間の設定値である設定時間、及び生成する前記所定のデータのデータ量の設定値である設定データ総量の少なくともいずれかを、ユーザの入力により取得する設定値取得ステップと、複数種類の乱数関数のうち少なくともいずれかの乱数関数を用いて前記設定時間で生成可能な前記所定のデータのデータ量の予測値であるデータ総量予測値、及び、前記乱数関数を用いて前記設定データ総量分の前記所定のデータを生成した場合に要する時間の予測値である時間予測値の、少なくともいずれかを算出する予測値算出ステップと、前記複数種類の乱数関数のうち前記ユーザが選択した乱数関数の情報を取得する選択乱数関数取得ステップと、前記ユーザに選択された乱数関数を用いて、前記所定のデータを生成するデータ算出ステップと、を有する。
【０００８】
本発明の一態様にかかるプログラムは、所定のデータを生成するプログラムであって、前記所定のデータを生成する時間の設定値である設定時間、及び生成する前記所定のデータのデータ量の設定値である設定データ総量の少なくともいずれかを、ユーザの入力により取得する設定値取得ステップと、複数種類の乱数関数のうち少なくともいずれかの乱数関数を用いて前記設定時間で生成可能な前記所定のデータのデータ量の予測値であるデータ総量予測値、及び、前記乱数関数を用いて前記設定データ総量分の前記所定のデータを生成した場合に要する時間の予測値である時間予測値の、少なくともいずれかを算出する予測値算出ステップと、前記複数種類の乱数関数のうち前記ユーザが選択した乱数関数の情報を取得する選択乱数関数取得ステップと、前記ユーザに選択された乱数関数を用いて、前記所定のデータを生成するデータ算出ステップと、をコンピュータに実行させる。
【発明の効果】
【０００９】
本発明によれば、ユーザが、用途に応じて算出されるデータの質を選択することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、本実施形態に係るデータ生成装置の模式図である。
【図２】図２は、ファジングを説明するための模式図である。
【図３】図３は、本実施形態に係る制御部のブロック図である。
【図４】図４は、置換データが入力された場合のファジング用データの作成フローを説明する説明図である。
【図５】図５は、算出用データが入力された場合のファジング用データの作成フローを説明する説明図である。
【図６】図６は、モード入力画面の模式的な図を示す。
【図７】図７は、置換データ入力画面の模式的な図を示す。
【図８】図８は、算出用データ入力画面の模式的な図を示す。
【図９】図９は、設定値入力画面の模式的な図である。
【図１０】図１０は、データ総量予測値表示画面の模式的な図である。
【図１１】図１１は、時間予測値表示画面の模式的な図である。
【図１２】図１２は、置換データ入力画面の一例を示す図である。
【図１３】図１３は、ファジング用データ表示画面の一例を示す図である。
【図１４】図１４は、ファジング用データ表示画面の他の一例を示す図である。
【図１５】図１５は、判定結果表示画面の一例を示す図である。
【００１１】
以下に、本発明の実施形態を図面に基づいて詳細に説明する。なお、以下に説明する実施形態により本発明が限定されるものではない。
【００１２】
図１は、本実施形態に係るデータ生成装置の模式図である。図２は、ファジングを説明するための模式図である。本実施形態に係るデータ生成装置１は、所定のデータとしてのファジング用データを生成する装置である。ファジング用データとは、ファジングを行うために用いられるデータである。
【００１３】
（ファジングについて）
ファジングとは、テスト対象のソフトウェアのプログラムである対象プログラム１０２に、複数のテストデータを入力することで、その入力に対するプログラムの動作を確認して、プログラムの脆弱性を確認するテスト手法である。ファジングの説明のために、最小に作動用データＡについて説明する。作動用データＡは、ファジング用のテストデータではなく、対象プログラム１０２に正常な処理を行わせるための指令内容が含まれているデータである。作動用データＡは、文字データ、数値データ、及びバイナリデータの少なくともいずれか１種からなるデータ群Ｂを有している。作動用データＡは、複数のデータ群Ｂを有している場合があり、その場合、各データ群Ｂは、それぞれ異なる内容に関する指令内容の情報を含んでいる。
【００１４】
図２の例では、作動用データＡは、データ群Ｂ１、Ｂ２、Ｂ２、Ｂ４を有している。データ群Ｂ１、Ｂ４は、複数の０又は１で構成されるデータ（バイナリデータ）を有するデータ群であり、バイナリデータを複数配列している。データ群Ｂ２は、０から９の数値で構成される複数のデータ（数値データ）を有するデータ群であり、数値データを複数配列している。データ群Ｂ３は、ａからｚの文字で構成されるデータ（文字データ）を有するデータ群であり、文字データを複数配列している。作動用データＡにおいて、これらのデータ群Ｂ１、Ｂ２、Ｂ３、Ｂ４は、この順で配列している。ただし、図２の作動用データＡの構成は一例であり、作動用データＡは、文字データ、数値データ、及びバイナリデータの少なくともいずれか１種からなるデータ群Ｂを、少なくとも１つ有していればよい。
【００１５】
対象プログラム１０２は、作動用データＡが入力されると、所定の処理を実行する。すなわち、対象プログラム１０２は、データ群Ｂ１からＢ４に含まれるデータから指令内容を読み出し、その指令内容に従った処理を実行する。
【００１６】
ファジングを実行する場合、作動用データＡの少なくとも一部のデータ群Ｂを、ファジング用データＦに置き換えて、テストデータＴを生成する。すなわち、テストデータＴは、作動用データＡの少なくとも一部のデータ群Ｂをファジング用データＦに置き換えたデータである。ファジングを実行する際には、このテストデータＴを対象プログラム１０２に入力する。対象プログラム１０２は、このテストデータＴから指令内容を読み出して、処理を実行する。そして、ファジングでは、このテストデータＴによる対象プログラム１０２の動作を確認する。なお、この場合、内容が異なる複数のファジング用データＦを設定し、ファジング用データＦ毎に複数のテストデータＴを生成する。この複数のテストデータＴを対象プログラム１０２に順次入力して、対象プログラム１０２の動作を確認する。これにより、様々なインプットに対する対象プログラム１０２の脆弱性などを確認することができる。なお、ファジング用データＦは、異常なデータから構成されることが一般的である。異常なデータとは、対象プログラム１０２を正常に作動させる正常な作動用データＡには含まれないようなデータを指す。
【００１７】
図２の例では、ファジング用データＦとして、ファジング用データＦ１、Ｆ２、Ｆ３を生成している。そして、作動用データＡ中のデータ群Ｂ１をファジング用データＦ１に置き換えて、テストデータＴとして、テストデータＴ１を生成している。また、作動用データＡ中のデータ群Ｂ２をファジング用データＦ２に置き換えて、テストデータＴ２を生成している。また、作動用データＡ中のデータ群Ｂ３をファジング用データＦ３に置き換えて、テストデータＴ２を生成している。なお、図２の例では、ファジング用データＦ１は、複数のバイナリデータで構成されるデータ群であり、ファジング用データＦ２は、複数の数値データで構成されるデータ群であり、ファジング用データＦ３は、複数の文字データで構成されるデータ群である。ただし、これは一例であり、ファジング用データＦは、文字データ、数値データ、及びバイナリデータの少なくともいずれか１種からなるデータ群であればよい。また、図２の例では、ファジング用データＦを、同じ種類のデータを有するデータ群に置き換えていた（例えば、バイナリデータを有するファジング用データＦ１を、バイナリデータを有するデータ群Ｂ１に置き換えていた）が、これに限られず異なる種類のデータ群に置き換えてもよい。
【００１８】
このように、ファジングは、最初に複数種類のファジング用データＦを生成した後、作動用データＡの少なくとも一部をファジング用データＦに置き換えて、複数のテストデータＴを生成し、それらのテストデータＴを用いて実行される。ファジングのテスト精度の向上、すなわち脆弱性の発見精度の向上のためには、統計的に一様性のあるファジング用データＦを用いることが望ましい。従って、ファジング用データＦの算出のために、乱数関数を用いられる場合がある。すなわち、乱数関数を用いて複数の乱数を算出し、それらの乱数に基づきファジング用データＦを算出する。乱数は、その周期などが予期し難いため、乱数により算出されたファジング用データは、統計的に一様性のあるデータとなる。
【００１９】
ここで、乱数関数は複数種類あり、低精度の乱数関数もあれば、高精度の乱数関数もある。低精度の乱数関数は、乱数（ファジング用データ）の算出に要する時間は短いが、算出された乱数（ファジング用データ）の予期され難さの度合いがそこまで高くないものである。また、高精度の乱数関数は、乱数（ファジング用データ）の算出に要する時間が長くなるが、算出された乱数（ファジング用データ）の予期され難さの度合いが高いものである。ファジングを行う対象プログラムは、様々な用途が考えられるため、ファジング用データは、予期され難い度合いが低くても早く計算を終わらせたい場合や、時間をかけても予期され難い度合いを高くしたい場合など、ユーザからの要求に応じた内容で生成されることが望ましい。そこで、本実施形態に係るデータ生成装置１は、複数の乱数関数を記憶しており、ユーザがどの乱数関数を用いるかを選択して、ファジング用データＦを生成可能としている。従って、本実施形態に係るデータ生成装置１は、ユーザからの要求に応じた質を有するファジング用データを算出することが可能となる。また、ユーザが乱数関数を選択可能なので、算出したファジング用データＦが、どのような質（予期され難さ、すなわち暗号学上の安全性）のデータであるかを、ユーザが確認することができる。以下、データ生成装置１について詳細に説明する。
【００２０】
（データ生成装置の構成）
図１は、データ生成装置１のハードウェアの構成を模式的に示している。データ生成装置１は、例えばコンピュータであり、図１に示すように、入力部１０と、表示部１２（出力部）と、制御部１４と、記憶部１６とを有する。入力部１０は、ユーザからの情報が入力可能な装置であり、例えばマウス、キーボード、又はタッチパネル等である。表示部１２は、制御部１４の制御結果やユーザからの入力内容などを表示する装置であり、本実施形態では、ディスプレイやタッチパネルである。制御部１４は、演算装置、すなわちＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。記憶部１６は、制御部１４の演算内容やプログラムの情報などを記憶するメモリであり、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ（Ｆｌａｓｈ  Ｍｅｍｏｒｙ）などである。
【００２１】
記憶部１６は、精度の異なる複数種類の乱数関数（疑似乱数関数）を記憶している。ここでの精度とは、暗号学上の安全性の度合いを意味しており、記憶部１６は、算出される乱数（疑似乱数）の暗号学上の安全性の度合いが異なる、複数種類の乱数関数を記憶しているといえる。精度が高い乱数関数とは、安全性が高い（予期され難い）乱数を算出するものであり、精度が低い乱数関数とは、精度が高い乱数関数よりも安全性が低い（予期され易い）乱数を算出するものである。ただし、精度が低い乱数関数でも、一定程度の安全性は有している。例えば、本実施形態では、記憶部１６は、乱数関数Ｙ１、Ｙ２、Ｙ３を記憶している。乱数関数Ｙ１は、一番精度が高い乱数関数であり、乱数関数Ｙ３は、一番精度が低い乱数関数であり、乱数関数Ｙ２は、乱数関数Ｙ１と乱数関数Ｙ３との間の精度を有する乱数関数である。乱数関数Ｙ１を用いた場合、乱数の算出に要する時間が最も長く、乱数関数Ｙ３を用いた場合、乱数の算出に要する時間が最も短い。乱数関数Ｙ１、Ｙ２、Ｙ３としては、公知の乱数関数を用いることができる。例えば、乱数関数Ｙ１としては、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）で認定されている乱数関数を用いることができ、乱数関数Ｙ２としては、Ｔｗｏｆｉｓｈを用いることができ、乱数関数Ｙ３としては、ＲＡＮＤ関数を用いることができるが、用いる乱数関数は任意に設定できる。また、記憶部１６が記憶している乱数関数の数も、複数であれば任意である。
【００２２】
データ生成装置１は、制御部１４が、記憶部１６が記憶している乱数関数に基づき、対象機器１００が記憶している対象プログラム１０２のためのファジング用データＦを生成する。対象機器１００は、例えばカーナビゲーションシステムなどの車載機器であるが、これに限られず、任意の機器であってよい。同様に、対象プログラム１０２も、車載機器用のプログラムに限られず、任意の内容のプログラムであってよい。
【００２３】
以下、制御部１４の機能構成について説明する。図３は、本実施形態に係る制御部のブロック図である。図３に示すように、制御部１４は、表示制御部２０と、乱数関数読出部２２と、入力データ取得部２４と、予測値算出部２６と、選択乱数関数取得部２７と、データ算出部２８と、テストデータ設定部３０と、実行部３２とを有する。表示制御部２０と、乱数関数読出部２２と、入力データ取得部２４と、予測値算出部２６と、選択乱数関数取得部２７と、データ算出部２８と、テストデータ設定部３０と、実行部３２とは、記憶部１６に記憶されたソフトウェア（プログラム）である。
【００２４】
表示制御部２０は、表示部１２が表示する内容、すなわち画面を制御する。乱数関数読出部２２は、記憶部１６が記憶している乱数関数を読み出す。
【００２５】
入力データ取得部２４は、入力部１０に入力されたユーザからの各種入力データの内容を取得する。入力データ取得部２４は、置換データ取得部４０と、算出用データ取得部４２と、設定値取得部４４とを有する。置換データ取得部４０は、ユーザから入力部１０に入力された置換データの情報を取得する。算出用データ取得部４２は、ユーザから入力部１０に入力された算出用データ（データ種類情報及びデータ量情報）の情報を取得する。設定値取得部４４は、ユーザから入力部１０に入力された設定値（設定時間又は設定データ総量）の情報を取得する。これらの入力データ、すなわち、置換データ、算出用データ、設定値の内容については、後述する。
【００２６】
予測値算出部２６は、入力データ取得部２４が取得した入力データに基づき、乱数関数を用いてファジング用データＦを算出した場合の予測値を算出する。予測値の算出については後述する。
【００２７】
選択乱数関数取得部２７は、記憶部１６が記憶する乱数関数のうち、ユーザから選択された乱数関数の情報を、入力部１０への入力に基づき取得する。データ算出部２８は、ユーザが設定した乱数関数を用いて、実際にファジング用データＦを算出する。テストデータ設定部３０は、作動用データＡの少なくとも一部を、データ算出部２８が算出したファジング用データＦに置き換えて、テストデータＴを算出する。実行部３２は、テストデータ設定部３０が算出したテストデータＴを対象プログラム１０２に入力して、ファジングを実行する。
【００２８】
制御部１４は、予測値算出部２６により、乱数関数を用いてファジング用データＦを算出した場合の予測値を算出する。ユーザは、この予測値に基づき、どの乱数関数を用いてファジング用データＦを生成させるかを選択する。そして、制御部１４は、データ算出部２８により、ユーザに選択された乱数関数で、実際にファジング用データを算出する。このように、制御部１４は、予測値により、ユーザに用いる乱数関数の選択基準を与え、その選択基準に基づくユーザの判断により、実際のファジング用データＦを生成する。
【００２９】
制御部１４は、ファジング用データＦの作成フローが、ユーザから入力された入力データの種類によって異なる。具体的には、制御部１４は、ユーザが入力部１０に置換データを入力した場合と、ユーザが入力部１０に算出用データを入力した場合とで、ファジング用データＦの作成フローが異なる。置換データとは、作動用データＡが有するデータ群Ｂのうち、ファジング用データＦに置き換えるデータ群Ｂを指定する情報である。すなわち、図２のテストデータＴ１の場合、置換データとは、データ群Ｂ１である。一方、算出用データとは、ファジング用データＦに置き換えるデータ群Ｂを指定するものではなく、データ量情報とデータ種類情報とを含むものである。データ量情報とは、ユーザによって指定された、算出予定の１つのファジング用データＦのデータ量を示す情報である。また、データ種類情報とは、算出予定のファジング用データの種類、すなわちバイナリデータであるか数値データであるか文字データであるかを示す情報である。
【００３０】
従って、置換データが入力される場合とは、予め定められた作動用データＡにおいて、その作動用データＡ内でファジング用データＦに置き換える箇所を、ユーザが指定したケースである。一方、算出用データが入力される場合とは、例えばファジングを行うための作動用データＡを予め定めず、算出予定のファジング用データＦの量や種類を、ユーザが直接指定したケースである。以下、置換データが入力される場合の制御部１４の処理を、置換データ時処理とし、算出用データが入力される場合の制御部１４の処理を、算出用データ時処理とする。以下、それぞれの場合の制御部１４の処理について説明する。
【００３１】
（置換データ時処理）
置換データ時処理について説明する。図４は、置換データが入力された場合のファジング用データの作成フローを説明する説明図である。図４に示すように、ユーザが置換データを入力部１０に入力すると、制御部１４は、置換データ取得部４０により、ユーザが入力した置換データの情報を取得する（ステップＳ１０）。上述のように、置換データとは、作動用データＡが有するデータ群Ｂのうち、ファジング用データＦに置き換えるデータ群Ｂを示している。この場合、記憶部１６は、この作動用データＡの情報を記憶している。表示制御部２０は、ユーザが選択した作動用データＡの情報を記憶部１６から読出し、作動用データＡが有するデータ群Ｂの情報を表示する。ユーザは、このデータ群Ｂの情報に基づき、ファジング用データＦに置き換えるデータ群Ｂ、すなわち置換データを選択し、入力部１０に入力する。置換データ取得部４０は、この入力部１０に入力された置換データの情報を取得する。
【００３２】
置換データの情報を取得した後、制御部１４は、設定値取得部４４により、ユーザから入力部１０に入力された設定値の情報を取得する（ステップＳ１２）。設定値とは、設定時間又は設定データ総量を指す。設定時間とは、ファジング用データＦを算出する時間であって、ユーザが指定した値を指す。すなわち、ユーザは、入力部１０に設定時間を入力した場合は、算出予定のファジング用データＦを生成するための時間を指定することとなる。
【００３３】
一方、設定データ総量とは、算出予定のファジング用データＦのデータ総量であって、ユーザが指定した値を指す。上述のように、ファジング用データＦは、複数算出される場合がある。１つのファジング用データＦとは、１つのテストデータＴに用いられるファジング用データＦ（データ群）を指し、図２の例では、ファジング用データＦ１、Ｆ２、Ｆ３が、それぞれ１つのファジング用データである。設定データ総量とは、算出予定のファジング用データＦのデータ総量であり、複数のファジング用データＦのデータ総量を指定した値である。本実施形態において、ユーザは、算出予定のファジング用データＦの個数を、設定データ総量として入力する。制御部１４は、置換データを取得することで、１つのファジング用データＦのデータ量を把握している。従って、設定値取得部４４は、ファジング用データＦの個数が指定されることにより、算出予定のファジング用データＦのデータ総量を取得することができる。ただし、設定データ総量は、算出予定のファジング用データＦの個数でなく、ファジング用データＦの総データ量そのもの（何ギガバイトなど）として入力されてもよい。
【００３４】
設定値取得部４４は、上記のような設定時間又は設定データ総量のいずれかを取得する。ユーザは、所定時間内で算出されるファジング用データＦのデータ総量（個数）を、予測値として知りたい場合は、設定時間を入力する。一方、ユーザは、あるデータ総量（個数）のファジング用データＦを算出する場合に要する時間を、予測値として知りたい場合は、設定データ総量（個数）を入力する。すなわち、設定値取得部４４は、入力部１０に設定時間が入力された場合に、入力された設定時間の情報を取得し、入力部１０に設定データ総量が入力された場合に、入力された設定データ総量の情報を取得する。
【００３５】
設定値（設定時間又は設定データ総量）を取得した後、制御部１４は、乱数関数読出部２２により、記憶部１６から乱数関数の関係情報を読み出し（ステップＳ１４）、予測値算出部２６により、乱数関数毎にファジング用データＦの予測値を算出する（ステップＳ１６）。関係情報とは、ある乱数関数を用いた場合に、ファジング用データＦの算出に用いる時間と算出されるデータ量との相関関係を示す情報であり、言い換えれば、単位時間毎に算出可能なファジング用データＦのデータ量を示す情報である。記憶部１６は、この関係情報を、例えばテーブルとして、乱数関数毎に記憶している。乱数関数読出部２２は、記憶部１６が記憶している全ての乱数関数について、関係情報を読み出す。
【００３６】
予測値算出部２６は、置換データと、設定値（設定時間又は設定データ総量）と、関係情報とに基づき、予測値を算出する。予測値とは、データ総量予測値、又は、時間予測値のいずれかである。予測値算出部２６は、設定値として設定データ総量が取得されていた場合、関係情報に基づき、すなわち設定データ総量を関係情報に代入して、設定データ総量分のファジング用データＦを算出した場合に要する時間の予測値を、時間予測値として算出する。
【００３７】
一方、予測値算出部２６は、設定値として設定時間が取得されていた場合、関係情報に基づき、すなわち設定時間を関係情報に代入して、設定時間において算出可能なファジング用データＦのデータ総量の予測値を、データ総量予測値として算出する。ここで、置換データは、１つのファジング用データＦのデータの種類とデータ量とを示す情報である。従って、予測値算出部２６は、算出可能なファジング用データＦのデータ総量を、例えば１つのファジング用データＦのデータ量で除することで、設定時間で算出可能なファジング用データＦの個数の予測値を算出することができる。すなわち、予測値算出部２６は、データ総量予測値として、設定時間で算出可能なファジング用データＦの個数の予測値を算出する。ただし、予測値算出部２６は、データ総量予測値として、設定時間で算出可能なファジング用データＦのデータ総量そのもの（何ギガバイト）を、算出してもよい。
【００３８】
予測値算出部２６は、この時間予測値又はデータ総量予測値を、記憶部１６が記憶している乱数関数の全てについて算出する。ただし、予測値算出部２６は、複数の乱数関数のうち少なくともいずれか１つの乱数関数について、時間予測値又はデータ総量予測値を算出してもよい。この場合、例えば、ユーザが予測値を知りたい乱数関数を指定し、乱数関数読出部２２が、指定された乱数関数の関係情報を読み出すこととなる。
【００３９】
このように、予測値算出部２６は、設定値取得部４４が設定時間を取得した場合に、設定時間内で算出可能なファジング用データＦのデータ総量予測値を算出する。一方、予測値算出部２６は、設定値取得部４４が設定データ総量を取得した場合に、設定データ総量分のファジング用データＦの算出に要する時間予測値を算出する。表示制御部２０は、予測値算出部２６が算出したデータ総量予測値又は時間予測値を表示させる。これにより、ユーザは、ある乱数関数を用いた場合において、設定時間で算出可能なファジング用データＦのデータ量、又は設定データ総量のファジング用データＦの算出に要する時間を、実際の算出前に把握することができる。ユーザは、このデータ総量予測値又は時間予測値に基づき、用途に応じて、実際のファジング用データＦの算出に用いる乱数関数を選択することができる。ユーザは、入力部１０に、選択した乱数関数を指定する情報を入力する。
【００４０】
ユーザが乱数関数を指定する情報を入力したら、制御部１４は、選択乱数関数取得部２７により、入力部１０に入力された乱数関数の情報を取得して、乱数関数読出部２２により、ユーザが選択した乱数関数を読み出し（ステップＳ１８）、データ算出部２８により、指定された乱数関数を用いてファジング用データＦを算出する（ステップＳ２０）。データ算出部２８は、指定された乱数関数で乱数を算出し、その乱数によりファジング用データＦを算出する。
【００４１】
ここで、データ算出部２８は、ファジング用データＦの算出において、予測値の算出の際に用いられた置換データ及び設定値（設定時間又は設定データ総量）を用いる。すなわち、データ算出部２８は、置換データ取得部４０が取得済みの置換データに基づき、算出するファジング用データＦのデータ種類（バイナリデータなど）と、算出するファジング用データＦの単位データ量（１つのファジング用データＦのデータ量）とを、設定する。そして、データ算出部２８は、指定された乱数関数を用いて、設定したデータ種類及び単位データ量でのファジング用データＦを、設定時間で算出する。又は、データ算出部２８は、指定された乱数関数を用いて、設定したデータ種類及び単位データ量でのファジング用データＦを、設定データ総量の分、すなわち設定データで指定された個数分だけ、算出する。
【００４２】
このように、データ算出部２８は、予測値の算出において入力された置換データと設定値を用いて、ファジング用データＦを算出する。ただし、実際にファジング用データＦを算出する際に、ユーザは、新たな置換データと設定値とを、入力部１０に入力してもよい。置換データ取得部４０は、この新たに設定された置換データを取得し、データ算出部２８は、この新たな置換データに基づき、算出するファジング用データＦのデータ種類と単位データ量とを設定する。また、設定値取得部４４は、新たに設定された設定値（設定時間又は設定データ総量）を取得する。データ算出部２８は、この新たな設定値に基づき、ファジング用データＦを算出する時間、又は算出するファジング用データＦの総データ量（個数）を設定する。データ算出部２８は、これらの設定により、指定された乱数関数を用いて、ファジング用データＦを算出する。
【００４３】
ファジング用データＦを算出した後、制御部１４は、テストデータ設定部３０により、テストデータＴを設定する（ステップＳ２２）。テストデータ設定部３０は、記憶部１６から、作動用データＡを読み出す。テストデータ設定部３０は、置換データに基づき、ファジング用データＦにおいて置換するデータ群Ｂを検出し、検出したデータ群Ｂをファジング用データＦに置換して、テストデータＴを算出する。ファジング用データＦが複数個算出されている場合は、テストデータ設定部３０は、ファジング用データＦ毎に、テストデータＴを算出して、置換されたファジング用データＦが互いに異なる複数のテストデータＴを算出する。
【００４４】
テストデータＴを設定した後、制御部１４は、設定したテストデータＴを対象プログラム１０２に入力することで、ファジングを実行する（ステップＳ２４）。制御部１４は、ファジングを実行した後、対象プログラム１０２の動作を判定する（ステップＳ２６）。これにより、置換データ時処理は終了する。制御部１４は、ファジング用データＦに置き換えられた対象プログラム１０２の動作内容に基づき、対象プログラム１０２の動作に問題があるか、問題がないか、又は判定が不可能であるかのいずれかの判定を行う。例えば、制御部１４は、対象プログラム１０２が、ファジング用データＦに置き換えられた場合に、フリーズしたり予期しない不適切な挙動を示したりする場合に、対象プログラム１０２の動作に問題があると判定する。また、制御部１４は、対象プログラム１０２が、ファジング用データＦに置き換えられた場合に、データが置き換えられているために動作実行命令を受け付けなかったり、予期している挙動を示したりする場合などに、対象プログラム１０２の動作に問題がないと判定する。また、制御部１４は、対象プログラム１０２が、ファジング用データＦに置き換えられた場合に、予期しない挙動であるが問題があると判定するまでには至らない場合などに、判定が不可能であるとする。この制御部１４の判定基準は、予め設定可能である。
【００４５】
このように、置換データ時処理においては、記憶部１６が作動用データＡの情報を記憶しているため、データ生成装置１は、作動用データＡ中のどのデータ群Ｂをファジング用データＦに置き換えるかを、置換データとしてユーザに指定させることができる。この場合、ユーザは、データ群Ｂのデータ種類やデータ量を把握していない場合でも、作動用データＡのどの位置におけるデータ群Ｂ、すなわちどのような指令内容を有するデータ群Ｂを、ファジング用データＦに置き換えるかを指定するだけで、データ生成装置１にファジング用データＦを作成させることができる。また、この場合、記憶部１６が作動用データＡの情報を記憶しているため、データ生成装置１は、ファジング用データＦの算出に加え、テストデータＴも設定することができ、さらに、ファジングも実施することができる。ただし、データ生成装置１は、ファジング用データＦを算出するものであれば、必ずしもテストデータＴの設定及びファジングの実行を行わなくてもよい。
【００４６】
また、置換データ時処理においては、記憶部１６が作動用データＡの情報を記憶しているため、予測値算出部２６は、テストデータＴを設定する時間とファジングを実施する時間とについても、予測可能である。従って、予測値算出部２６は、ファジング用データＦを算出するだけの時間に限られず、ファジング用データＦを算出する時間とテストデータＴを設定する時間とを合算した時間を、時間予測値として算出してもよい。また、予測値算出部２６は、ファジング用データＦを算出する時間とテストデータＴを設定する時間とファジングを実施する時間とを合算した時間を、時間予測値として算出してもよい。
【００４７】
（算出用データ時処理）
次に、算出用データ時処理について説明する。図５は、算出用データが入力された場合のファジング用データの作成フローを説明する説明図である。図５に示すように、ユーザが算出用データを入力部１０に入力すると、制御部１４は、算出用データ取得部４２により、ユーザが入力した算出用データの情報を取得する（ステップＳ３０）。上述のように、算出用データとは、ユーザによって入力されたデータ量情報とデータ種類情報とを含むものである。データ量情報とは、算出予定のファジング用データＦの単位当たりのデータ量、すなわち１つのファジング用データＦのデータ量を示す情報である。また、データ種類情報とは、算出予定のファジング用データの種類（バイナリデータなど）を示す情報である。ここでのデータ種類情報は、データの位置と種類とを含む情報であってもよい。すなわち、ファジング用データＦにおいて、どの位置におけるデータが、どのような種類のデータであるかを指定する情報であってもよい。
【００４８】
このように、算出用データ時処理においては、ユーザが、データ量情報とデータ種類情報との両方を、入力部１０に入力する。算出用データ取得部４２は、入力部１０に入力されたデータ量情報とデータ種類情報とを取得する。
【００４９】
データ量情報とデータ種類情報とを取得した後、制御部１４は、設定値取得部４４により設定値の情報を取得し（ステップＳ３２）、乱数関数読出部２２により、記憶部１６から乱数関数の関係情報を読み出す（ステップＳ３４）。このステップＳ３２は、置換データ時処理における図４のステップＳ１２と同じ処理であり、ステップＳ３４は、置換データ時処理における図４のステップＳ１４と同じ処理であるため、説明を省略する。
【００５０】
関係情報を読み出した後、制御部１４は、乱数関数毎に予測値を算出する（ステップＳ３６）。予測値算出部２６は、算出用データ（データ量情報及びデータ種類情報）と、設定値（設定時間又は設定データ総量）と、関係情報とに基づき、予測値を算出する。算出用データ時処理における予測値算出部２６の予測値の算出処理は、置換データの代わりに算出用データを用いている点で、置換データ時処理における予測値の算出処理と異なるが、それ以外の点では同じ処理となる。
【００５１】
具体的には、算出用データ時処理において、予測値算出部２６は、ユーザによって指定されたデータ量情報から、算出予定のファジング用データＦの単位データ量、すなわち１つのファジング用データＦのデータ量を設定する。そして、予測値算出部２６は、ユーザによって指定されたデータ種類情報から、算出予定のファジング用データＦのデータの種類（バイナリデータなど）を設定する。また、予測値算出部２６は、データ量情報及びデータ種類情報から、算出予定のファジング用データＦにおいて、どの位置にどの種類のデータが設定されるかを設定する。
【００５２】
そして、予測値算出部２６は、設定値として設定データ総量が取得されていた場合、関係情報に基づき、データ量情報及びデータ種類情報で指定されたファジング用データＦを、設定データ総量分だけ算出した場合に要する時間の予測値を、時間予測値として算出する。なお、設定データ総量は、算出予定のファジング用データＦの個数として設定されており、予測値算出部２６は、ユーザによって指定された単位当たりのファジング用データＦのデータ量を取得している。従って、予測値算出部２６は、設定データ総量から、算出予定のファジング用データＦの総量を把握して、その総量を関係情報に代入して、時間予測値を算出することができる。なお、設定データ総量は、置換データ時処理と同様に、算出予定のファジング用データＦの個数でなく、ファジング用データＦの総データ量そのもの（何ギガバイトなど）として入力されてもよい。
【００５３】
一方、予測値算出部２６は、設定値として設定時間が取得されていた場合、関係情報に基づき、設定時間において算出可能なファジング用データＦのデータ総量の予測値を、データ総量予測値として算出する。予測値算出部２６は、例えば、算出可能なファジング用データＦのデータ総量を、データ量情報及びデータ種類情報で指定されたファジング用データＦの単位データ量で除することで、設定時間で算出可能なファジング用データＦの個数の予測値を算出することができる。すなわち、予測値算出部２６は、データ総量予測値として、設定時間で算出可能なファジング用データＦの個数の予測値を算出する。ただし、予測値算出部２６は、データ総量予測値として、設定時間で算出可能なファジング用データＦのデータ総量そのものを、算出してもよい。
【００５４】
このように、予測値算出部２６は、算出用データ時処理においても、ファジング用データＦのデータ総量予測値、又は、ファジング用データＦの算出に要する時間予測値を算出する。これにより、ユーザは、ある乱数関数を用いた場合において、設定時間で算出可能なファジング用データＦのデータ総量、又は設定データ総量のファジング用データＦの算出に要する時間を、実際の算出前に把握することができる。ユーザは、このデータ総量予測値又は時間予測値に基づき、用途に応じて、実際のファジング用データＦの算出に用いる乱数関数を選択することができる。そして、ユーザは、入力部１０に、選択した乱数関数を指定する情報を入力する。
【００５５】
ユーザが乱数関数を指定する情報を入力したら、制御部１４は、選択乱数関数取得部２７により、ユーザが選択して入力部１０に入力された乱数関数の情報を取得して、乱数関数読出部２２により、ユーザが指定した乱数関数を読み出し（ステップＳ３８）、データ算出部２８により、指定された乱数関数を用いてファジング用データＦを算出する（ステップＳ４０）。データ算出部２８は、指定された乱数関数で乱数を算出し、その乱数によりファジング用データＦを算出する。
【００５６】
ここで、データ算出部２８は、ファジング用データＦの算出において、予測値の算出の際に用いられた算出用データ（データ量情報及びデータ種類情報）と、設定値（設定時間又は設定データ総量）とを用いる。すなわち、データ算出部２８は、算出用データ取得部４２が取得済みのデータ量情報及びデータ種類情報に基づき、算出するファジング用データＦのデータ種類（バイナリデータなど）と、算出するファジング用データＦの単位データ量とを、設定する。そして、データ算出部２８は、設定値取得部４４が設定時間を取得している場合は、指定された乱数関数を用いて、設定したデータ種類及び単位データ量でのファジング用データＦを、設定時間の間で算出する。また、データ算出部２８は、設定値取得部４４が設定データ総量を取得している場合は、指定された乱数関数を用いて、設定したデータ種類及び単位データ量でのファジング用データＦを、設定データ総量の分、すなわち設定データで指定された個数分だけ、算出する。
【００５７】
算出用データ時処理は、ステップＳ４０のファジング用データＦの算出で終了する。算出用データ時処理ただし、算出用データ時処理においても、記憶部１６が作動用データＡを記憶していれば、置換データ時処理と同様に、テストデータＴを設定し、ファジングを実行してもよい。この場合、例えば、ユーザが作動用データＡ内のどのデータ群Ｂを、ファジング用データＦに置換するか指定する。
【００５８】
このように、算出用データ時処理においては、ユーザがファジング用データＦのデータ種類と単位データ量とを指定する。データ生成装置１は、このユーザの指定に基づいて生成されるファジング用データＦの予測値を算出し、ユーザの指定に基づいて、ファジング用データＦを算出する。従って、算出用データ時処理の場合、データ生成装置１は、ユーザの指定に応じた汎用性の高いファジング用データＦを生成することができる。また、データ生成装置１は、記憶部１６が作動用データＡを記憶していなくても、ユーザの要求に応じたファジング用データＦを生成することができる。
【００５９】
本実施形態では、入力データ取得部２４が、置換データ及び算出用データの両方を取得可能になっている。従って、データ生成装置１は、ユーザに、置換データ時処理と算出用データ時処理のいずれを実行するかを選択させることができる。ただし、データ生成装置１は、入力データ取得部２４が、置換データ及び算出用データのいずれかを取得可能であってよく、置換データ時処理と算出用データ時処理とのいずれのみを実行可能であってもよい。
【００６０】
また、本実施形態では、設定値取得部４４が、設定時間及び設定データ総量の両方を取得可能になっている。そして、予測値算出部２６は、設定値取得部４４が設定時間を取得した場合に、設定時間内で算出可能なファジング用データＦのデータ総量予測値を算出し、設定値取得部４４が設定データ総量を取得した場合に、設定データ総量分のファジング用データＦの算出に要する時間予測値を算出する。従って、データ生成装置１は、ユーザに、データ総量予測値か時間予測値のいずれを算出させるかを選択することができ、また、データ総量予測値か時間予測値の両方を算出させることもできる。従って、データ生成装置１は、ユーザが時間を優先するか質（予期され難さ）を優先するかなどの、優先順位に応じた予測値を算出することができる。ただし、データ生成装置１は、設定値取得部４４が、設定時間及び設定データ総量のいずれかを取得可能であってよく、予測値算出部２６が、データ総量予測値及び時間予測値のいずれかを算出可能であってよい。
【００６１】
以上説明したように、本実施形態に係るデータ生成装置１は、記憶部１６と、入力データ取得部２４と、予測値算出部２６と、選択乱数関数取得部２７と、データ算出部２８とを有する。記憶部１６は、複数種類の乱数関数を記憶する。入力データ取得部２４は、設定時間及び設定データ総量の少なくともいずれかを、ユーザの入力により取得する。設定時間は、所定のデータ（本実施形態ではファジング用データＦ）を生成する時間の設定値である。設定データ総量は、生成する所定のデータ（本実施形態ではファジング用データＦ）のデータ総量の設定値である。予測値算出部２６は、データ総量予測値及び時間予測値の、少なくともいずれかを算出する。データ総量予測値は、乱数関数を用いて設定時間で生成可能な、所定のデータ（本実施形態ではファジング用データＦ）のデータ総量の予測値である。時間予測値は、乱数関数を用いて設定データ総量分の所定のデータ（本実施形態ではファジング用データＦ）を生成した場合に要する時間の予測値である。選択乱数関数取得部２７は、複数種類の乱数関数のうちユーザが選択した乱数関数の情報を取得する。データ算出部２８は、ユーザに選択された乱数関数を用いて、所定のデータ（本実施形態ではファジング用データＦ）を生成する。
【００６２】
このデータ生成装置１は、複数の乱数関数を記憶している。そして、データ生成装置１は、実際にファジング用データＦを算出する前に、この乱数関数を用いてファジング用データＦを算出した場合に要する時間予測値、又は、ファジング用データＦのデータ総量（個数など）の予測値を算出する。従って、ユーザは、この予測値を参考にして、複数の乱数関数のうち、どの乱数関数を用いてファジング用データＦを算出するかを決定することができる。データ生成装置１は、ユーザが選択した乱数関数を用いてファジング用データＦを算出する。従って、このデータ生成装置１によると、ユーザが、用途に応じて算出するファジング用データの質（予期され難さ）を、選択可能とすることができる。また、このデータ生成装置１によると、算出されたファジング用データの質を、認識することが可能になる。なお、本実施形態では、データ生成装置１は、所定のデータとしてファジング用データＦを生成している。しかし、データ生成装置１が生成する所定のデータは、ファジング用データＦに限られない。データ生成装置１が生成する所定のデータは、乱数関数を用いて算出されるデータであれば任意である。すなわち、データ生成装置１によると、ユーザが、用途に応じて算出するデータの質（予期され難さ）を、選択可能とすることができるといえる。
【００６３】
また、予測値算出部２６は、入力データ取得部２４が設定時間を取得した場合に、データ総量予測値を算出し、入力データ取得部２４が設定データ総量を取得した場合に、時間予測値を算出する。このデータ生成装置１は、ユーザの入力に応じて、データ総量予測値及び時間予測値を算出する。このデータ生成装置１によると、ユーザが、ファジング用データＦの算出時間や、算出される総量の予測値に基づき、乱数関数を選択可能とすることができる。従って、このデータ生成装置１によると、ユーザが、算出するファジング用データの質を、より好適に選択可能とすることができる。
【００６４】
また、記憶部１６は、ファジングを行う対象プログラムを正常に作動させるための作動用データの情報を記憶している。そして、入力データ取得部２４は、置換データの情報を、ユーザの入力により取得する。置換データは、作動用データＡに含まれるデータ群Ｂのうち、ファジング用データＦに置き換えるデータである。予測値算出部２６は、置換データの情報にも基づき、データ総量予測値及び時間予測値の少なくともいずれかを算出する。このデータ生成装置１によると、ユーザが、作動用データＡ中のデータ群Ｂのデータ種類やデータ量を把握していない場合でも、作動用データＡのどの位置におけるデータ群Ｂをファジング用データＦに置き換えるかを指定するだけで、ファジング用データＦを作成させることができる。従って、このデータ生成装置１によると、ユーザが要求する質に応じて、ファジング用データＦを容易に作成することができる。
【００６５】
また、入力データ取得部２４は、算出するファジング用データＦの算出用データを、ユーザの入力により取得する。算出用データは、データ種類情報とデータ量情報とを含む。データ種類情報は、算出するファジング用データＦがバイナリデータであるか数値データであるか文字データであるかを示す情報である。また、データ量情報は、１つのテストデータＴ用のファジング用データＦのデータ量（単位データ量）である。予測値算出部２６は、データ種類情報とデータ量情報とにも基づき、データ総量予測値及び時間予測値の少なくともいずれかを算出する。このデータ生成装置１によると、ユーザの指定に応じた汎用性の高いファジング用データＦを生成することができる。
【００６６】
（表示画面について）
以下、表示部１２が表示する画面について説明する。表示部１２は、表示制御部２０の制御により、モード入力画面５０と、置換データ入力画面５２と、算出用データ入力画面５４と、設定値入力画面５６と、予測値表示画面５８とを表示する。以下、各画面について説明する。
【００６７】
図６は、モード入力画面の模式的な図を示す。表示制御部２０は、ファジング用データＦを作成する場合、最初に、表示部１２に、モード入力画面５０を表示させる。図６に示すように、モード入力画面５０は、置換データ入力部５０Ａと、算出用データ入力部５０Ｂとを、並んで表示させる。置換データ入力部５０Ａは、置換データ時処理を始めるための表示である。表示制御部２０は、ユーザによる置換データ入力部５０Ａの入力（選択）を検出すると、表示部１２の表示を、モード入力画面５０から、置換データ入力画面５２に切り替える。また、算出用データ入力部５０Ｂは、算出用データ時処理を始めるための表示である。表示制御部２０は、ユーザによる算出用データ入力部５０Ｂの入力（選択）を検出すると、表示部１２の表示を、モード入力画面５０から、算出用データ入力画面５４に切り替える。すなわち、表示制御部２０は、ユーザの入力に基づき、表示部１２の表示を、モード入力画面５０から、置換データ入力画面５２と算出用データ入力画面５４とのいずれかに切り替える。
【００６８】
なお、置換データ入力部５０Ａ及び算出用データ入力部５０Ｂへのユーザの入力は、ユーザによる入力部１０への操作によって行われる。例えば、ユーザは、入力部１０としてのマウスの画面上のポインタを、置換データ入力部５０Ａ又は算出用データ入力部５０Ｂに位置させた状態で、クリック操作を行うことで、置換データ入力部５０Ａ又は算出用データ入力部５０Ｂを選択する。また、入力部１０がタッチパネルの場合は、例えば、ユーザは、指などを置換データ入力部５０Ａ又は算出用データ入力部５０Ｂに押圧することで、置換データ入力部５０Ａ又は算出用データ入力部５０Ｂを選択する。以降のユーザの入力も、同様にして行われる。
【００６９】
図７は、置換データ入力画面の模式的な図を示す。置換データ入力画面５２は、置換データの情報をユーザが入力するための画面である。図７に示すように、置換データ入力画面５２は、置換データ設定入力部５２Ａを表示させる。置換データ設定入力部５２Ａは、ユーザが置換データを入力するための表示である。置換データ設定入力部５２Ａは、例えば、作動用データＡが有する複数のデータ群Ｂを、一覧表示する。ユーザは、置換データ設定入力部５２Ａが表示する複数のデータ群Ｂから、置換データに置き換えるデータ群Ｂを入力（選択）する。これにより、置換データが入力される。置換データ取得部４０は、置換データ入力画面５２においてユーザが選択したデータ群Ｂを、置換データとして取得する。表示制御部２０は、置換データ入力画面５２が表示されている状態で置換データが入力された場合に、表示部１２の表示を、置換データ入力画面５２から設定値入力画面５６に切り替える。
【００７０】
図８は、算出用データ入力画面の模式的な図を示す。算出用データ入力画面５４は、算出用データ、すなわち、データ種類情報とデータ量情報とを、ユーザが入力するための画面である。図８に示すように、算出用データ入力画面５４は、データ種類情報入力部５４Ａと、データ量情報入力部５４Ｂとを表示させる。データ種類情報入力部５４Ａは、ユーザがデータ種類情報を入力するための表示である。データ種類情報入力部５４Ａは、算出予定のファジング用データＦにおける、バイナリデータ、数値データ、文字データそれぞれの数（又はデータ量）が、入力可能となっている。また、データ種類情報入力部５４Ａは、バイナリデータ、数値データ、文字データそれぞれのファジング用データＦにおける位置（順番）も、入力可能となっている。ユーザは、データ種類情報入力部５４Ａを選択した状態で、バイナリデータ、数値データ、文字データそれぞれの数（又はデータ量）と、それらの位置を入力する。これにより、データ種類情報が入力される。算出用データ取得部４２は、算出用データ入力画面５４で入力されたデータ種類情報を取得する。
【００７１】
また、データ量情報入力部５４Ｂは、ユーザがデータ量情報を入力するための表示である。データ量情報入力部５４Ｂは、算出予定のファジング用データＦの単位データ量の情報、すなわちデータ量情報が、入力可能となっている。データ量情報入力部５４Ｂは、データ種類情報で入力されたデータの種類毎に、データ量を入力可能となっている。ユーザは、例えばデータ種類情報を入力した後に、データ量情報入力部５４Ｂを選択した状態で、ファジング用データＦの単位データ量、より詳しくは、データの種類毎のデータ量を、入力する。これにより、データ量情報が入力される。算出用データ取得部４２は、算出用データ入力画面５４で入力されたデータ量情報を取得する。
【００７２】
表示制御部２０は、算出用データ入力画面５４が表示されている状態でデータ種類情報及びデータ量情報が入力された場合に、表示部１２の表示を、算出用データ入力画面５４から設定値入力画面５６に切り替える。
【００７３】
なお、表示部１２は、置換データ入力画面５２と、算出用データ入力画面５４とを、別々の画面で表示しているが、１画面で表示してもよい。この場合、例えば、モード入力画面５０を設けず、１画面に、置換データ設定入力部５２Ａと、データ種類情報入力部５４Ａ及びデータ量情報入力部５４Ｂとを表示する。そして、ユーザによる置換データ設定入力部５２Ａへの入力、又は、データ種類情報入力部５４Ａ及びデータ量情報入力部５４Ｂへの入力により、上記と同様の処理を行う。
【００７４】
図９は、設定値入力画面の模式的な図である。設定値入力画面５６は、設定時間及び設定データ総量の少なくともいずれかを、ユーザが入力するための画面である。図９に示すように、設定値入力画面５６は、設定時間入力部５６Ａと、設定データ総量入力部５６Ｂと、予測値算出指示部５６Ｃとを、並んで表示する。設定時間入力部５６Ａは、ユーザが設定時間を入力するための表示であり、データ総量予測値を算出するための設定時間を入力可能となっている。また、設定データ総量入力部５６Ｂは、ユーザが設定データ総量を入力するための表示であり、時間予測値を算出するための設定データ総量を入力可能となっている。本実施形態では、ユーザが、設定時間入力部５６Ａと、設定データ総量入力部５６Ｂとのいずれかを選択可能となっている。ユーザが設定時間入力部５６Ａと、設定データ総量入力部５６Ｂとのいずれかを選択すると、選択されなかった方の表示の色が暗くなり、選択できない状態となる。ただし、選択を解除すると、選択できない状態も解除される。図９の例では、設定時間入力部５６Ａを選択した状態を例示している。
【００７５】
そして、ユーザは、設定時間入力部５６Ａを選択した状態で、設定時間を入力する。これにより、設定時間が入力され、設定値取得部４４が、設定時間の情報を取得する。また、ユーザは、設定データ総量入力部５６Ｂを選択した状態で、設定データ総量を入力する。これにより、設定データ総量が入力され、設定値取得部４４が、設定データ総量の情報を取得する。
【００７６】
予測値算出指示部５６Ｃは、ユーザが予測値（時間予測値又はデータ総量予測値）の算出を指示するための表示である。予測値算出指示部５６Ｃは、設定時間又は設定データ総量が入力される前は、例えば表示の色が暗くなっており、入力できない状態となっている。予測値算出指示部５６Ｃは、設定時間又は設定データ総量が入力されると、例えば表示の色が明るくなり、ユーザによる入力が可能な状態となる。設定時間又は設定データ総量が入力された状態で、ユーザが予測値算出指示部５６Ｃを入力すると、予測値算出部２６が、予測値の算出を開始する。ただし、予測値算出指示部５６Ｃは必ずしも設けられていなくてもよい。この場合、設定値入力画面５６において設定時間又は設定データ総量が入力されると、予測値算出部２６は、予測値の算出を開始する。
【００７７】
なお、設定値入力画面５６は、設定時間入力部５６Ａと、設定データ総量入力部５６Ｂとを、一画面で表示しているが、これらを表示する画面を切り替えて表示してもよい。この場合、例えば、設定時間を入力するか設定データ総量を入力するかをユーザに選択させる画面を設け、ユーザの選択により、設定時間入力部５６Ａを表示する画面、又は、設定データ総量入力部５６Ｂを表示する画面のいずれかを表示させる。
【００７８】
予測値算出部２６が予測値の算出を終了すると、表示制御部２０は、表示部１２に予測値表示画面５８を表示させる。すなわち、表示制御部２０は、予測値算出部２６がデータ総量予測値及び時間予測値の少なくともいずれかを算出すると、予測値表示画面５８を表示させる。予測値表示画面５８は、データ総量予測値及び時間予測値の少なくともいずれかを、複数の乱数関数毎に表示する。予測値表示画面５８は、データ総量予測値表示画面５８Ａと、時間予測値表示画面５８Ｂとの、いずれかである。
【００７９】
図１０は、データ総量予測値表示画面の模式的な図である。表示制御部２０は、予測値算出部２６がデータ総量予測値を算出した場合に、データ総量予測値表示画面５８Ａを表示させる。データ総量予測値表示画面５８Ａは、データ総量予測値を表示するための画面である。データ総量予測値表示画面５８Ａは、乱数関数ごとに、データ総量予測値を表示する。より詳しくは、データ総量予測値表示画面５８Ａは、乱数関数ごとに算出されたデータ総量予測値の全てを、一覧表示する。図１０の例では、データ総量予測値表示画面５８Ａは、データ総量予測値表示部５８Ａ１、５８Ａ２、５８Ａ３を並んで表示する。データ総量予測値表示部５８Ａ１は、設定時間Ｓ１において乱数関数Ｙ１を用いた場合のデータ総量予測値を表示し、データ総量予測値表示部５８Ａ２は、設定時間Ｓ１において乱数関数Ｙ２を用いた場合のデータ総量予測値を表示し、データ総量予測値表示部５８Ａ３は、設定時間Ｓ１において乱数関数Ｙ３を用いた場合のデータ総量予測値を表示している。
【００８０】
図１１は、時間予測値表示画面の模式的な図である。表示制御部２０は、予測値算出部２６が時間予測値を算出した場合に、時間予測値表示画面５８Ｂを表示させる。時間予測値表示画面５８Ｂは、時間予測値を表示するための画面である。時間予測値表示画面５８Ｂは、乱数関数ごとに、時間予測値を表示する。より詳しくは、時間予測値表示画面５８Ｂは、乱数関数ごとに算出された時間予測値の全てを、一覧表示する。図１１の例では、時間予測値表示画面５８Ｂは、時間予測値表示部５８Ｂ１、５８Ｂ２、５８Ｂ３を並んで表示する。時間予測値表示部５８Ｂ１は、設定データ総量Ｓ２において乱数関数Ｙ１を用いた場合の時間予測値を表示し、時間予測値表示部５８Ｂ２は、設定データ総量Ｓ２において乱数関数Ｙ２を用いた場合の時間予測値を表示し、時間予測値表示部５８Ｂ３は、設定データ総量Ｓ２において乱数関数Ｙ３を用いた場合の時間予測値を表示している。
【００８１】
以降で、置換データを入力する場合の画面表示の具体的な一例を説明する。図１２は、置換データ入力画面の一例を示す図である。この例において、表示制御部２０は、図６に示す置換データ入力部５０Ａが選択された場合、図１２に示す置換データ入力画面５２ａに表示を切り替える。置換データ入力画面５２ａは、図７に示す置換データ入力画面５２の他の一例である。図１２に示すように、置換データ入力画面５２ａは、置換データ設定入力部５２Ａａを表示させる。置換データ設定入力部５２Ａａは、ユーザが置換データを入力するための表示である。置換データ設定入力部５２Ａａには、作動用データＡのプログラムコードが表示されている。図１２の例では、作動用データＡのプログラムコードは、「Get/index.html」と、「Host Setting/192.168.11.1」とを含んでいる。ここで、「Get」と「Host Setting」はどのような処理を実行するかの命令を示すコマンドであり、「index.html」と「192.168.11.1」とが、コマンドで指定される情報である。本実施形態では、ファジング用データＦに置換されるデータ群Ｂとして、コマンドで指定される情報である「index.html」と「192.168.11.1」とが選択可能となっている。置換データ設定入力部５２Ａａには、置換データ設定入力部５３が含まれている。置換データ設定入力部５３は、置換データ設定入力部５２Ａａに表示されているプログラムコードのうち、ファジング用データＦに置換されるデータ群Ｂを選択するための表示である。図１２の例では、置換データ設定入力部５３は、データ群Ｂとして「index.html」を選択するための置換データ設定入力部５３ａと、データ群Ｂとして「192.168.11.1」を選択するための置換データ設定入力部５３ｂとを有している。なお、ファジング用データＦに置換されるデータ群Ｂとして、「Get」や「Host Setting」などの、コマンドも含まれてよい。
【００８２】
ユーザは、置換データ入力画面５２ａにおいて、置換データ設定入力部５３を選択することで、作動用データＡのプログラムコードから、ファジング用データＦに置換されるデータ群Ｂを選択する。すなわち、置換データ設定入力部５３ａが選択された場合、データ群Ｂとして、「index.html」を、ファジング用データＦに置換されるデータ群Ｂとして選択する。また、すなわち、置換データ設定入力部５３ｂが選択された場合、データ群Ｂとして、「192.168.11.1」を、ファジング用データＦに置換されるデータ群Ｂとして選択する。また、それぞれの置換データ設定入力部５３ａ、５３ｂを選択することで、複数のデータ群Ｂを、ファジング用データＦに置換されるデータ群Ｂとして選択することもできる。このように、置換データ入力画面５２ａは、作動用データＡが表示され、作動用データＡの一部（ここではデータ群Ｂ）を選択することで、置換データの情報をユーザが入力する画面であるといえる。
【００８３】
表示制御部２０は、置換データ設定入力部５３の入力により置換データが選択された場合に、表示部１２の表示を、置換データ入力画面５２ａから、図９に示す設定値入力画面５６に切り替える。ユーザは、設定値入力画面５６に入力を行うことで、算出部２６に、ファジング用データＦの予測値（データ総量予測値又は時間予測値）を算出させる。表示制御部２０は、設定値入力画面５６へのユーザの入力により、算出部２６による計算が実行されたら、図１０に示すデータ総量予測値表示画面５８Ａ、又は図１１に示す時間予測値表示画面５８Ｂを表示させる。ユーザは、データ総量予測値表示画面５８Ａ又は時間予測値表示画面５８Ｂに表示された情報を参照して、乱数関数を指定する。制御部１４は、その乱数関数に基づき、データ算出部２８により、ファジング用データＦを算出する。
【００８４】
図１３は、ファジング用データ表示画面の一例を示す図である。表示制御部２０は、ファジング用データＦが算出されたら、図１３に示すファジング用データ表示画面６０ａを、表示部１２に表示させる。ファジング用データ表示画面６０ａは、算出したファジング用データＦを表示する画面である。ファジング用データ表示画面６０ａは、置換データ表示部６１と、ファジング用データ表示部６４とを表示する。コード表示部６１は、作動用データＡのプログラムコードを表示する画像であり、置換データ選択部６２を有している。置換データ選択部６２は、ファジング用データＦに置換されたデータ群Ｂを選択するための表示である。ファジング用データ表示部６４は、置換データ選択部６２とは異なる位置に表示される画像であり、データ群Ｂ毎に、算出されたファジング用データＦの一覧を表示する画像である。
【００８５】
ファジング用データ表示画面６０ａにおいて、置換データ選択部６２からデータ群Ｂが選択されたら、表示制御部２０は、選択されたデータ群Ｂに対して算出されたファジング用データＦを、ファジング用データ表示部６４に表示させる。すなわち、図１３の例では、置換データ選択部６２のうちから、データ群Ｂとして「index.html」を選択するための置換データ選択部６２ａが選択されたら、表示制御部２０は、ファジング用データ表示部６４に、「index.html」というデータ群Ｂについて算出されたファジング用データＦを表示させる。一方、置換データ選択部６２のうちから、データ群Ｂとして「192.168.11.1」を選択するための置換データ選択部６２ｂが選択されたら、表示制御部２０は、ファジング用データ表示部６４に、「192.168.11.1」というデータ群Ｂについて算出されたファジング用データＦを表示させる。なお、表示制御部２０は、置換データ選択部６２が選択される毎にファジング用データＦの表示を切り替えることに限られず、全ての置換用データＢに対するファジング用データＦを、ファジング用データ表示部６４に表示させてもよい。
【００８６】
図１４は、ファジング用データ表示画面の他の一例を示す図である。図１４に示すファジング用データ表示画面６０ｂは、ファジング用データ表示画面６０ａの他の例である。図１４に示すように、表示制御部２０は、置換データ選択部６２が選択されたら、ファジング用データ表示部６４を、置換データ選択部６２の下にポップアップ表示させてもよい。すなわち、図１４の例では、表示制御部２０は、置換データ選択部６２ａが選択されたら、置換データ選択部６２ａの下に、ファジング用データ表示部６４ａを表示させる。ファジング用データ表示部６４ａは、「index.html」についてのファジング用データを表示する画像である。表示制御部２０は、置換データ選択部６２ｂが選択されたら、置換データ選択部６２ｂの下に、ファジング用データ表示部６４ｂを表示させる。ファジング用データ表示部６４ｂは、「index.html」についてのファジング用データを表示する画像である。このように、表示制御部２０は、選択されていない置換データＢのファジング用データ表示部６４の表示を行わず、選択された置換データＢのファジング用データ表示部６４の表示のみを行う。すなわち、表示制御部２０は、一度置換データＢが選択され、次に他の置換データＢが選択された場合に、前に選択されたファジング用データ表示部６４から、次に選択されたファジング用データ表示部６４に、表示を切り替える。ただし、表示制御部２０は、前に選択されたファジング用データ表示部６４を表示させたまま、次に選択されたファジング用データ表示部６４を表示してもよい。すなわち、ファジング用データ表示画面は、置換データとして選択されたデータ群Ｂ毎に、算出したファジング用データＦを表示するものであればよい。このように、表示部１２は、ファジング用データ表示画面６０ａ（ファジング用表示画面）を表示するものであり、ファジング用データ表示画面６０ａは、作動用データＡを表示するとともに、作動用データＡの一部（ここではデータ群Ｂ）が選択された場合には、乱数関数を用いて生成された所定のデータ（ファジング用データ）を表示する。
【００８７】
図１５は、判定結果表示画面の一例を示す図である。制御部１４は、ファジング用データ表示画面で表示されたファジング用データＦを用いて、テストデータＴを算出して、設定したテストデータＴを対象プログラム１０２に入力することで、ファジングを実行する。そして、制御部１４は、ファジング用データＦに置き換えられた対象プログラム１０２の動作内容に基づき、対象プログラム１０２の動作の判定を行う。表示制御部２０は、その判定結果を、図１５に示す判定結果表示画面７０に表示させる。判定結果表示画面７０は、判定結果表示部７２を有する。判定結果表示部７２は、判定結果を表示する画像である。判定結果表示部７２は、判定結果と、対象プログラム１０２がどのような動作をしたかの情報とを表示してもよい。
【００８８】
以上のように、本実施形態に係るデータ生成装置１は、ユーザに情報を表示する表示部１２と、表示部１２の表示を制御する表示制御部２０とを有する。表示部１２は、設定値入力画面５６と、予測値表示画面５８とを表示する。設定値入力画面５６は、設定時間及び設定データ総量の少なくともいずれかをユーザが入力するための画面である。予測値表示画面５８は、データ総量予測値及び時間予測値の少なくともいずれかを、複数の乱数関数毎に表示する。予測値算出部２６は、設定値入力画面５６が表示されている際に設定時間及び設定データ総量の少なくともいずれかが入力された場合に、データ総量予測値及び時間予測値の少なくともいずれかを、複数の乱数関数毎に算出する。表示制御部２０は、データ総量予測値及び時間予測値の少なくともいずれかが算出された後、表示部１２に予測値表示画面５８を表示させる。
【００８９】
このデータ生成装置１は、設定値入力画面５６と、予測値表示画面５８とを、切り替えて表示させるため、ユーザが予測値の算出指示を適切に行いつつ、予測値の確認を適切に行うことができる。
【００９０】
また、表示部１２は、置換データ入力画面５２を表示する。置換データ入力画面５２は、置換データの情報をユーザが入力するための画面である。表示制御部２０は、置換データ入力画面５２が表示されている際に置換データが入力された場合に、置換データ入力画面５２から設定値入力画面５６に表示を切り替える。このデータ生成装置１は、置換データ入力画面５２と設定値入力画面５６と予測値表示画面５８とを、切り替えて表示させるため、ユーザが予測値の算出指示を適切に行いつつ、予測値の確認を適切に行うことができる。
【００９１】
また、表示部１２は、算出用データ入力画面５４を表示する。算出用データ入力画面５４は、データ種類情報とデータ量情報とをユーザが入力するための画面である。表示制御部２０は、算出用データ入力画面５４が表示されている際にデータ種類情報及びデータ量情報が入力された場合に、算出用データ入力画面５４から設定値入力画面５６に表示を切り替える。このデータ生成装置１は、算出用データ入力画面５４と設定値入力画面５６と予測値表示画面５８とを、切り替えて表示させるため、ユーザが予測値の算出指示を適切に行いつつ、予測値の確認を適切に行うことができる。
【００９２】
以上、本発明の実施形態を説明したが、これら実施形態の内容により実施形態が限定されるものではない。また、前述した構成要素には、当業者が容易に想定できるもの、実質的に同一のもの、いわゆる均等の範囲のものが含まれる。さらに、前述した構成要素は適宜組み合わせることが可能である。さらに、前述した実施形態の要旨を逸脱しない範囲で構成要素の種々の省略、置換又は変更を行うことができる。
【符号の説明】
【００９３】
１  データ生成装置
１０  入力部
１２  表示部
１４  制御部
１６  記憶部
２０  表示制御部
２２  乱数関数読出部
２４  入力データ取得部
２６  予測値算出部
２７  選択乱数関数取得部
４０  置換データ取得部
４２  算出用データ取得部
４４  設定値取得部
１０２  対象プログラム
Ａ  作動用データ
Ｂ  データ群
Ｆ  ファジング用データ
Ｔ  テストデータ
【図１】
2019061648.tif 000003
【図２】
2019061648.tif 000004
【図３】
2019061648.tif 000005
【図４】
2019061648.tif 000006
【図５】
2019061648.tif 000007
【図６】
2019061648.tif 000008
【図７】
2019061648.tif 000009
【図８】
2019061648.tif 000010
【図９】
2019061648.tif 000011
【図１０】
2019061648.tif 000012
【図１１】
2019061648.tif 000013
【図１２】
2019061648.tif 000014
【図１３】
2019061648.tif 000015
【図１４】
2019061648.tif 000016
【図１５】
2019061648.tif 000017