(57)【要約】【課題】変更後のプログラムのリグレッションテストに用いるテストデータを生成すること。【解決手段】テストデータ生成装置１００は、変更前プログラムＰ１と変更後プログラムＰ２とに基づいて、テスト対象のメソッドに用いられる変数の変更パターンを表す差異情報を特定する。次に、テストデータ生成装置１００は、差異情報に基づいて、変更前プログラムＰ１を加工して、変更後プログラムＰ２のテストデータ作成用のプログラムバリエーションを作成して、シンボリック実行して、複数のテストデータを生成する。そして、テストデータ生成装置１００は、複数のテストデータをリファクタリングして、テストケース部分が重複する複数のペアを統合して、新たなテストデータを生成する。【選択図】図１
2015035185.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
テスト対象のメソッドが規定された第１プログラムにおける前記メソッドに用いられる変数と、前記第１プログラムから前記メソッドの内容が変更された第２プログラムにおける前記メソッドに用いられる変数とを比較した比較結果に基づいて、前記メソッドに用いられる変数の変更パターンを特定し、
特定した前記変更パターンに基づいて、前記第１プログラムにおける前記メソッドに用いられる変数を変更した第３プログラムを作成し、
作成した前記第３プログラムをシンボリック実行してテストデータを生成する、
処理を実行させることを特徴とするテストデータ生成プログラム。
【請求項２】
前記特定する処理は、
前記メソッドに用いられる変数について、前記メソッドの内容の変更後に同一形式の他の変数に変更される変更パターンと、前記メソッドの内容の変更後に削除される変更パターンと、前記メソッドの内容の変更後に追加される変更パターンと、のうちの少なくともいずれかの変更パターンを特定することを特徴とする請求項１に記載のテストデータ生成プログラム。
【請求項３】
前記メソッドに用いられる変数は、前記メソッドの引数になるメソッドパラメータまたは前記メソッドの引数以外の変数であることを特徴とする請求項１または２に記載のテストデータ生成プログラム。
【請求項４】
前記作成する処理は、
前記メソッドに用いられる変数ごとに特定した変更パターンの組み合わせに基づいて、前記第３プログラムを作成することを特徴とする請求項１〜３のいずれか一つに記載のテストデータ生成プログラム。
【請求項５】
前記生成する処理は、
作成した前記第３プログラムにおける命令文の系列の実行条件になる入力変数の値と実行結果になる出力変数の値とを対応付けて有するテストデータを生成することを特徴とする請求項４に記載のテストデータ生成プログラム。
【請求項６】
前記コンピュータに、
生成した前記テストデータが有する入力変数の値を実行条件にして前記第３プログラムを実行した場合の出力変数の値が、前記テストデータが有する出力変数の値に一致するか否かを判定する、
処理を実行させることを特徴とする請求項５に記載のテストデータ生成プログラム。
【請求項７】
前記判定する処理は、
生成した前記テストデータが有する入力変数の値を実行条件にして前記第３プログラムを実行した場合の出力変数の値が、前記テストデータが有する出力変数の値に含まれるか否かを判定することを特徴とする請求項６に記載のテストデータ生成プログラム。
【請求項８】
前記コンピュータに、
生成した前記テストデータが有する実行条件と実行結果とを対応付けたペアのうち、実行条件になる入力変数のうちの前記メソッドの変更前後で名称変更されない入力変数の値が同一になるペアであって、かつ実行結果が同一になるペアをグループ化する処理を実行させ、
前記判定する処理は、
グループ化したペアのうち、いずれかのペアに含まれる入力変数の値を実行条件にして前記第３プログラムを実行した場合の出力変数の値が、前記いずれかのペアに含まれる出力変数の値に含まれるか否かを判定することを特徴とする請求項６または７に記載のテストデータ生成プログラム。
【請求項９】
コンピュータが、
テスト対象のメソッドが規定された第１プログラムにおける前記メソッドに用いられる変数と、前記第１プログラムから前記メソッドの内容が変更された第２プログラムにおける前記メソッドに用いられる変数とを比較した比較結果に基づいて、前記メソッドに用いられる変数の変更パターンを特定し、
特定した前記変更パターンに基づいて、前記第１プログラムにおける前記メソッドに用いられる変数を変更した第３プログラムを作成し、
作成した前記第３プログラムをシンボリック実行してテストデータを生成する、
処理を実行することを特徴とするテストデータ生成方法。
【請求項１０】
テスト対象のメソッドが規定された第１プログラムにおける前記メソッドに用いられる変数と、前記第１プログラムから前記メソッドの内容が変更された第２プログラムにおける前記メソッドに用いられる変数とを比較した比較結果に基づいて、前記メソッドに用いられる変数の変更パターンを特定し、特定した前記変更パターンに基づいて、前記第１プログラムにおける前記メソッドに用いられる変数を変更した第３プログラムを作成する作成部と、
前記作成部によって作成された前記第３プログラムをシンボリック実行してテストデータを生成する生成部と、
を有することを特徴とするテストデータ生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テストデータ生成プログラム、テストデータ生成方法、およびテストデータ生成装置に関する。
【背景技術】
【０００２】
従来、プログラム開発において、テストケースを用いて、プログラムの動作をテストする技術がある。テストケースは、プログラムに与えられる入力変数の値を有する。また、プログラムに変更があったとき、プログラムの変更に起因して、変更後のプログラムに不具合が発生していないかどうか判定するリグレッションテストを行う技術がある。リグレッションテストでは、例えば、同一のテストケースを用いて、変更前後のプログラムの動作をテストして、変更前後のプログラムのテスト結果が一致するか否かに基づいて、不具合が発生していないかどうかを判定する。
【０００３】
関連する技術としては、例えば、テスト対象ソースコードを解析して、入出力インターフェースの変更を反映することができ、入力値と出力値を含む入力関係情報または変更後入出力関係情報を作成して、テストケースまたは変更後テストケースを作成するものがある。また、例えば、変更前のプログラムデータにより作成されたテストデータのうち、プログラムの変更にともなって変更された関数に関する箇所を書き換え、かつ、変更されなかった部分は流用して変更後プログラム用のテストデータを作成する技術がある。また、例えば、プログラム中で有効と考えられる箇所と無効と考えられる箇所を静的にかつ、機械的に算出し、調査結果のレポートによるプログラムの分析を支援し、および無効な命令を破棄する技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２０５２３９号公報
【特許文献２】特開２０１１−１５９００８号公報
【特許文献３】特開平１０−６３５３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、プログラムの変更時に、プログラムの中で用いられる変数が追加、削除あるいは名称変更されると、変更後のプログラムをテストする際に、変更前のプログラムのテストに使用したテストケースをそのまま流用できない場合がある。
【０００６】
１つの側面では、本発明は、変更後のプログラムのリグレッションテストに用いるテストデータを生成することができるテストデータ生成プログラム、テストデータ生成方法、およびテストデータ生成装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一側面によれば、テスト対象のメソッドが規定された第１プログラムにおける前記メソッドに用いられる変数と、前記第１プログラムから前記メソッドの内容が変更された第２プログラムにおける前記メソッドに用いられる変数とを比較した比較結果に基づいて、前記メソッドに用いられる変数の変更パターンを特定し、特定した前記変更パターンに基づいて、前記第１プログラムにおける前記メソッドに用いられる変数を変更した第３プログラムを作成し、作成した前記第３プログラムをシンボリック実行してテストデータを生成するテストデータ生成プログラム、テストデータ生成方法、およびテストデータ生成装置が提案される。
【発明の効果】
【０００８】
本発明の一態様によれば、変更後のプログラムのリグレッションテストに用いるテストデータを生成することができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態にかかるテストデータ生成装置１００の動作例を示す説明図である。
【図２】図２は、テストデータ生成装置１００のハードウェア構成例を示すブロック図である。
【図３】図３は、テストデータ生成装置１００の機能的構成例を示すブロック図である。
【図４】図４は、プログラムの変更内容の一例を示す説明図である。
【図５】図５は、差異情報の特定処理の一例を示す説明図（その１）である。
【図６】図６は、差異情報の特定処理の一例を示す説明図（その２）である。
【図７】図７は、差異情報の特定処理の一例を示す説明図（その３）である。
【図８】図８は、差異情報の特定処理の一例を示す説明図（その４）である。
【図９】図９は、差異情報の特定処理の一例を示す説明図（その５）である。
【図１０】図１０は、差異情報の特定処理の一例を示す説明図（その６）である。
【図１１】図１１は、差異情報の特定処理の一例を示す説明図（その７）である。
【図１２】図１２は、差異情報の特定処理の一例を示す説明図（その８）である。
【図１３】図１３は、差異情報の特定処理の一例を示す説明図（その９）である。
【図１４】図１４は、プログラムの加工処理の一例を示す説明図である。
【図１５】図１５は、テストデータ生成処理の一例を示す説明図（その１）である。
【図１６】図１６は、テストデータ生成処理の一例を示す説明図（その２）である。
【図１７】図１７は、リファクタリング処理の一例を示す説明図（その１）である。
【図１８】図１８は、リファクタリング処理の一例を示す説明図（その２）である。
【図１９】図１９は、リファクタリング処理の一例を示す説明図（その３）である。
【図２０】図２０は、リファクタリング処理の一例を示す説明図（その４）である。
【図２１】図２１は、リファクタリング処理の一例を示す説明図（その５）である。
【図２２】図２２は、リグレッションテストの一例を示す説明図である。
【図２３】図２３は、リグレッションテストの実行処理手順の一例を示すフローチャートである。
【図２４】図２４は、差異情報の特定処理手順の一例を示すフローチャートである。
【図２５】図２５は、プログラムの加工処理手順の一例を示すフローチャートである。
【図２６】図２６は、テストデータ生成処理手順の一例を示すフローチャートである。
【図２７】図２７は、リファクタリング処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、本発明にかかるテストデータ生成プログラム、テストデータ生成方法、およびテストデータ生成装置の実施の形態を詳細に説明する。
【００１１】
（テストデータ生成装置１００の動作例）
図１は、実施の形態にかかるテストデータ生成装置１００の動作例を示す説明図である。
【００１２】
テストデータ生成装置１００は、テスト対象のメソッドが規定された第１プログラムＰ１のメソッドの内容が変更された第２プログラムＰ２のテストケースを生成するコンピュータである。以下の説明では、第１プログラムを「変更前プログラムＰ１」と表記する場合がある。また、以下の説明では、第２プログラムを「変更後プログラムＰ２」と表記する場合がある。
【００１３】
メソッドの内容変更には、メソッドに用いられる変数の変更が含まれる。ここで、変数は、プログラムに含まれるメソッドの引数（メソッドパラメータ）として宣言された変数と、メソッドの引数以外としてプログラムに宣言された変数と、を含む。変数は、いわゆるプログラムインターフェースである。以下の説明では、プログラムに含まれるメソッドの引数として宣言された変数を「パラメータ変数」と表記する場合がある。以下の説明では、プログラムに宣言された変数を「プログラム変数」と表記する場合がある。
【００１４】
（１）テストデータ生成装置１００は、変更前プログラムＰ１と変更後プログラムＰ２とに基づいて、テスト対象のメソッドに用いられる変数の変更パターンを表す差異情報を特定する。差異情報の特定処理の詳細については、図５〜図１３を用いて後述する。
【００１５】
（２）テストデータ生成装置１００は、差異情報に基づいて、変更前プログラムＰ１を加工して、変更後プログラムＰ２のテストデータ作成用のプログラムバリエーションを作成する。プログラムの加工処理の詳細については、図１４を用いて後述する。これにより、テストデータ生成装置１００は、変更後プログラムＰ２に対応しうるプログラムバリエーションを作成することができる。
【００１６】
（３）テストデータ生成装置１００は、加工後プログラムをシンボリック実行して、複数のテストデータを生成する。シンボリック実行は、記号実行とも呼ばれる。テストデータ生成処理の詳細については、図１５および図１６を用いて後述する。ここで、テストデータは、テストケースＴＣ１と実行結果Ｒ１とのペアを含む。テストケースＴＣ１とは、プログラムの実行条件になる入力変数の値である。実行結果Ｒ１とは、プログラムの実行結果になる出力変数の値である。これにより、テストデータ生成装置１００は、変更後プログラムＰ２に対するリグレッションテストに用いうる複数のテストデータを生成することができる。
【００１７】
（４）テストデータ生成装置１００は、複数のテストデータをリファクタリングして、テストケース部分が重複する複数のペアを統合して、統合後のテストケースＴＣ１＊と実行結果Ｒ１＊とのペアを有する新たなテストデータを生成する。リファクタリング処理の詳細については、図１７〜図２１を用いて後述する。これにより、テストデータ生成装置１００は、複数のテストデータをまとめて、プログラム変数またはパラメータ変数の変更を含む変更後プログラムＰ２に対しても、リグレッションテストに用いるテストデータを生成することができる。
【００１８】
このため、例えば、リグレッションテストの実行者が、変更前プログラムＰ１と変更後プログラムＰ２と、を参照して、変更後プログラムＰ２に対するテストデータを作成する場合に比べて、リグレッションテストの実行者の作業量を低減することができる。また、リグレッションテストの実行者によって誤ったテストデータが作成されることを防止することができる。
【００１９】
（５）テストデータ生成装置１００は、さらに、リファクタリングした新たなテストデータを用いて、リグレッションテストを実行してもよい。リグレッションテストは、回帰テストとも呼ばれる。テストデータ生成装置１００は、例えば、リグレッションテストにおいて、テストケースＴＣ１＊に対応する実行結果Ｒ１＊と、テストケースＴＣ１＊を実行条件として変更後プログラムＰ２を実行した場合の実行結果Ｒ２とを比較する。テストデータ生成装置１００は、比較結果に基づいて、変更後プログラムＰ２に不具合があるか否かを判定してもよい。リグレッションテストの詳細については、図２２を用いて後述する。
【００２０】
これにより、テストデータ生成装置１００は、プログラム変数またはパラメータ変数が変更された変更後プログラムＰ２に対しても、リグレッションテストを実行することができ、リグレッションテストのテスト結果を出力することができる。そして、テストデータ生成装置１００の利用者は、リグレッションテストのテスト結果から、変更後プログラムＰ２に不具合があるか否かを把握することができる。
【００２１】
（テストデータ生成装置１００のハードウェア構成例）
図２は、テストデータ生成装置１００のハードウェア構成例を示すブロック図である。図２において、テストデータ生成装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３と、磁気ディスクドライブ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）２０４と、磁気ディスク２０５と、光ディスクドライブ２０６と、光ディスク２０７と、ディスプレイ２０８と、インターフェース（Ｉ／Ｆ：Ｉｎｔｅｒｆａｃｅ）２０９と、キーボード２１０と、マウス２１１と、スキャナ２１２と、プリンタ２１３と、を備えている。また、各構成部はバス２００によってそれぞれ接続されている。
【００２２】
ここで、ＣＰＵ２０１は、テストデータ生成装置１００の全体の制御を司る。ＲＯＭ２０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ２０３は、ＣＰＵ２０１のワークエリアとして使用される。磁気ディスクドライブ２０４は、ＣＰＵ２０１の制御に従って磁気ディスク２０５に対するデータのリード／ライトを制御する。磁気ディスク２０５は、磁気ディスクドライブ２０４の制御で書き込まれたデータを記憶する。
【００２３】
光ディスクドライブ２０６は、ＣＰＵ２０１の制御に従って光ディスク２０７に対するデータのリード／ライトを制御する。光ディスク２０７は、光ディスクドライブ２０６の制御で書き込まれたデータを記憶したり、光ディスク２０７に記憶されたデータをコンピュータに読み取らせたりする。
【００２４】
ディスプレイ２０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ２０８は、例えば、液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００２５】
Ｉ／Ｆ２０９は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク２１４に接続され、このネットワーク２１４を介して他の装置に接続される。そして、Ｉ／Ｆ２０９は、ネットワーク２１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ２０９には、例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００２６】
キーボード２１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス２１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００２７】
スキャナ２１２は、画像を光学的に読み取り、テストデータ生成装置１００内に画像データを取り込む。なお、スキャナ２１２は、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）機能を持たせてもよい。また、プリンタ２１３は、画像データや文書データを印刷する。プリンタ２１３には、例えば、レーザプリンタやインクジェットプリンタを採用することができる。また、光ディスクドライブ２０６、光ディスク２０７、ディスプレイ２０８、キーボード２１０、マウス２１１、スキャナ２１２、およびプリンタ２１３の少なくともいずれか１つは、なくてもよい。
【００２８】
（テストデータ生成装置１００の機能的構成例）
次に、図３を用いて、テストデータ生成装置１００の機能的構成例について説明する。
【００２９】
図３は、テストデータ生成装置１００の機能的構成例を示すブロック図である。テストデータ生成装置１００は、特定部３０１と、作成部３０２と、生成部３０３と、判定部３０４と、を含む。特定部３０１と、作成部３０２と、生成部３０３と、判定部３０４とは、例えば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶装置に記憶されたプログラムをＣＰＵ２０１に実行させることにより、または、Ｉ／Ｆ２０９により、その機能を実現する。
【００３０】
特定部３０１は、テスト対象のメソッドが規定された第１プログラムにおけるメソッドに用いられる変数と、第１プログラムからメソッドの内容が変更された第２プログラムにおけるメソッドに用いられる変数とを比較する。次に、特定部３０１は、比較結果に基づいて、メソッドに用いられる変数の変更パターンを特定する。ここで、第１プログラムとは、例えば、上述した変更前プログラムＰ１である。第２プログラムとは、例えば、上述した変更後プログラムＰ２である。メソッドに用いられる変数は、メソッドの引数になるパラメータ変数またはメソッドの引数以外のプログラム変数である。
【００３１】
特定部３０１は、例えば、メソッドに用いられる変数について、第１〜第３の変更パターンのうちの少なくともいずれかの変更パターンを特定する。第１の変更パターンとは、メソッドの内容の変更後に同一形式の他の変数に変更される変更パターンである。第２の変更パターンとは、メソッドの内容の変更後に削除される変更パターンである。第３の変更パターンとは、メソッドの内容の変更後に追加される変更パターンである。
【００３２】
ここで、変更前プログラムＰ１におけるプログラム変数が「ｘ、ｂ１」かつパラメータ変数が「ａ、ｂ」、変更後プログラムＰ２におけるプログラム変数が「ｉ、ｂ２」かつパラメータ変数が「ａ、ｃ」である場合を一例として挙げる。
【００３３】
この場合、特定部３０１は、変更パターンとして、｛ｘ→ｉ，ｘ→φ｝と、｛ｂ１→ｂ２，ｂ１→φ｝と、｛ｂ→ｃ，ｂ→φ｝と、｛φ→ｉ，φ→ｂ２，φ→ｃ｝と、を特定する。ここで、φは、ダミー変数である。上述した｛ｘ→ｉ｝は、ｘからｉに変更される変更パターンを表す。上述した｛ｘ→φ｝は、ｘが削除される変更パターンを表す。上述した｛φ→ｉ｝は、ｉが追加される変更パターンを表す。
【００３４】
これにより、特定部３０１は、取り得る変更パターンを特定することができる。特定されたデータは、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。
【００３５】
作成部３０２は、特定した変更パターンに基づいて、第１プログラムにおけるメソッドに用いられる変数を変更した第３プログラムを作成する。第３プログラムとは、第２プログラムのテストデータ生成用のプログラムである。第３プログラムとは、例えば、上述したプログラムバリエーションである。
【００３６】
作成部３０２は、例えば、メソッドに用いられる変数ごとに特定した変更パターンの組み合わせに基づいて、第３プログラムを作成する。作成部３０２は、具体的には、メソッドに用いられるそれぞれ異なる変数についての変更パターンの組み合わせに基づいて、第３プログラムを作成する。
【００３７】
ここで、特定部３０１によって、変更パターンとして、｛ｘ→ｉ，ｘ→φ｝と、｛ｂ１→ｂ２，ｂ１→φ｝と、｛ｂ→ｃ，ｂ→φ｝と、｛φ→ｉ，φ→ｂ２，φ→ｃ｝と、が特定された場合を一例として挙げる。
【００３８】
この場合、作成部３０２は、｛ｘ→ｉ｝と、｛ｂ１→ｂ２｝と、｛ｂ→ｃ｝との組み合わせに基づいて、変更前プログラムＰ１のｘをｉに、ｂ１をｂ２に、ｂをｃに置換して、プログラムバリエーションを作成する。また、作成部３０２は、｛ｘ→φ｝と、｛ｂ１→ｂ２｝と、｛ｂ→ｃ｝と、｛φ→ｉ｝との組み合わせに基づいて、変更前プログラムＰ１のｘをｘ＿ｒに置換し、ｂ１をｂ２に置換し、ｂをｃに置換し、ｉを追加して、プログラムバリエーションを作成する。ここで、ｘ＿ｒは、ｘが削除されることを表す削除用の変数である。
【００３９】
これにより、作成部３０２は、変更後プログラムＰ２のテストデータの生成用のプログラムバリエーションを作成することができる。作成されたデータは、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。
【００４０】
生成部３０３は、作成した第３プログラムをシンボリック実行してテストデータを生成する。ここで、シンボリック実行とは、記号実行と呼ばれる。シンボリック実行によるテストデータの生成は従来技術のため説明を省略する。
【００４１】
生成部３０３は、例えば、作成した第３プログラムにおける命令文の系列の実行条件になる入力変数の値と実行結果になる出力変数の値とを対応付けて有するテストデータを生成する。生成部３０３は、具体的には、実行条件「ｉ＝０、ｂ２＝ｆａｌｓｅ、ａ＝０、ｃ＝０」と実行結果「｛０，１｝」を対応付けた第１のペアを有するテストデータを生成する。
【００４２】
この場合、第１のペアは、実行条件「ｉ＝０、ｂ２＝ｆａｌｓｅ、ａ＝０、ｃ＝０」を入力変数として変更前プログラムＰ１を実行した場合に、実行結果「｛０，１｝」のいずれかが出力変数の値となることを表す。また、第１のペアは、実行条件「ｉ＝０、ｂ２＝ｆａｌｓｅ、ａ＝０、ｃ＝０」を入力変数として変更後プログラムＰ２を実行した場合に、実行結果「｛０，１｝」のいずれかが出力変数の期待値となることを表す。
【００４３】
また、テストデータは、さらに、実行条件「ｉ＝０、ｂ２＝ｔｒｕｅ、ａ＝−１、ｃ＝０」と実行結果「０」とを対応付けた第２のペアを有する場合がある。また、テストデータは、さらに、実行条件「ｉ＝０、ｂ２＝ｆａｌｓｅ、ａ＝−１、ｃ＝０」と実行結果「０」を対応付けた第３のペアを有する場合がある。
【００４４】
これにより、生成部３０３は、変更後プログラムＰ２のテストデータを生成することができる。生成されたデータは、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。
【００４５】
判定部３０４は、生成したテストデータが有する入力変数の値を実行条件にして第３プログラムを実行した場合の出力変数の値が、テストデータが有する出力変数の値に一致するか否かを判定する。判定部３０４は、例えば、実行条件「ｉ＝０、ｂ２＝ｔｒｕｅ、ａ＝−１、ｃ＝０」を入力変数として変更後プログラムＰ２を実行した場合に実行結果が「−１」であって、出力変数の期待値となる実行結果「０」と一致するか否かを判定する。ここで、判定部３０４は、或る実行条件を入力変数とした場合の実行結果が、テストデータが有する当該実行条件に対応する実行結果と一致しない場合に、メソッドの内容の変更によりメソッドの機能が変更されたと判定してもよい。
【００４６】
判定部３０４は、生成したテストデータが有する入力変数の値を実行条件にして第３プログラムを実行した場合の出力変数の値が、テストデータが有する出力変数の値に含まれるか否かを判定する。判定部３０４は、例えば、実行条件「ｉ＝０、ｂ２＝ｆａｌｓｅ、ａ＝０、ｃ＝０」を入力変数として変更後プログラムＰ２を実行した場合の実行結果が「−１」であり、出力変数の期待値となる実行結果「｛０，１｝」のいずれかの値と一致するか否かを判定する。ここで、判定部３０４は、或る実行条件を入力変数とした場合の実行結果が、テストデータが有する当該実行条件に対応する実行結果に含まれない場合に、メソッドの内容の変更によりメソッドの機能が変更されたと判定してもよい。
【００４７】
判定部３０４は、生成した前記テストデータが有する実行条件と実行結果とを対応付けたペアのうち、実行条件になる入力変数のうちの前記メソッドの変更前後で名称変更されない入力変数の値が同一になり、かつ実行結果が同一になるペアをグループ化する。そして、判定部３０４は、グループ化したペアのうち、いずれかのペアに含まれる入力変数の値を実行条件にして前記第３プログラムを実行した場合の出力変数の値が、前記いずれかのペアに含まれる出力変数の値に含まれるか否かを判定する。
【００４８】
判定部３０４は、例えば、実行条件「ｉ＝０、ｂ２＝ｔｒｕｅ、ａ＝−１、ｃ＝０」と実行結果「０」を対応付けたペアと、実行条件「ｉ＝０、ｂ２＝ｆａｌｓｅ、ａ＝−１、ｃ＝０」と実行結果「０」を対応付けたペアとをグループ化する。次に、判定部３０４は、実行条件ごとに、当該実行条件を入力変数として変更後プログラムＰ２を実行した場合の実行結果が、当該実行条件に対応する実行結果に含まれるか否かを判定する。ここで、判定部３０４は、グループ化したペアに、或る実行条件を入力変数とした場合の実行結果が、テストデータが有する当該実行条件に対応する実行結果に含まれると判定されたペアがあるか否かを判定してもよい。そして、判定部３０４は、ペアがない場合に、メソッドの内容の変更によりメソッドの機能が変更されたと判定してもよい。
【００４９】
これにより、判定部３０４は、リグレッションテストを実行することができる。判定結果は、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。また、判定部３０４は、判定結果を出力してもよい。出力形式としては、例えば、ディスプレイ２０８への表示、プリンタ２１３への印刷出力、Ｉ／Ｆ２０９による外部装置への送信がある。また、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶することとしてもよい。これにより、テストデータ生成装置１００の利用者は、判定結果から、メソッドの内容の変更によりメソッドの機能が変更されたか否かを判定することができる。
【００５０】
（プログラムの変更内容の一例）
次に、図４を用いて、プログラムの変更内容の一例について説明する。
【００５１】
図４は、プログラムの変更内容の一例を示す説明図である。図４の例では、変更前プログラムＰ１には、ｉｎｔ型のプログラム変数「ｘ」と、ｂｏｏｌｅａｎ型のプログラム変数「ｂ１」とが宣言されている。また、変更前プログラムＰ１には、ｍａｘメソッドが規定され、ｍａｘメソッドの引数としてｉｎｔ型のパラメータ変数「ａ」と、ｉｎｔ型のパラメータ変数「ｂ」とが宣言されている。
【００５２】
一方で、変更後プログラムＰ２には、ｉｎｔ型のプログラム変数「ｘ」と、ｂｏｏｌｅａｎ型のプログラム変数「ｂ１」とがなく、ｉｎｔ型のプログラム変数「ｉ」と、ｂｏｏｌｅａｎ型のプログラム変数「ｂ２」とが宣言されている。また、変更後プログラムＰ２には、ｍａｘメソッドの引数としてｉｎｔ型のパラメータ変数「ａ」と、ｉｎｔ型のパラメータ変数「ｃ」とが宣言されている。
【００５３】
（差異情報の特定処理の一例）
次に、図５〜図１３を用いて、差異情報の特定処理の一例について説明する。
【００５４】
図５〜図１３は、差異情報の特定処理の一例を示す説明図である。図５に示すように、テストデータ生成装置１００は、変更前プログラムＰ１から、プログラム変数の集合Ｖ１＝｛ｘ，ｂ１｝と、パラメータ変数の集合Ｐ１＝｛ａ，ｂ｝と、を抽出する。以下の説明では、抽出したプログラム変数の集合Ｖ１とパラメータ変数の集合Ｐ１とを合わせて「変更前変数データ５００」と表記する場合がある。次に、図６の説明に移行する。
【００５５】
図６に示すように、テストデータ生成装置１００は、変更後プログラムＰ２から、プログラム変数の集合Ｖ２＝｛ｉ，ｂ２｝と、パラメータ変数の集合Ｐ２＝｛ａ，ｃ｝と、を含む変更後変数データを抽出する。以下の説明では、抽出したプログラム変数の集合Ｖ２とパラメータ変数の集合Ｐ２とを合わせて「変更後変数データ６００」と表記する場合がある。次に、図７の説明に移行する。
【００５６】
図７に示すように、テストデータ生成装置１００は、変更前変数データ５００と変更後変数データ６００とに基づいて、不変名称のプログラム変数の集合Ｖ＿ＩＮＶ＝Ｖ２∩Ｖ１＝｛｝を抽出する。また、テストデータ生成装置１００は、変更前変数データ５００と変更後変数データ６００とに基づいて、不変名称のパラメータ変数の集合Ｐ＿ＩＮＶ＝Ｐ２∩Ｐ１＝｛ａ｝を抽出する。以下の説明では、抽出した不変名称のプログラム変数の集合Ｖ＿ＩＮＶと不変名称のパラメータ変数の集合Ｐ＿ＩＮＶとを合わせて「不変変数データ７０１」と表記する場合がある。
【００５７】
また、テストデータ生成装置１００は、変更前変数データ５００と変更後変数データ６００とに基づいて、追加候補のプログラム変数の集合Ｖ＿ＡＤＤ＝Ｖ２−Ｖ１＝｛ｉ，ｂ２｝を抽出する。また、テストデータ生成装置１００は、変更前変数データ５００と変更後変数データ６００とに基づいて、追加候補のパラメータ変数の集合Ｐ＿ＡＤＤ＝Ｐ２−Ｐ１＝｛ｃ｝を抽出する。以下の説明では、抽出した追加候補のプログラム変数の集合Ｖ＿ＡＤＤと追加候補のパラメータ変数の集合Ｐ＿ＡＤＤとを合わせて「追加候補変数データ７０２」と表記する場合がある。
【００５８】
また、テストデータ生成装置１００は、変更前変数データ５００と変更後変数データ６００とに基づいて、削除候補のプログラム変数の集合Ｖ＿ＲＥＭ＝Ｖ１−Ｖ２＝｛ｘ，ｂ１｝を抽出する。また、テストデータ生成装置１００は、変更前変数データ５００と変更後変数データ６００とに基づいて、削除候補のパラメータ変数の集合Ｐ＿ＲＥＭ＝Ｐ１−Ｐ２＝｛ｂ｝を抽出する。以下の説明では、抽出した削除候補のプログラム変数の集合Ｖ＿ＲＥＭと削除候補のパラメータ変数の集合Ｐ＿ＲＥＭとを合わせて「削除候補変数データ７０３」と表記する場合がある。次に、図８の説明に移行する。
【００５９】
図８に示すように、テストデータ生成装置１００は、追加候補変数データ７０２のプログラム変数の集合Ｖ＿ＡＤＤ＝｛ｉ，ｂ２｝にダミー変数を追加して、プログラム変数の集合Ｖ＿ＡＤＤ＝｛ｉ，ｂ２，φ｝にする。また、テストデータ生成装置１００は、追加候補変数データ７０２のパラメータ変数の集合Ｐ＿ＡＤＤ＝｛ｃ｝にダミー変数を追加して、パラメータ変数の集合Ｐ＿ＡＤＤ＝｛ｃ，φ｝にする。
【００６０】
また、テストデータ生成装置１００は、削除候補変数データ７０３のプログラム変数の集合Ｖ＿ＲＥＭ＝｛ｘ，ｂ１｝にダミー変数を追加して、プログラム変数の集合Ｖ＿ＲＥＭ＝｛ｘ，ｂ１，φ｝にする。また、テストデータ生成装置１００は、削除候補変数データ７０３のパラメータ変数の集合Ｐ＿ＲＥＭ＝｛ｂ｝にダミー変数を追加して、パラメータ変数の集合Ｐ＿ＲＥＭ＝｛ｂ，φ｝にする。
【００６１】
そして、テストデータ生成装置１００は、ダミー変数を追加した追加候補変数データ７０２と、ダミー変数を追加した削除候補変数データ７０３と、を結合する。以下の説明では、ダミー変数を追加した追加候補変数データ７０２とダミー変数を追加した削除候補変数データ７０３とを合わせて「結合後データ８００」と表記する場合がある。次に、図９の説明に移行する。
【００６２】
図９に示すように、テストデータ生成装置１００は、結合後データ８００に基づいて、プログラム変数の変更パターンＶ＿ＰＡＴＴＥＲＮ＝Ｖ＿ＲＥＭ→Ｖ＿ＡＤＤ＝｛ｘ→ｉ，ｘ→ｂ２，ｘ→φ，ｂ１→ｉ，ｂ１→ｂ２，ｂ１→φ，φ→ｉ，φ→ｂ２，φ→φ｝を特定する。また、テストデータ生成装置１００は、結合後データ８００に基づいて、パラメータ変数の変更パターンＰ＿ＰＡＴＴＥＲＮ＝Ｐ＿ＲＥＭ→Ｐ＿ＡＤＤ＝｛ｂ→ｃ，ｂ→φ，φ→ｃ，φ→φ｝を特定する。以下の説明では、プログラム変数の変更パターンＶ＿ＰＡＴＴＥＲＮとパラメータ変数の変更パターンＰ＿ＰＡＴＴＥＲＮとを合わせて「組み合わせデータ９０１」と表記する場合がある。
【００６３】
次に、テストデータ生成装置１００は、組み合わせデータ９０１のうちのプログラム変数の変更パターンＶ＿ＰＡＴＴＥＲＮからφ→φのペアと、型の異なるペアとを除去して、プログラム変数の変更パターンＶ＿ＰＡＴＴＥＲＮ＝｛ｘ→ｉ，ｘ→φ，ｂ１→ｂ２，ｂ１→φ，φ→ｉ，φ→ｂ２｝にする。また、テストデータ生成装置１００は、組み合わせデータ９０１のうちのパラメータ変数の変更パターンＰ＿ＰＡＴＴＥＲＮからφ→φのペアと、型の異なるペアとを除去して、パラメータ変数の変更パターンＰ＿ＰＡＴＴＥＲＮ＝｛ｂ→ｃ，ｂ→φ，φ→ｃ｝にする。
【００６４】
以下の説明では、ペアを除去したプログラム変数の変更パターンＶ＿ＰＡＴＴＥＲＮとペアを除去したパラメータ変数の変更パターンＰ＿ＰＡＴＴＥＲＮとを合わせて「除去後データ９０２」と表記する場合がある。次に、図１０の説明に移行する。
【００６５】
図１０に示すように、テストデータ生成装置１００は、除去後データ９０２に基づいて、変更前プログラムＰ１のプログラム変数とパラメータ変数とについての変更パターンＶ＿ｘ＝｛ｘ→ｉ，ｘ→φ｝と、Ｖ＿ｂ１＝｛ｂ１→ｂ２，ｂ１→φ｝と、Ｍ＿ｂ＝｛ｂ→ｃ，ｂ→φ｝とを抽出する。また、テストデータ生成装置１００は、除去後データ９００に基づいて、変更後プログラムＰ２のプログラム変数とパラメータ変数とについての追加パターンφ＝｛φ→ｉ，φ→ｂ２，φ→ｃ｝を抽出する。以下の説明では、抽出した変更パターンＶ＿ｘと、Ｖ＿ｂ１と、Ｍ＿ｂと、追加パターンφとを合わせて「変更パターンデータ１０００」と表記する場合がある。次に、図１１の説明に移行する。
【００６６】
図１１に示すように、テストデータ生成装置１００は、変更パターンデータ１０００に基づいて、変更バリエーションＶＡＲＩＡＴＩＯＮ＝Ｖ＿ｘ→Ｖ＿ｂ１→Ｍ＿ｂ＝｛｛ｘ→ｉ，ｂ１→ｂ２，ｂ→ｃ｝，｛ｘ→ｉ，ｂ１→ｂ２，ｂ→φ｝，｛ｘ→ｉ，ｂ１→φ，ｂ→ｃ｝，｛ｘ→ｉ，ｂ１→φ，ｂ→φ｝，｛ｘ→φ，ｂ１→ｂ２，ｂ→ｃ｝，｛ｘ→φ，ｂ１→ｂ２，ｂ→φ｝，｛ｘ→φ，ｂ１→φ，ｂ→ｃ｝，｛ｘ→φ，ｂ１→φ，ｂ→φ｝｝を抽出する。以下の説明では、抽出した変更バリエーションを「バリエーションデータ１１００」と表記する場合がある。次に、図１２の説明に移行する。
【００６７】
図１２に示すように、テストデータ生成装置１００は、バリエーションデータ１１００に、変更後プログラムＰ２のプログラム変数とパラメータ変数とについての変更パターンφを追加して、変更バリエーションＶＡＲＩＡＴＩＯＮ＝Ｖ＿ｘ→Ｖ＿ｂ１→Ｍ＿ｂ＝｛｛ｘ→ｉ，ｂ１→ｂ２，ｂ→ｃ｝，｛ｘ→ｉ，ｂ１→ｂ２，ｂ→φ，φ→ｃ｝，｛ｘ→ｉ，ｂ１→φ，ｂ→ｃ，φ→ｂ２｝，｛ｘ→ｉ，ｂ１→φ，ｂ→φ，φ→ｂ２，φ→ｃ｝，｛ｘ→φ，ｂ１→ｂ２，ｂ→ｃ，φ→ｉ｝，｛ｘ→φ，ｂ１→ｂ２，ｂ→φ，φ→ｉ，φ→ｃ｝，｛ｘ→φ，ｂ１→φ，ｂ→ｃ，φ→ｉ，φ→ｂ２｝，｛ｘ→φ，ｂ１→φ，ｂ→φ，φ→ｉ，φ→ｂ２，φ→ｃ｝｝を作成する。以下の説明では、追加した変更バリエーションを「追加バリエーションデータ１２００」と表記する場合がある。次に、図１３の説明に移行する。
【００６８】
図１３に示すように、テストデータ生成装置１００は、変更バリエーションから、プログラムの変更内容を特定する。図１３の例では、テストデータ生成装置１００は、変更バリエーションＢ１「｛ｘ→ｉ，ｂ１→ｂ２，ｂ→ｃ｝」から、プログラムの変更内容「ｘをｉに、ｂ１をｂ２に、ｂをｃに名称変更」を特定する。
【００６９】
また、テストデータ生成装置１００は、変更バリエーションＢ２「｛ｘ→ｉ，ｂ１→ｂ２，ｂ→φ，φ→ｃ｝」から、プログラムの変更内容「ｘをｉに、ｂ１をｂ２に名称変更、ｂを削除、ｃを追加」を特定する。
【００７０】
また、テストデータ生成装置１００は、変更バリエーションＢ３「｛ｘ→ｉ，ｂ１→φ，ｂ→ｃ，φ→ｂ２｝」から、プログラムの変更内容「ｘをｉに、ｂをｃに名称変更、ｂ１を削除、ｂ２を追加」を特定する。
【００７１】
また、テストデータ生成装置１００は、変更バリエーションＢ４「｛ｘ→ｉ，ｂ１→φ，ｂ→φ，φ→ｂ２，φ→ｃ｝」から、プログラムの変更内容「ｘをｉに名称変更、ｂ１・ｂを削除、ｂ２・ｃを追加」を特定する。
【００７２】
また、テストデータ生成装置１００は、変更バリエーションＢ５「｛ｘ→φ，ｂ１→ｂ２，ｂ→ｃ，φ→ｉ｝」から、プログラムの変更内容「ｘを削除、ｉを追加、ｂ１をｂ２に、ｂをｃに名称変更」を特定する。
【００７３】
また、テストデータ生成装置１００は、変更バリエーションＢ６「｛ｘ→φ，ｂ１→ｂ２，ｂ→φ，φ→ｉ，φ→ｃ｝」から、プログラムの変更内容「ｂ１をｂ２に名称変更、ｘ・ｂを削除、ｉ・ｃを追加」を特定する。
【００７４】
また、テストデータ生成装置１００は、変更バリエーションＢ７「｛ｘ→φ，ｂ１→φ，ｂ→ｃ，φ→ｉ，φ→ｂ２｝」から、プログラムの変更内容「ｂをｃに名称変更、ｘ・ｂ１を削除、ｉ・ｂ２を追加」を特定する。
【００７５】
また、テストデータ生成装置１００は、変更バリエーションＢ８「｛ｘ→φ，ｂ１→φ，ｂ→φ，φ→ｉ，φ→ｂ２，φ→ｃ｝」から、プログラムの変更内容「ｘ・ｂ１・ｂを削除、ｉ・ｂ２・ｃを追加」を特定する。
【００７６】
（プログラムの加工処理の一例）
次に、図１４を用いて、プログラムの加工処理の一例について説明する。
【００７７】
図１４は、プログラムの加工処理の一例を示す説明図である。図１４に示すように、テストデータ生成装置１００は、変更前プログラムＰ１を、変更バリエーションＢから特定した変更内容に従って加工して、変更バリエーションＢ１〜Ｂ８に対応するプログラムバリエーションＰ１−１〜Ｐ１−８を作成する。
【００７８】
図１４の例では、テストデータ生成装置１００は、変更バリエーションＢ１に従って、変更前プログラムＰ１におけるｘをｉに、ｂ１をｂ２に、ｂをｃに置換して、変更バリエーションＢ１に対応するプログラムバリエーションＰ１−１を作成する。
【００７９】
また、テストデータ生成装置１００は、変更バリエーションＢ２に従って、変更前プログラムＰ１を加工する。テストデータ生成装置１００は、例えば、変更前プログラムＰ１におけるｘをｉに、ｂ１をｂ２に置換し、ｂを削除したことを表すｂ＿ｒに置換し、ｃを追加し、変更バリエーションＢ２に対応するプログラムバリエーションＰ１−２を作成する。
【００８０】
また、テストデータ生成装置１００は、変更バリエーションＢ３に従って、変更前プログラムＰ１を加工する。テストデータ生成装置１００は、例えば、変更前プログラムＰ１におけるｘをｉに、ｂをｃに置換し、ｂ１を削除したことを表すｂ１＿ｒに置換し、ｂ２を追加し、変更バリエーションＢ３に対応するプログラムバリエーションＰ１−３を作成する。
【００８１】
また、テストデータ生成装置１００は、変更バリエーションＢ４に従って、変更前プログラムＰ１を加工する。テストデータ生成装置１００は、例えば、変更前プログラムＰ１におけるｘをｉに置換し、ｂ１・ｂを削除したことを表すｂ１＿ｒ・ｂ＿ｒに置換し、ｂ２・ｃを追加し、変更バリエーションＢ４に対応するプログラムバリエーションＰ１−４を作成する。
【００８２】
また、テストデータ生成装置１００は、変更バリエーションＢ５に従って、変更前プログラムＰ１を加工する。テストデータ生成装置１００は、例えば、変更前プログラムＰ１におけるｘを削除したことを表すｘ＿ｒに置換し、ｉを追加し、ｂ１をｂ２に、ｂをｃに置換し、変更バリエーションＢ５に対応するプログラムバリエーションＰ１−５を作成する。
【００８３】
また、テストデータ生成装置１００は、変更バリエーションＢ６に従って、変更前プログラムＰ１を加工する。テストデータ生成装置１００は、例えば、変更前プログラムＰ１におけるｂ１をｂ２に置換し、ｘ・ｂを削除したことを表すｘ＿ｒ・ｂ＿ｒに置換し、ｉ・ｃを追加し、変更バリエーションＢ６に対応するプログラムバリエーションＰ１−６を作成する。
【００８４】
また、テストデータ生成装置１００は、変更バリエーションＢ７に従って、変更前プログラムＰ１を加工する。テストデータ生成装置１００は、例えば、変更前プログラムＰ１におけるｂをｃに置換し、ｘ・ｂ１を削除したことを表すｘ＿ｒ・ｂ１＿ｒに置換し、ｉ・ｂ２を追加し、変更バリエーションＢ７に対応するプログラムバリエーションＰ１−７を作成する。
【００８５】
また、テストデータ生成装置１００は、変更バリエーションＢ８に従って、変更前プログラムＰ１を加工する。テストデータ生成装置１００は、例えば、変更前プログラムＰ１におけるｘ・ｂ１・ｂを削除したことを表すｘ＿ｒ・ｂ１＿ｒ・ｂ＿ｒに置換し、ｉ・ｂ２・ｃを追加し、変更バリエーションＢ８に対応するプログラムバリエーションＰ１−８を作成する。
【００８６】
（テストデータ生成処理の一例）
次に、図１５および図１６を用いて、テストデータ生成処理の一例について説明する。
【００８７】
図１５および図１６は、テストデータ生成処理の一例を示す説明図である。図１５および図１６に示すように、テストデータ生成装置１００は、作成したプログラムバリエーションＰ１−１〜Ｐ１−８をシンボリック実行してテストデータを生成する。テストデータは、シンボリック実行により得られる命令文の系列におけるテストケースになる入力変数の値と実行結果になる出力変数の値とを含む。シンボリック実行によるテストデータの生成については従来技術のため詳細な説明は省略する。
【００８８】
図１５の例では、テストデータ生成装置１００は、プログラムバリエーションＰ１−１をシンボリック実行して得られる命令文の系列からテストデータＴ１を生成する。ここで、テストデータＴ１は、テストケース「ｉ＝０、ｂ２＝ｆａｌｓｅ、ａ＝０、ｃ＝０」と実行結果「０」を対応付けたペアを有する。また、テストデータＴ１は、テストケース「ｉ＝０、ｂ２＝ｔｒｕｅ、ａ＝−１、ｃ＝０」と実行結果「０」を対応付けたペアを有する。また、テストデータＴ１は、テストケース「ｉ＝０、ｂ２＝ｆａｌｓｅ、ａ＝０、ｃ＝１」と実行結果「−１」を対応付けたペアを有する。
【００８９】
また、テストデータ生成装置１００は、プログラムバリエーションＰ１−２をシンボリック実行して得られる命令文の系列からテストデータＴ２を生成する。ここで、テストデータＴ２は、テストケース「ｉ＝０、ｂ２＝ｆａｌｓｅ、ａ＝０、ｂ＿ｒ＝０、ｃ＝０」と実行結果「０」を対応付けたペアを有する。また、テストデータＴ２は、テストケース「ｉ＝０、ｂ２＝ｔｒｕｅ、ａ＝−１、ｂ＿ｒ＝０、ｃ＝０」と実行結果「０」を対応付けたペアを有する。また、テストデータＴ２は、テストケース「ｉ＝０、ｂ２＝ｆａｌｓｅ、ａ＝０、ｂ＿ｒ＝１、ｃ＝０」と実行結果「−１」を対応付けたペアを有する。
【００９０】
また、テストデータ生成装置１００は、プログラムバリエーションＰ１−３をシンボリック実行して得られる命令文の系列からテストデータＴ３を生成する。ここで、テストデータＴ３は、テストケース「ｉ＝０、ｂ１＿ｒ＝ｆａｌｓｅ、ａ＝０、ｃ＝０、ｂ２＝ｆａｌｓｅ」と実行結果「０」を対応付けたペアを有する。また、テストデータＴ３は、テストケース「ｉ＝０、ｂ１＿ｒ＝ｔｒｕｅ、ａ＝−１、ｃ＝０、ｂ２＝ｆａｌｓｅ」と実行結果「０」を対応付けたペアを有する。また、テストデータＴ３は、テストケース「ｉ＝０、ｂ１＿ｒ＝ｆａｌｓｅ、ａ＝０、ｃ＝１、ｂ２＝ｆａｌｓｅ」と実行結果「−１」を対応付けたペアを有する。
【００９１】
また、テストデータ生成装置１００は、プログラムバリエーションＰ１−４をシンボリック実行して得られる命令文の系列からテストデータＴ４を生成する。ここで、テストデータＴ４は、テストケース「ｉ＝０、ｂ１＿ｒ＝ｆａｌｓｅ、ａ＝０、ｂ＿ｒ＝０、ｂ２＝ｆａｌｓｅ、ｃ＝０」と実行結果「０」を対応付けたペアを有する。また、テストデータＴ４は、テストケース「ｉ＝０、ｂ１＿ｒ＝ｔｒｕｅ、ａ＝−１、ｂ＿ｒ＝０、ｂ２＝ｆａｌｓｅ、ｃ＝０」と実行結果「０」を対応付けたペアを有する。また、テストデータＴ４は、テストケース「ｉ＝０、ｂ１＿ｒ＝ｆａｌｓｅ、ａ＝０、ｂ＿ｒ＝１、ｂ２＝ｆａｌｓｅ、ｃ＝０」と実行結果「−１」を対応付けたペアを有する。
【００９２】
図１６の例では、テストデータ生成装置１００は、プログラムバリエーションＰ１−５をシンボリック実行して得られる命令文の系列からテストデータＴ５を生成する。ここで、テストデータＴ５は、テストケース「ｘ＿ｒ＝０、ｂ２＝ｆａｌｓｅ、ａ＝０、ｃ＝０、ｉ＝０」と実行結果「０」を対応付けたペアを有する。また、テストデータＴ５は、テストケース「ｘ＿ｒ＝０、ｂ２＝ｔｒｕｅ、ａ＝−１、ｃ＝０、ｉ＝０」と実行結果「０」を対応付けたペアを有する。また、テストデータＴ５は、テストケース「ｘ＿ｒ＝０、ｂ２＝ｆａｌｓｅ、ａ＝０、ｃ＝１、ｉ＝０」と実行結果「−１」を対応付けたペアを有する。
【００９３】
また、テストデータ生成装置１００は、プログラムバリエーションＰ１−６をシンボリック実行して得られる命令文の系列からテストデータＴ６を生成する。ここで、テストデータＴ６は、テストケース「ｘ＿ｒ＝０、ｂ２＝ｆａｌｓｅ、ａ＝０、ｂ＿ｒ＝０、ｉ＝０、ｃ＝０」と実行結果「０」を対応付けたペアを有する。また、テストデータＴ６は、テストケース「ｘ＿ｒ＝０、ｂ２＝ｔｒｕｅ、ａ＝−１、ｂ＿ｒ＝０、ｉ＝０、ｃ＝０」と実行結果「０」を対応付けたペアを有する。また、テストデータＴ６は、テストケース「ｘ＿ｒ＝０、ｂ２＝ｆａｌｓｅ、ａ＝０、ｂ＿ｒ＝１、ｉ＝０、ｃ＝０」と実行結果「−１」を対応付けたペアを有する。
【００９４】
また、テストデータ生成装置１００は、プログラムバリエーションＰ１−７をシンボリック実行して得られる命令文の系列からテストデータＴ７を生成する。ここで、テストデータＴ７は、テストケース「ｘ＿ｒ＝０、ｂ１＿ｒ＝ｆａｌｓｅ、ａ＝０、ｃ＝０、ｉ＝０、ｂ２＝ｆａｌｓｅ」と実行結果「０」を対応付けたペアを有する。また、テストデータＴ７は、テストケース「ｘ＿ｒ＝０、ｂ１＿ｒ＝ｔｒｕｅ、ａ＝−１、ｃ＝０、ｉ＝０、ｂ２＝ｆａｌｓｅ」と実行結果「０」を対応付けたペアを有する。また、テストデータＴ７は、テストケース「ｘ＿ｒ＝０、ｂ１＿ｒ＝ｆａｌｓｅ、ａ＝０、ｃ＝１、ｉ＝０、ｂ２＝ｆａｌｓｅ」と実行結果「−１」を対応付けたペアを有する。
【００９５】
また、テストデータ生成装置１００は、プログラムバリエーションＰ１−８をシンボリック実行して得られる命令文の系列からテストデータＴ８を生成する。ここで、テストデータＴ８は、テストケース「ｘ＿ｒ＝０、ｂ１＿ｒ＝ｆａｌｓｅ、ａ＝０、ｂ＿ｒ＝０、ｉ＝０、ｂ２＝ｆａｌｓｅ、ｃ＝０」と実行結果「０」を対応付けたペアを有する。また、テストデータＴ８は、テストケース「ｘ＿ｒ＝０、ｂ１＿ｒ＝ｔｒｕｅ、ａ＝−１、ｂ＿ｒ＝０、ｉ＝０、ｂ２＝ｆａｌｓｅ、ｃ＝０」と実行結果「０」を対応付けたペアを有する。また、テストデータＴ８は、テストケース「ｘ＿ｒ＝０、ｂ１＿ｒ＝ｆａｌｓｅ、ａ＝０、ｂ＿ｒ＝１、ｉ＝０、ｂ２＝ｆａｌｓｅ、ｃ＝０」と実行結果「−１」を対応付けたペアを有する。
【００９６】
（リファクタリング処理の一例）
次に、図１７〜図２１を用いて、リファクタリング処理の一例について説明する。
【００９７】
図１７〜図２１は、リファクタリング処理の一例を示す説明図である。図１７に示すように、テストデータ生成装置１００は、テストデータＴ１〜Ｔ８のテストケースから、削除候補のプログラム変数の項目と削除候補のパラメータ変数の項目とを削除する。
【００９８】
図１７の例では、テストデータ生成装置１００は、プログラムバリエーションＰ１−２に対応するテストデータＴ２から、パラメータ変数ｂ＿ｒについての項目を削除する。また、テストデータ生成装置１００は、プログラムバリエーションＰ１−３に対応するテストデータＴ３から、プログラム変数ｂ１＿ｒについての項目を削除する。
【００９９】
また、テストデータ生成装置１００は、プログラムバリエーションＰ１−４に対応するテストデータＴ４から、パラメータ変数ｂ＿ｒとプログラム変数ｂ１＿ｒとについての項目を削除する。また、テストデータ生成装置１００は、プログラムバリエーションＰ１−５に対応するテストデータＴ５から、プログラム変数ｘ＿ｒについての項目を削除する。
【０１００】
また、テストデータ生成装置１００は、プログラムバリエーションＰ１−６に対応するテストデータＴ６から、プログラム変数ｘ＿ｒとパラメータ変数ｂ＿ｒとについての項目を削除する。また、テストデータ生成装置１００は、プログラムバリエーションＰ１−７に対応するテストデータＴ７から、プログラム変数ｘ＿ｒとｂ１＿ｒとについての項目を削除する。
【０１０１】
また、テストデータ生成装置１００は、プログラムバリエーションＰ１−８に対応するテストデータＴ８から、プログラム変数ｘ＿ｒとｂ１＿ｒとパラメータ変数ｂ＿ｒとについての項目を削除する。次に、図１８の説明に移行する。
【０１０２】
図１８に示すように、テストデータ生成装置１００は、テストデータＴ１〜Ｔ８が有するテストケースと実行結果とのペアをマージして、新たなテストデータを作成する。図１８の例では、テストデータ生成装置１００は、テストデータＴ１〜Ｔ８をマージする際に、実線で囲われたペアや、点線で囲われたペアのように、重複するペアがあれば、一つにまとめてマージして、マージしたテストデータ１８００を作成する。次に、図１９の説明に移行する。
【０１０３】
図１９に示すように、テストデータ生成装置１００は、マージしたテストデータ１８００のうちで、テストケースが重複するペアがあれば、一つにまとめて、新たなテストデータを作成する。図１９の例では、テストデータ生成装置１００は、１行目と４行目のペアを一つにまとめて、まとめたテストデータ１９００を作成する。次に、図２０の説明に移行する。
【０１０４】
図２０に示すように、テストデータ生成装置１００は、不変変数データ７０１から不変名称を特定する。次に、テストデータ生成装置１００は、テストデータ１９００のうち、テストケースのうちの不変名称のプログラム変数とパラメータ変数との項目が同一の値になるペアがあれば、グルーピングする。
【０１０５】
図２０の例では、テストデータ生成装置１００は、不変変数データ７０１から不変名称「ａ」を特定する。次に、テストデータ生成装置１００は、テストデータ１９００のうち、不変名称のプログラム変数「ａ」の項目が同一の値になる１行目と３行目のペアをグルーピングする。また、テストデータ生成装置１００は、テストデータ１９００のうち、不変名称のプログラム変数「ａ」の項目が同一の値になる２行目と４行目のペアをグルーピングする。以下の説明では、グルーピング結果を「グループデータ２０００」と表記する場合がある。次に、図２１の説明に移行する。
【０１０６】
図２１に示すように、テストデータ生成装置１００は、グループデータ２０００が表すグルーピングしたグループのうち、実行結果が一致するグループを抽出する。図２１の例では、テストデータ生成装置１００は、実行結果がともに「０」で一致する２行目と４行目のペアのグループを抽出する。以下の説明では、抽出したグループを表すデータを「同一判定グループデータ２１００」と表記する場合がある。
【０１０７】
（リグレッションテストの一例）
次に、図２２を用いて、リグレッションテストの一例について説明する。
【０１０８】
図２２は、リグレッションテストの一例を示す説明図である。図２２に示すように、テストデータ生成装置１００は、テストデータを用いてリグレッションテストを実行する。次に、テストデータ生成装置１００は、テストデータが有する実行結果と、リグレッションテストの実行結果とを比較して、メソッドの機能が変更されているか否かを判定する。
【０１０９】
図２２の例では、テストデータ生成装置１００は、テストデータが有する１行目〜４行目の各々のペアのテストケースを入力変数として、変更後プログラムＰ２のリグレッションテストを実行し、１行目〜４行目の各々のペアに対応する実行結果２２０２「０，０，−１，−１」を取得する。ここで、テストデータ生成装置１００は、取得した実行結果２２０２「０，０，−１，−１」と、テストデータが有する１行目〜４行目の各々のペアの実行結果２２０１「｛０，１｝、０，−１，０」とを比較する。
【０１１０】
ここで、テストデータ生成装置１００は、１行目のペアについては取得した実行結果２２０２が、テストデータが有する実行結果２２０１に含まれると判定する。このため、テストデータ生成装置１００は、１行目のペアに対する判定において、メソッドの機能が変更されたと判定しない。
【０１１１】
次に、テストデータ生成装置１００は、２行目と３行目のペアについては取得した実行結果２２０２が、テストデータが有する実行結果２２０１に一致すると判定する。このため、テストデータ生成装置１００は、１行目と３行目の各々のペアに対する判定において、メソッドの機能が変更されたと判定しない。
【０１１２】
次に、テストデータ生成装置１００は、４行目については取得した実行結果２２０２が、テストデータが有する実行結果２２０１に含まれないと判定する。そして、テストデータ生成装置１００は、同一判定グループデータ２１００を参照して、４行目のペアがグルーピングしたグループに含まれるため、グループに含まれる２行目のペアについての判定結果を参照する。ここで、テストデータ生成装置１００は、２行目のペアの判定結果が一致するという判定結果であるため、４行目のペアに対する判定において、メソッドの機能が変更されたと判定しない。
【０１１３】
このように、テストデータ生成装置１００は、１行目〜４行目の各々のペアに対する判定においてメソッドの機能が変更されたと判定できなかったため、メソッドの機能が変更されていないと判定する。また、テストデータ生成装置１００は、１行目〜４行目の各々のペアに対する判定のいずれかの判定においてメソッドの機能が変更されたと判定した場合は、メソッドの機能が変更されたと判定する。これにより、テストデータ生成装置１００は、プログラム変数またはパラメータ変数が変更された変更後プログラムＰ２であっても、リグレッションテストを実行することができる。
【０１１４】
（リグレッションテストの実行処理手順）
次に、図２３を用いて、テストデータ生成装置１００のリグレッションテストの実行処理手順の一例について説明する。
【０１１５】
図２３は、リグレッションテストの実行処理手順の一例を示すフローチャートである。図２３において、テストデータ生成装置１００は、変更前プログラムＰ１と変更後プログラムＰ２とを取得する（ステップＳ２３０１）。次に、テストデータ生成装置１００は、図２４を用いて後述する特定処理を実行する（ステップＳ２３０２）。そして、テストデータ生成装置１００は、図２５を用いて後述する加工処理を実行する（ステップＳ２３０３）。
【０１１６】
次に、テストデータ生成装置１００は、図２６を用いて後述するテストデータ生成処理を実行する（ステップＳ２３０４）。そして、テストデータ生成装置１００は、図２７を用いて後述するリファクタリング処理を実行する（ステップＳ２３０５）。
【０１１７】
次に、テストデータ生成装置１００は、リグレッションテストを実行する（ステップＳ２３０６）。リグレッションテストの内容は、図２２に上述したため説明を省略する。そして、テストデータ生成装置１００は、実行処理を終了する。これにより、テストデータ生成装置１００は、変数が変更された変更後プログラムＰ２に対しても、リグレッションテストを実行することができる。
【０１１８】
（差異情報の特定処理手順）
次に、図２４を用いて、テストデータ生成装置１００の差異情報の特定処理手順の一例について説明する。
【０１１９】
図２４は、差異情報の特定処理手順の一例を示すフローチャートである。図２４において、テストデータ生成装置１００は、変更前プログラムＰ１における、プログラム変数とテスト対象のメソッドのパラメータ変数と、を抽出する（ステップＳ２４０１）。次に、テストデータ生成装置１００は、変更後プログラムＰ２における、プログラム変数とテスト対象のメソッドのパラメータ変数と、を抽出する（ステップＳ２４０２）。
【０１２０】
そして、テストデータ生成装置１００は、ステップＳ２４０１〜Ｓ２４０２によって抽出されたプログラム変数とパラメータ変数とから、変更前プログラムＰ１から変更後プログラムＰ２への変更前後における不変名称のプログラム変数とパラメータ変数とを抽出する（ステップＳ２４０３）。
【０１２１】
次に、テストデータ生成装置１００は、ステップＳ２４０１〜Ｓ２４０２によって抽出されたプログラム変数とパラメータ変数とから、変更前プログラムＰ１から変更後プログラムＰ２への変更前後における追加候補のプログラム変数とパラメータ変数とを抽出する（ステップＳ２４０４）。
【０１２２】
そして、テストデータ生成装置１００は、ステップＳ２４０１〜Ｓ２４０２によって抽出されたプログラム変数とパラメータ変数とから、変更前プログラムＰ１から変更後プログラムＰ２への変更前後における削除候補のプログラム変数とパラメータ変数とを抽出する（ステップＳ２４０５）。
【０１２３】
次に、テストデータ生成装置１００は、ステップＳ２４０４〜Ｓ２４０５によって抽出された追加候補のプログラム変数とパラメータ変数との集合と、削除候補のプログラム変数とパラメータ変数との集合に、ダミー変数を追加する（ステップＳ２４０６）。
【０１２４】
そして、テストデータ生成装置１００は、ステップＳ２４０６によってダミー変数が追加された、追加候補のプログラム変数とパラメータ変数との集合と、削除候補のプログラム変数とパラメータ変数との集合と、に基づいて、変更パターンを特定する（ステップＳ２４０７）。
【０１２５】
次に、テストデータ生成装置１００は、ステップＳ２４０７によって特定された変更パターンのうち、ダミー変数からダミー変数へと変更される変更パターンと、変数から型が異なる別の変数へと変更される変更パターンと、を除去する（ステップＳ２４０８）。そして、テストデータ生成装置１００は、変更パターンを定義域ごとに分類する（ステップＳ２４０９）。
【０１２６】
次に、テストデータ生成装置１００は、ステップＳ２４０９によって定義域ごとに分類された変更パターンのうち、変更前プログラムＰ１のプログラム変数とパラメータ変数との変更パターンを組み合わせて、すべてのバリエーションを特定する（ステップＳ２４１０）。
【０１２７】
そして、テストデータ生成装置１００は、ステップＳ２４１０によって特定された変更バリエーションに、値域が重複しないような変更パターンを追加して（ステップＳ２４１１）、特定処理を終了する。これにより、テストデータ生成装置１００は、プログラムの変更バリエーションを特定することができる。
【０１２８】
（プログラムの加工処理手順）
次に、図２５を用いて、テストデータ生成装置１００のプログラムの加工処理手順の一例について説明する。
【０１２９】
図２５は、プログラムの加工処理手順の一例を示すフローチャートである。図２５において、テストデータ生成装置１００は、変更バリエーションを選択する（ステップＳ２５０１）。次に、テストデータ生成装置１００は、ステップＳ２５０１によって選択された変更バリエーションに基づいて、変更前プログラムＰ１からプログラムバリエーションを作成する（ステップＳ２５０２）。
【０１３０】
そして、テストデータ生成装置１００は、未選択の変更バリエーションがあるか否かを判定する（ステップＳ２５０３）。ここで、未選択の変更バリエーションがある場合（ステップＳ２５０３：Ｙｅｓ）、テストデータ生成装置１００は、ステップＳ２５０１の処理に戻る。
【０１３１】
一方で、未選択の変更バリエーションがない場合（ステップＳ２５０３：Ｎｏ）、テストデータ生成装置１００は、加工処理を終了する。これにより、テストデータ生成装置１００は、プログラムバリエーションを作成することができる。
【０１３２】
（テストデータ生成処理手順）
次に、図２６を用いて、テストデータ生成装置１００のテストデータ生成処理手順の一例について説明する。
【０１３３】
図２６は、テストデータ生成処理手順の一例を示すフローチャートである。図２６において、テストデータ生成装置１００は、プログラムバリエーションを選択する（ステップＳ２６０１）。次に、テストデータ生成装置１００は、ステップＳ２６０１によって選択されたプログラムバリエーションからテストデータを作成する（ステップＳ２６０２）。
【０１３４】
そして、テストデータ生成装置１００は、未選択のプログラムバリエーションがあるか否かを判定する（ステップＳ２６０３）。ここで、未選択のプログラムバリエーションがある場合（ステップＳ２６０３：Ｙｅｓ）、テストデータ生成装置１００は、ステップＳ２６０１の処理に戻る。
【０１３５】
一方で、未選択のプログラムバリエーションがない場合（ステップＳ２６０３：Ｎｏ）、テストデータ生成装置１００は、テストデータ生成処理を終了する。これにより、テストデータ生成装置１００は、テストデータを作成することができる。
【０１３６】
（リファクタリング処理手順）
次に、図２７を用いて、テストデータ生成装置１００のリファクタリング処理手順の一例について説明する。
【０１３７】
図２７は、リファクタリング処理手順の一例を示すフローチャートである。図２７において、テストデータ生成装置１００は、テストデータに含まれる削除候補の変数の項目を削除する（ステップＳ２７０１）。次に、テストデータ生成装置１００は、テストデータが有するテストケースと実行結果のペアをマージする（ステップＳ２７０２）。
【０１３８】
そして、テストデータ生成装置１００は、マージしたテストデータのうち、テストケースが重複するペアを統合する（ステップＳ２７０３）。次に、テストデータ生成装置１００は、テストケースのうちの不変名称のプログラム変数とパラメータ変数との項目が同一の値になり、実行結果が同一の値になるペアを、グループ化する（ステップＳ２７０４）。そして、テストデータ生成装置１００は、リファクタリング処理を終了する。
【０１３９】
以上説明したように、テストデータ生成装置１００によれば、変更前プログラムＰ１と変更後プログラムＰ２とから変数の変更パターンを特定し、変更後プログラムＰ２のテストデータ生成用のプログラムバリエーションを作成することができる。そして、テストデータ生成装置１００によれば、プログラムバリエーションに基づいて、変更後プログラムＰ２のテストデータを生成することができる。
【０１４０】
これにより、テストデータ生成装置１００は、プログラム変数またはパラメータ変数の変更を含む変更後プログラムＰ２に対しても、リグレッションテストに用いるテストデータを生成することができる。このため、例えば、リグレッションテストの実行者が、変更前プログラムＰ１と変更後プログラムＰ２と、を参照して、変更後プログラムＰ２に対するテストデータを作成する場合に比べて、リグレッションテストの実行者の作業量を低減することができる。また、リグレッションテストの実行者によって誤ったテストデータが作成されることを防止することができる。
【０１４１】
また、テストデータ生成装置１００によれば、変数から同一形式の他の変数へ変更される変更パターンと、変数が削除される変更パターンと、変数が追加される変更パターンと、の少なくともいずれかを特定することができる。これにより、テストデータ生成装置１００は、プログラムバリエーションの作成に用いる変更パターンが重複しないようにして、変数パターンの数を最小限にすることができる。このため、テストデータ生成装置１００は、プログラムバリエーションの作成処理の処理量の増加を抑制することができる。
【０１４２】
また、テストデータ生成装置１００によれば、複数の変更パターンの組み合わせに基づいて、複数のプログラムバリエーションを作成することができる。これにより、テストデータ生成装置１００は、変更後プログラムＰ２のテストデータ生成用のプログラムバリエーションを作成することができる。また、テストデータ生成装置１００によれば、それぞれ異なる変数の変更パターンの組み合わせに基づいて、複数のプログラムバリエーションを作成することができる。これにより、テストデータ生成装置１００は、変更パターンの組み合わせの重複を防止することができ、プログラムバリエーションの作成処理の処理量の増加を抑制することができる。
【０１４３】
また、テストデータ生成装置１００によれば、プログラムバリエーションをシンボリック実行することにより、自動でテストデータを生成することができる。また、テストデータ生成装置１００は、テストデータを用いてリグレッションテストを実行することができる。これにより、テストデータ生成装置１００は、プログラム変数またはパラメータ変数が変更された変更後プログラム変更後プログラムＰ２に対しても、リグレッションテストを実行することができ、リグレッションテストのテスト結果を出力することができる。そして、テストデータ生成装置１００の利用者は、リグレッションテストのテスト結果から、変更後プログラムＰ２に不具合があるか否かを把握することができる。
【０１４４】
なお、本実施の形態で説明したテストデータ生成方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本テストデータ生成プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本テストデータ生成プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１４５】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１４６】
（付記１）コンピュータに、
テスト対象のメソッドが規定された第１プログラムにおける前記メソッドに用いられる変数と、前記第１プログラムから前記メソッドの内容が変更された第２プログラムにおける前記メソッドに用いられる変数とを比較した比較結果に基づいて、前記メソッドに用いられる変数の変更パターンを特定し、
特定した前記変更パターンに基づいて、前記第１プログラムにおける前記メソッドに用いられる変数を変更した第３プログラムを作成し、
作成した前記第３プログラムをシンボリック実行してテストデータを生成する、
処理を実行させることを特徴とするテストデータ生成プログラム。
【０１４７】
（付記２）前記特定する処理は、
前記メソッドに用いられる変数について、前記メソッドの内容の変更後に同一形式の他の変数に変更される変更パターンと、前記メソッドの内容の変更後に削除される変更パターンと、前記メソッドの内容の変更後に追加される変更パターンと、のうちの少なくともいずれかの変更パターンを特定することを特徴とする付記１に記載のテストデータ生成プログラム。
【０１４８】
（付記３）前記メソッドに用いられる変数は、前記メソッドの引数になるメソッドパラメータまたは前記メソッドの引数以外の変数であることを特徴とする付記１または２に記載のテストデータ生成プログラム。
【０１４９】
（付記４）前記作成する処理は、
前記メソッドに用いられる変数ごとに特定した変更パターンの組み合わせに基づいて、前記第３プログラムを作成することを特徴とする付記１〜３のいずれか一つに記載のテストデータ生成プログラム。
【０１５０】
（付記５）前記作成する処理は、
前記メソッドに用いられるそれぞれ異なる変数についての変更パターンの組み合わせに基づいて、前記第３プログラムを作成することを特徴とする付記４に記載のテストデータ生成プログラム。
【０１５１】
（付記６）前記生成する処理は、
作成した前記第３プログラムにおける命令文の系列の実行条件になる入力変数の値と実行結果になる出力変数の値とを対応付けて有するテストデータを生成することを特徴とする付記４または５に記載のテストデータ生成プログラム。
【０１５２】
（付記７）前記コンピュータに、
生成した前記テストデータが有する入力変数の値を実行条件にして前記第３プログラムを実行した場合の出力変数の値が、前記テストデータが有する出力変数の値に一致するか否かを判定する、
処理を実行させることを特徴とする付記６に記載のテストデータ生成プログラム。
【０１５３】
（付記８）前記判定する処理は、
生成した前記テストデータが有する入力変数の値を実行条件にして前記第３プログラムを実行した場合の出力変数の値が、前記テストデータが有する出力変数の値に含まれるか否かを判定することを特徴とする付記７に記載のテストデータ生成プログラム。
【０１５４】
（付記９）前記コンピュータに、
生成した前記テストデータが有する実行条件と実行結果とを対応付けたペアのうち、実行条件になる入力変数のうちの前記メソッドの変更前後で名称変更されない入力変数の値が同一になるペアであって、かつ実行結果が同一になるペアをグループ化する処理を実行させ、
前記判定する処理は、
グループ化したペアのうち、いずれかのペアに含まれる入力変数の値を実行条件にして前記第３プログラムを実行した場合の出力変数の値が、前記いずれかのペアに含まれる出力変数の値に含まれるか否かを判定することを特徴とする付記７または８に記載のテストデータ生成プログラム。
【０１５５】
（付記１０）コンピュータが、
テスト対象のメソッドが規定された第１プログラムにおける前記メソッドに用いられる変数と、前記第１プログラムから前記メソッドの内容が変更された第２プログラムにおける前記メソッドに用いられる変数とを比較した比較結果に基づいて、前記メソッドに用いられる変数の変更パターンを特定し、
特定した前記変更パターンに基づいて、前記第１プログラムにおける前記メソッドに用いられる変数を変更した第３プログラムを作成し、
作成した前記第３プログラムをシンボリック実行してテストデータを生成する、
処理を実行することを特徴とするテストデータ生成方法。
【０１５６】
（付記１１）テスト対象のメソッドが規定された第１プログラムにおける前記メソッドに用いられる変数と、前記第１プログラムから前記メソッドの内容が変更された第２プログラムにおける前記メソッドに用いられる変数とを比較した比較結果に基づいて、前記メソッドに用いられる変数の変更パターンを特定し、特定した前記変更パターンに基づいて、前記第１プログラムにおける前記メソッドに用いられる変数を変更した第３プログラムを作成する作成部と、
前記作成部によって作成された前記第３プログラムをシンボリック実行してテストデータを生成する生成部と、
を有することを特徴とするテストデータ生成装置。
【符号の説明】
【０１５７】
１００  テストデータ生成装置
３０１  特定部
３０２  作成部
３０３  生成部
３０４  判定部
【図１】
2015035185.tif 000003
【図２】
2015035185.tif 000004
【図３】
2015035185.tif 000005
【図４】
2015035185.tif 000006
【図５】
2015035185.tif 000007
【図６】
2015035185.tif 000008
【図７】
2015035185.tif 000009
【図８】
2015035185.tif 000010
【図９】
2015035185.tif 000011
【図１０】
2015035185.tif 000012
【図１１】
2015035185.tif 000013
【図１２】
2015035185.tif 000014
【図１３】
2015035185.tif 000015
【図１４】
2015035185.tif 000016
【図１５】
2015035185.tif 000017
【図１６】
2015035185.tif 000018
【図１７】
2015035185.tif 000019
【図１８】
2015035185.tif 000020
【図１９】
2015035185.tif 000021
【図２０】
2015035185.tif 000022
【図２１】
2015035185.tif 000023
【図２２】
2015035185.tif 000024
【図２３】
2015035185.tif 000025
【図２４】
2015035185.tif 000026
【図２５】
2015035185.tif 000027
【図２６】
2015035185.tif 000028
【図２７】
2015035185.tif 000029