(57)【特許請求の範囲】
【請求項１】
第１のプログラムおよび前記第１のプログラムが変更された第２のプログラムから共に期待値が返される入力値を前記第１のプログラムに与えた場合の第１の実行経路に関する条件式の系列を示すパスコンディションと、前記第１の実行経路に関する返値を示す数式と、を含む第１のシンボリック実行結果を取得する第１の取得部と、
前記入力値を前記第２のプログラムに与えた場合の第２の実行経路に関する条件式の系列を示すパスコンディションと、前記第２の実行経路に関する返値を示す数式と、を含む第２のシンボリック実行結果を取得する第２の取得部と、
前記第１の取得部によって取得された第１のシンボリック実行結果内のパスコンディションに、前記第２の取得部によって取得された第２のシンボリック実行結果内のパスコンディションが包含されているか否か、または、前記第１および第２のシンボリック実行結果内の数式が一致するか否か、に基づいて、前記入力値による前記第２のプログラムのテスト結果に関する信頼性の高さの指標になる信頼度を決定する決定部と、
前記決定部によって決定された信頼度を出力する出力部と、
を有することを特徴とする情報処理装置。
【請求項２】
前記決定部は、
前記第１の取得部によって取得された第１のシンボリック実行結果内のパスコンディションに、前記第２の取得部によって取得された第２のシンボリック実行結果内のパスコンディションが包含されていない場合、前記信頼度を低くすることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記決定部は、
前記第１および第２の取得部によって取得された第１および第２のシンボリック実行結果内の数式が一致しない場合、前記信頼度を低くすることを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記決定部によって信頼度が低くされた場合、前記第２の実行経路に関する条件式の系列を示すパスコンディションをソルバに与えることにより、前記第２の実行経路に関する条件式の系列を示すパスコンディションを満たす充足解を前記ソルバから取得する第３の取得部を有することを特徴とする請求項１乃至３のいずれか一項に記載の情報処理装置。
【請求項５】
コンピュータが、
第１のプログラムおよび前記第１のプログラムが変更された第２のプログラムから共に期待値が返される入力値を前記第１のプログラムに与えた場合の第１の実行経路に関する条件式の系列を示すパスコンディションと、前記第１の実行経路に関する返値を示す数式と、を含む第１のシンボリック実行結果を取得し、
前記入力値を前記第２のプログラムに与えた場合の第２の実行経路に関する条件式の系列を示すパスコンディションと、前記第２の実行経路に関する返値を示す数式と、を含む第２のシンボリック実行結果を取得し、
取得された第１のシンボリック実行結果内のパスコンディションに、取得された第２のシンボリック実行結果内のパスコンディションが包含されているか否か、または、取得された前記第１および第２のシンボリック実行結果内の数式が一致するか否か、に基づいて、前記第２のプログラムの信頼性の指標になる信頼度を決定し、
決定された信頼度を出力する、
処理を実行することを特徴とする情報処理方法。
【請求項６】
コンピュータに、
第１のプログラムおよび前記第１のプログラムが変更された第２のプログラムから共に期待値が返される入力値を前記第１のプログラムに与えた場合の第１の実行経路に関する条件式の系列を示すパスコンディションと、前記第１の実行経路に関する返値を示す数式と、を含む第１のシンボリック実行結果を取得し、
前記入力値を前記第２のプログラムに与えた場合の第２の実行経路に関する条件式の系列を示すパスコンディションと、前記第２の実行経路に関する返値を示す数式と、を含む第２のシンボリック実行結果を取得し、
取得された第１のシンボリック実行結果内のパスコンディションに、取得された第２のシンボリック実行結果内のパスコンディションが包含されているか否か、または、取得された第１および第２のシンボリック実行結果内の数式が一致するか否か、に基づいて、前記第２のプログラムの信頼性の指標になる信頼度を決定し、
決定された信頼度を出力する、
処理を実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、および情報処理プログラムに関する。
【背景技術】
【０００２】
従来、プログラムが変更された場合、同一のテスト入力値を変更前後のプログラムに与えた場合の返値と期待値との一致判定を行い、一致した場合にテストが成功であると判定するリグレッションテストが実行される。
【０００３】
リグレッションテストに関連する技術として、複数のテスト入力値の中から、プログラムの変更部分に対応するテスト入力値を選択する技術がある（例えば、下記特許文献１参照）。また、プログラムやプログラムの設計書を用いてテスト入力値を生成する技術がある（例えば、下記特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０１−１９９２４０号公報
【特許文献２】特開２００１−３５０６５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来技術では、選択されたテスト入力値、または生成されたテスト入力値が、誤判定を生じさせるテスト入力値である場合がある。例えば、誤りのあるプログラムに対して、リグレッションテストのテスト結果が成功になってしまうテスト入力値である場合がある。
【０００６】
具体的には、例えば、プログラムの変更に伴い、返値を算出する数式が「返値＝２」から「返値＝２＋ｘ」に誤って変更された場合に、テスト入力値として「ｘ＝０」が選択されると、変更前後の返値は共に「２」になり、期待値「２」と一致する。そのため、リグレッションテストは成功であると誤判定される。結果として、リグレッションテストの実施者は、誤りのあるプログラムを問題のないプログラムであると誤認してしまう。
【０００７】
本発明は、誤判定の疑いがあるテスト結果の検出効率の向上を図ることを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一側面によれば、第１のプログラムおよび第１のプログラムが変更された第２のプログラムから共に期待値が返される入力値を第１のプログラムに与えた場合の第１の実行経路に関する条件式の系列を示すパスコンディションと、第１の実行経路に関する返値を示す数式と、を含む第１のシンボリック実行結果を取得し、入力値を第２のプログラムに与えた場合の第２の実行経路に関する条件式の系列を示すパスコンディションと、第２の実行経路に関する返値を示す数式と、を含む第２のシンボリック実行結果を取得し、取得された第１のシンボリック実行結果内のパスコンディションに、取得された第２のシンボリック実行結果内のパスコンディションが包含されているか否か、または、取得された第１および第２のシンボリック実行結果内の数式が一致するか否か、に基づいて、第２のプログラムの信頼性の指標になる信頼度を決定し、決定された信頼度を出力する情報処理装置、情報処理方法、および情報処理プログラムが提案される。
【発明の効果】
【０００９】
本発明の一側面によれば、誤判定の疑いがあるテスト結果の検出効率の向上を図ることができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、情報処理装置によるリグレッションテストのテスト結果の信頼度決定の流れを示す説明図である。
【図２】図２は、実施の形態にかかる情報処理装置１００のハードウェア構成例を示すブロック図である。
【図３】図３は、変更前のプログラムＰ１の一例を示す説明図である。
【図４】図４は、図３に示したプログラムＰ１に対するテスト結果の一例を示す説明図である。
【図５】図５は、変更後のプログラムＰ２の一例を示す説明図である。
【図６】図６は、図５に示したプログラムＰ２に対するテスト結果の一例を示す説明図（その１）である。
【図７】図７は、図５に示したプログラムＰ２に対するテスト結果の一例を示す説明図（その２）である。
【図８】図８は、追加テストケースＴＣの一例を示す説明図である。
【図９】図９は、情報処理装置１００の機能的構成を示すブロック図である。
【図１０】図１０は、情報処理装置１００による信頼度決定処理の詳細な処理手順を示すフローチャートである。
【図１１】図１１は、プログラムＰに対するシンボリック実行の手順を示す説明図である。
【図１２】図１２は、変更前のプログラムＰ１に対するシンボリック実行結果の一例を示す説明図である。
【図１３】図１３は、変更後のプログラムＰ２に対するシンボリック実行結果の一例を示す説明図である。
【図１４】図１４は、情報処理装置１００による「成功」のテストケースＴＣの特定の一例を示す説明図である。
【図１５】図１５は、情報処理装置１００による「成功」のテストケースＴＣに対応するシンボリック実行結果の特定の一例を示す説明図である。
【図１６】図１６は、シンボリック実行結果特定処理の詳細な処理手順を示すフローチャートである。
【図１７】図１７は、情報処理装置１００によるシンボリック実行結果の比較の一例を示す説明図である。
【図１８】図１８は、情報処理装置１００によるパスコンディション比較処理の詳細な処理手順を示すフローチャート（その１）である。
【図１９】図１９は、情報処理装置１００によるパスコンディション比較処理の詳細な処理手順を示すフローチャート（その２）である。
【図２０】図２０は、情報処理装置１００による数式比較処理の詳細な処理手順を示すフローチャートである。
【図２１】図２１は、数式比較ルールの例１を示す説明図である。
【図２２】図２２は、数式比較ルールの例２を示す説明図である。
【図２３】図２３は、情報処理装置１００による信頼度決定の一例を示す説明図である。
【図２４】図２４は、情報処理装置１００による決定処理の詳細な処理手順を示すフローチャートである。
【図２５】図２５は、情報処理装置１００によるテスト入力値の生成を示す説明図である。
【図２６】図２６は、テスト入力値生成処理の詳細な処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して、この発明にかかる情報処理装置、情報処理方法、および情報処理プログラムの実施の形態を詳細に説明する。
【００１２】
図１は、情報処理装置によるリグレッションテストのテスト結果の信頼度決定の流れを示す説明図である。情報処理装置１００は、リグレッションテストのテスト結果の信頼度を決定するコンピュータである。
【００１３】
また、情報処理装置１００は、テストケース群ＴＣｓを用いて、プログラムＰ１のテストを実行する。テストケース群ＴＣｓは、いわゆるテストスイートである。テストケースＴＣは、プログラムＰへのテスト入力値と、当該テスト入力値に対する期待値と、を対応付けたデータである。また、情報処理装置１００は、プログラムＰ１からプログラムＰ２に変更された場合、プログラムＰ１のテストに使用したテストケース群ＴＣｓを流用して、プログラムＰ２のリグレッションテストを実行する。
【００１４】
図１の例では、テストケース群ＴＣｓのうちテストケースＴＣ１を例に挙げて、情報処理装置１００による信頼度決定の流れについて説明する。
【００１５】
（１）まず、情報処理装置１００は、プログラムＰ１に対してテストケースＴＣ１を入力して、テストを実行する。この場合、プログラムＰ１からの返値は期待値通りになるとする。そのため、情報処理装置１００は、テストケースＴＣ１に対するプログラムＰ１のテスト結果を「成功」とする。（２）次に、情報処理装置１００の利用者により、プログラムＰ１がプログラムＰ２に変更されたとする。
【００１６】
（３）そして、情報処理装置１００は、プログラムＰ１が変更された場合、変更前のプログラムＰ１のテストの実行に使用したテストケースＴＣ１を流用して、変更後のプログラムＰ２のリグレッションテストを実行する。この場合、変更後のプログラムＰ２からの返値は、変更前後において同一の値になるとする。そのため、情報処理装置１００は、テストケースＴＣ１に対する変更後のプログラムＰ２のリグレッションテストのテスト結果を「成功」とする。
【００１７】
（４）ここで、情報処理装置１００は、（３）のテスト結果が信頼できるか否かを判定する。テスト結果が信頼できない場合とは、例えば、変更前後の返値が、偶々、同一の値になって、テスト結果が「成功」になった場合である。
【００１８】
情報処理装置１００は、例えば、（３）のテスト結果が信頼できるか否かを判定するため、変更前後のプログラムＰ１，Ｐ２をシンボリック実行し、シンボリック実行結果を取得する。シンボリック実行（Ｓｙｍｂｏｌｉｃ  Ｅｘｅｃｕｔｉｏｎ）とは、「記号実行」とも呼ばれる。
【００１９】
シンボリック実行とは、プログラムＰの変数に具体的な確定値を入力する代わりにシンボル値と呼ばれる記号値を入力して、シンボル値のままプログラムＰを模擬的に実行し、プログラムＰの実行結果を評価する技術である。
【００２０】
シンボリック実行結果には、例えば、変更前後のプログラムＰ１，Ｐ２のパス群の各パスに関する返値を示す数式が含まれる。また、シンボリック実行結果には、例えば、変更前後のプログラムＰ１，Ｐ２のパス群の各パスに関する条件式の系列を示すパスコンディションが含まれる。
【００２１】
パスとは、プログラムＰをシンボリック実行した場合に得られる命令文の系列である。パスコンディションとは、プログラムＰに記述されたｉｆ文等の条件式から単純に算出されるものではなく、実行可能パスについて、条件式の間に実行された変数の更新結果も取り込んだ条件式の系列である。換言すれば、パスコンディションとは、実行可能パスが終了するまでに経由する条件である。したがって、単なる命令文の系列とは異なる。
【００２２】
次に、情報処理装置１００は、変更前のパスコンディションに変更後のパスコンディションが包含され、かつ、変更前後の数式が一致する場合に、（３）のテスト結果が信頼できると判定する。図１の例では、（５）情報処理装置１００は、変更前後の数式が異なるため、（３）のテスト結果が信頼できず、信頼度は「要確認」であると決定する。信頼度決定の詳細については図１０〜図２５を用いて後述する。
【００２３】
これにより、情報処理装置１００は、偶々、変更前後のプログラムＰ１，Ｐ２の返値が一致し、リグレッションテストのテスト結果が「成功」になる場合に、情報処理装置１００の利用者に、信頼度「要確認」を通知することができる。
【００２４】
結果として、情報処理装置１００の利用者は、リグレッションテストのテスト結果が「成功」であっても、信頼度「要確認」の通知を受けることにより、誤りのあるプログラムＰを正しいプログラムＰと誤認してしまうことを防止することができる。
【００２５】
また、情報処理装置１００の利用者は、信頼度「要確認」の通知を受け、変更後のプログラムＰに誤りがあるか否かを確認し、誤りがあればプログラムＰを修正することができる。また、情報処理装置１００の利用者は、信頼度「要確認」の通知を受けた場合、テストケースＴＣを増加させて、変更後のプログラムＰのテストを実行することができる。
【００２６】
また、図１の例では、情報処理装置１００が変更前後のプログラムＰ１，Ｐ２に対してテスト実行を行ったが、これに限らない。例えば、情報処理装置１００の外部に存在する他の情報処理装置によって変更前後のプログラムＰ１，Ｐ２に対するテスト実行が行われてもよい。
【００２７】
（情報処理装置１００のハードウェア構成例）
次に、図２を用いて、図１に示した情報処理装置１００として使用されるコンピュータの一例について説明する。
【００２８】
図２は、実施の形態にかかる情報処理装置１００のハードウェア構成例を示すブロック図である。図２において、情報処理装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０３と、磁気ディスクドライブ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）２０４と、磁気ディスク２０５と、光ディスクドライブ２０６と、光ディスク２０７と、ディスプレイ２０８と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）２０９と、キーボード２１０と、マウス２１１と、スキャナ２１２と、プリンタ２１３と、を備えている。また、各構成部はバス２００によってそれぞれ接続されている。
【００２９】
ここで、ＣＰＵ２０１は、情報処理装置１００の全体の制御を司る。ＲＯＭ２０２は、ブートプログラムＰなどのプログラムＰを記憶している。ＲＡＭ２０３は、ＣＰＵ２０１のワークエリアとして使用される。磁気ディスクドライブ２０４は、ＣＰＵ２０１の制御に従って磁気ディスク２０５に対するデータのリード／ライトを制御する。磁気ディスク２０５は、磁気ディスクドライブ２０４の制御で書き込まれたデータを記憶する。
【００３０】
光ディスクドライブ２０６は、ＣＰＵ２０１の制御に従って光ディスク２０７に対するデータのリード／ライトを制御する。光ディスク２０７は、光ディスクドライブ２０６の制御で書き込まれたデータを記憶したり、光ディスク２０７に記憶されたデータをコンピュータに読み取らせたりする。
【００３１】
ディスプレイ２０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ２０８は、例えば、液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００３２】
インターフェース（以下、「Ｉ／Ｆ」と略する。）２０９は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク２１４に接続され、このネットワーク２１４を介して他の装置に接続される。そして、Ｉ／Ｆ２０９は、ネットワーク２１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ２０９には、例えばモデムやＬＡＮアダプタなどを採用することができる。
【００３３】
キーボード２１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力を行う。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス２１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などを行う。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００３４】
スキャナ２１２は、画像を光学的に読み取り、情報処理装置１００内に画像データを取り込む。なお、スキャナ２１２は、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）機能を持たせてもよい。また、プリンタ２１３は、画像データや文書データを印刷する。プリンタ２１３には、例えば、レーザプリンタやインクジェットプリンタを採用することができる。なお、光ディスクドライブ２０６、光ディスク２０７、ディスプレイ２０８、キーボード２１０、マウス２１１、スキャナ２１２、およびプリンタ２１３の少なくともいずれか１つは、なくてもよい。
【００３５】
次に、図３〜図８を用いて、情報処理装置１００により信頼度決定に使用される変更前後のプログラムＰ１，Ｐ２および変更前後のプログラムＰ１，Ｐ２に対するテスト結果の一例を示す。
【００３６】
（変更前のプログラムＰ１）
図３は、変更前のプログラムＰ１の一例を示す説明図である。符号３０１のソースコードに示すように、プログラムＰ１は、変数「ｘ，ｙ」を入力にし、変数「ｒｔｎ」を返値にする。また、プログラムＰ１は、２個のｉｆ文と１個の更新文が記述されている。そのため、符号３０２のフロー図に示すように、プログラムＰ１は、２個のｉｆ文による条件分岐に依存して、３つのパスＰ１１，Ｐ１２，Ｐ１３を含む。
【００３７】
（変更前のプログラムＰ１に対するテスト結果）
図４は、図３に示したプログラムＰ１に対するテスト結果の一例を示す説明図である。図４に示すように、プログラムＰ１に対するテスト結果は、例えば、情報処理装置１００が有する変更前テスト結果テーブル４００に格納される。変更前テスト結果テーブル４００は、例えば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶装置により実現される。
【００３８】
変更前テスト結果テーブル４００は、テストケース項目のそれぞれに対応付けて、テスト入力値項目と、期待値項目と、返値項目と、テスト結果項目と、備考項目と、を有し、テストケースＴＣごとにレコードを構成する。
【００３９】
テストケース項目には、テストケースＴＣの識別子が記憶される。テスト入力値項目には、テストケース項目のテストケースＴＣに対応するテスト入力値が記憶される。期待値項目には、テスト入力値項目のテスト入力値に対する期待値が記憶される。返値項目には、テスト入力値項目のテスト入力値に対するプログラムＰ１からの返値が記憶される。テスト結果項目には、テストが成功か否かが記憶される。テストが成功とは、返値と期待値が一致することをいう。備考項目には、テストケース項目のテストケースＴＣが、どのパスをテストしたテストケースＴＣであるかが記憶される。
【００４０】
図４の例では、変更前テスト結果テーブル４００には、テスト入力値「（０，０）」に対する期待値が「２」になる「テストケースＴＣ２」に関するレコードが記憶されている。変更前テスト結果テーブル４００には、テストケースＴＣ２に対応付けて、返値が「２」であることと、返値が期待値と一致するためテスト結果が「成功」であることと、が記憶されている。また、変更前テスト結果テーブル４００には、テストケースＴＣ２が「パスＰ１２」をテストしたテストケースＴＣであることが記憶されている。
【００４１】
（変更後のプログラムＰ２）
図５は、変更後のプログラムＰ２の一例を示す説明図である。符号５０１のソースコードに示すように、プログラムＰ２は、変数「ｘ，ｙ」を入力にし、変数「ｒｔｎ」を返値にする。また、符号５−１に示すように、プログラムＰ２は、プログラムＰ１に追加して１個のｉｆ文が記述され、３個のｉｆ文が記述されている。そのため、符号５０２のフロー図に示すように、プログラムＰ２は、実行可能な４つのパスＰ２１ａ，Ｐ２１ｂ，Ｐ２２，Ｐ２３を有する。
【００４２】
また、符号５−２に示すように、プログラムＰ２は、プログラムＰ１に追加して１個の代入文が追加されている。また、符号５−３に示すように、プログラムＰ２は、プログラムＰ１の返値を示す数式「２」が「２＋ｘ」に変更されている。ここで、プログラムＰ１の返値を示す数式が変更されているのは、プログラムＰの変更者によるミスとする。
【００４３】
（変更後のプログラムＰ２に対するテスト結果）
図６および図７は、図５に示したプログラムＰ２に対するテスト結果の一例を示す説明図である。図６に示すように、プログラムＰ２に対するテスト結果は、例えば、情報処理装置１００が有する変更後テスト結果テーブル６００に格納される。変更後テスト結果テーブル６００は、例えば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶装置により実現される。
【００４４】
変更後テスト結果テーブル６００は、テストケース項目のそれぞれに対応付けて、テスト入力値項目と、期待値項目と、返値項目と、テスト結果項目と、備考項目と、を有し、テストケースＴＣごとにレコードを構成する。
【００４５】
テストケース項目には、テストケースＴＣの識別子が記憶される。テスト入力値項目には、テストケース項目のテストケースＴＣに対応するテスト入力値が記憶される。期待値項目には、テスト入力値項目のテスト入力値に対する期待値が記憶される。返値項目には、テスト入力値項目のテスト入力値に対するプログラムＰ２からの返値が記憶される。テスト結果項目には、テストが成功か否かが記憶される。テストが成功とは、返値が変更前後において同一の期待値になることをいう。備考項目には、テストケース項目のテストケースＴＣが、どのパスをテストしたテストケースＴＣであるかが記憶される。
【００４６】
図６の例では、変更後テスト結果テーブル６００には、テスト入力値「（０，０）」に対する期待値が「２」になる「テストケースＴＣ２」に関するレコードが記憶されている。変更後テスト結果テーブル６００には、テストケースＴＣ２に対応付けて、返値が「２」であることと、返値が期待値と一致するためテスト結果が「成功」であることと、が記憶されている。また、変更後テスト結果テーブル６００には、テストケースＴＣ２が「パスＰ２２」をテストしたテストケースＴＣであることが記憶されている。
【００４７】
ここで、図７に示すように、変更により、返値「ｒｔｎ」の数式は「ｒｔｎ＝２」から、「ｒｔｎ＝２＋ｘ」に変更されている。しかし、テスト入力値が「ｘ＝０」の場合、変更前後において返値は変わらず「ｒｔｎ＝２」になり、期待値と一致する。そのため、図６の例では、テスト結果項目は「成功」になっている。このように、テスト結果項目には、変更前後において、偶々、返値が一致したために、「成功」と誤判定されたテスト結果が記憶される場合がある。そのため、情報処理装置１００は、「成功」と誤判定された疑いがあるテスト結果の検出を容易にするために、図１０〜図２５を用いて後述するようにテスト結果の信頼度を決定することになる。
【００４８】
また、図６に示すように、パスＰ２１ａ，Ｐ２２，Ｐ２３は、テストケースＴＣ１〜ＴＣ３によりテストされている。しかし、パスＰ２１ｂはテストされていない。そのため、情報処理装置１００の利用者は、パスＰ２１ｂをテストする追加テストケースＴＣを生成して、プログラムＰ２をテストしてもよい。
【００４９】
（追加テストケースＴＣ）
次に、図８を用いて、追加テストケースＴＣの一例について説明する。図８に示す追加テストケースＴＣによるテスト結果は、例えば、情報処理装置１００が有する追加テスト結果テーブルに記憶される。
【００５０】
図８は、追加テストケースＴＣの一例を示す説明図である。各項目の内容は図４に示した各項目の内容と同様のため、ここでは説明を省略する。図８の例では、テスト入力値「（２，−１）」に対する期待値が「０」になる「テストケースＴＣ４」に対応付けて、返値が「０」であることと、返値が期待値と一致するためテスト結果が「成功」であることと、が記憶されている。また、テストケースＴＣ２は、「パスＰ２１ｂ」をテストしたテストケースＴＣであることが記憶されている。ここで、追加テストケースＴＣ４は、変更前のプログラムＰ１に対するテスト結果がないため、情報処理装置１００による信頼度決定の対象にはならない。
【００５１】
（情報処理装置１００の機能的構成例）
次に、図９を用いて、情報処理装置１００の機能的構成例について説明する。図９は、情報処理装置１００の機能的構成を示すブロック図である。情報処理装置１００は、第１の取得部９０１と、第２の取得部９０２と、決定部９０３と、生成部９０４と、出力部９０５と、第３の取得部９０６と、を含む構成である。第１の取得部９０１と、第２の取得部９０２と、決定部９０３と、生成部９０４と、出力部９０５と、第３の取得部９０６とは、具体的には、例えば、図２に示したＲＯＭ２０２、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶装置に記憶されたプログラムＰをＣＰＵ２０１に実行させることにより、または、Ｉ／Ｆ２０９により、その機能を実現する。
【００５２】
第１の取得部９０１は、第１のプログラムＰ１および第１のプログラムＰ１が変更された第２のプログラムＰ２から共に期待値が返される入力値を第１のプログラムＰ１に与えた場合の第１の実行経路に関する第１のシンボリック実行結果を取得する。
【００５３】
ここで、第１のプログラムＰ１は、例えば、上述したプログラムＰ１である。第２のプログラムＰ２は、例えば、上述したプログラムＰ２である。期待値は、テストケースＴＣに含まれ、正しく動作するプログラムＰにテスト入力値を与えた場合の返値になる値である。入力値は、テストケースＴＣに含まれるテスト入力値である。実行経路は、例えば、パスである。第１の実行経路は、例えば、上述したパスＰ１２である。
【００５４】
第１のシンボリック実行結果は、第１の実行経路に関する条件式の系列を示すパスコンディションを含んでもよい。第１のシンボリック実行結果は、第１の実行経路に関する返値を示す数式を含んでもよい。
【００５５】
第１の取得部９０１は、具体的には、例えば、プログラムＰ１とプログラムＰ２とに対して「成功」のテストケースＴＣ２に関するプログラムＰ１のシンボリック実行結果を取得する。プログラムＰ１のシンボリック実行結果は、例えば、パスコンディション「（（ｙ＋１）＞０）＆＆（（ｙ＋ｘ）≦０）」と返値を示す数式「ｒｔｎ＝２」とを含む。
【００５６】
取得されたシンボリック実行結果は、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。これにより、決定部９０３は、第１の取得部９０１によって取得されたシンボリック実行結果から、リグレッションテストのテスト結果の信頼度を決定することができる。
【００５７】
第２の取得部９０２は、入力値を第２のプログラムＰ２に与えた場合の第２の実行経路に関する第２のシンボリック実行結果を取得する。ここで、第２の実行経路は、例えば、パスＰ２２である。第２のシンボリック実行結果は、第２の実行経路に関する条件式の系列を示すパスコンディションを含んでもよい。第２のシンボリック実行結果は、第２の実行経路に関する返値を示す数式を含んでもよい。
【００５８】
第２の取得部９０２は、具体的には、例えば、プログラムＰ１とプログラムＰ２とに対して「成功」のテストケースＴＣ２に関するプログラムＰ２のシンボリック実行結果を取得する。プログラムＰ２のシンボリック実行結果は、例えば、パスコンディション「（（ｙ＋１）＞０）＆＆（（ｙ＋ｘ）≦０）」と返値を示す数式「ｒｔｎ＝２＋ｘ」とを含む。
【００５９】
取得されたシンボリック実行結果は、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。これにより、決定部９０３は、第２の取得部９０２によって取得されたシンボリック実行結果から、リグレッションテストのテスト結果の信頼度を決定することができる。
【００６０】
決定部９０３は、第１および第２の取得部９０２によって取得された第１および第２のシンボリック実行結果に基づいて、入力値による第２のプログラムＰ２のテスト結果に関する信頼性の高さの指標になる信頼度を決定する。入力値によるプログラムＰ２のテスト結果とは、リグレッションテストのテスト結果である。ここで、信頼度は、例えば、２つの度合いがあるとし、２つの度合いのうち信頼度の高い方を「信頼できる」と称し信頼度の低い方を「要確認」と称し、初期状態では「信頼できる」に設定されているとする。信頼度は、例えば、３以上の度合いがあってもよい。
【００６１】
決定部９０３は、具体的には、例えば、第１のシンボリック実行結果内のパスコンディションに、第２のシンボリック実行結果内のパスコンディションが包含されていない場合、信頼度を低くする。第１のシンボリック実行結果は、第１の取得部９０１によって取得されたシンボリック実行結果である。第２のシンボリック実行結果は、第２の取得部９０２によって取得されたシンボリック実行結果である。
【００６２】
ここで、プログラムＰ１のシンボリック実行結果内のパスコンディションが「（（ｙ＋１）＞０）＆＆（（ｙ＋ｘ）≦０）」、プログラムＰ２のシンボリック実行結果内のパスコンディションが「（ｙ＋ｘ≦０）」である場合を例に挙げる。この場合、決定部９０３は、「（（ｙ＋１）＞０）＆＆（（ｙ＋ｘ）≦０）」に「（ｙ＋ｘ≦０）」が包含されていないため、信頼度を「信頼できる」から「要確認」に変更する。
【００６３】
また、決定部９０３は、具体的には、例えば、第１および第２の取得部９０２によって取得された第１および第２のシンボリック実行結果内の数式が一致しない場合、信頼度を低くしてもよい。ここで、プログラムＰ１のシンボリック実行結果内の数式が「ｒｔｎ＝２」、プログラムＰ２のシンボリック実行結果内の数式が「ｒｔｎ＝２＋ｘ」である場合を例に挙げる。この場合、決定部９０３は、数式が不一致であるため、信頼度を「信頼できる」から「要確認」に変更する。
【００６４】
また、決定部９０３は、第１および第２の取得部９０２によって取得された第１および第２のシンボリック実行結果内の数式が、生成部９０４によって生成された値に対して同一の返値を示さない場合、信頼度を低くしてもよい。この場合、生成部９０４は、第１の実行経路に関する条件式の系列を示すパスコンディションと第２の実行経路に関する条件式の系列を示すパスコンディションとに共に包含される値を生成する。
【００６５】
生成部９０４は、具体的には、例えば、プログラムＰ１のパスコンディション「（（ｙ＋１）＞０）＆＆（（ｙ＋ｘ）≦０）」と、プログラムＰ２のパスコンディション「（（ｙ＋１）＞０）＆＆（（ｙ＋ｘ）≦０）」と、を充足する変数の値「（ｘ，ｙ）＝（−１，０）」を生成する。次に、決定部９０３は、生成部９０４によって生成された変数の値「（ｘ，ｙ）＝（−１，０）」を、変更前後の数式「ｒｔｎ＝２」と「ｒｔｎ＝２＋ｘ」とに代入する。ここで、決定部９０３は、代入結果が「２」と「１」とになり、不一致であるため、信頼度を「信頼できる」から「要確認」に変更する。
【００６６】
決定された信頼度は、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。これにより、出力部９０５は、情報処理装置１００の利用者に信頼度を通知することができる。
【００６７】
出力部９０５は、決定部９０３によって決定された信頼度を出力する。出力部９０５は、具体的には、例えば、決定部９０３によって決定された「要確認」を出力する。出力形式としては、例えば、ディスプレイ２０８への表示、プリンタ２１３への印刷出力、Ｉ／Ｆ２０９による外部装置への送信がある。また、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶することとしてもよい。
【００６８】
これにより、情報処理装置１００の利用者は、リグレッションテストのテスト結果が「成功」であっても、信頼度「要確認」の通知を受けることにより、誤りのあるプログラムＰを正しいプログラムＰと誤認してしまうことを防止することができる。
【００６９】
第３の取得部９０６は、決定部９０３によって信頼度が低くされた場合、第２の実行経路に関する条件式の系列を示すパスコンディションを満たす充足解をソルバから取得する。この場合、第３の取得部９０６は、第２の実行経路に関する条件式の系列を示すパスコンディションをソルバに与える。ソルバは、渡されたパスコンディションから充足解を求め、第３の取得部９０６に返す。
【００７０】
第３の取得部９０６は、具体的には、例えば、パスＰ２２に関するパスコンディション「（（ｙ＋１）＞０）＆＆（（ｙ＋ｘ）≦０）」を満たすテスト入力値をソルバから取得する。この場合、第３の取得部９０６は、ソルバにパスＰ２２に関するパスコンディション「（（ｙ＋１）＞０）＆＆（（ｙ＋ｘ）≦０）」を渡す。ソルバは、渡されたパスコンディション「（（ｙ＋１）＞０）＆＆（（ｙ＋ｘ）≦０）」を充足するテスト入力値「（ｘ，ｙ）＝（−１，０）」を充足解として求め、第３の取得部９０６に返す。ソルバには、例えば、制約ソルバが採用される。
【００７１】
取得された充足解は、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域に記憶される。これにより、情報処理装置１００は、取得部によって取得されたテスト入力値を用いて、「要確認」のテストケースＴＣに対して新たにテストを実行することができる。
【００７２】
・情報処理装置１００による信頼度決定の詳細
次に、図１０〜図２５を用いて、情報処理装置１００による信頼度決定の詳細について説明する。まず、図１０を用いて、情報処理装置１００による信頼度決定処理の流れについて説明する。その後、図１１〜図２５を用いて、図１０に示す信頼度決定処理の各処理の詳細について説明する。
【００７３】
（信頼度決定処理）
図１０は、情報処理装置１００による信頼度決定処理の詳細な処理手順を示すフローチャートである。図１０に示すように、情報処理装置１００は、変更前のプログラムＰ１に対して実行したテストスイートを流用し、変更後のプログラムＰ２に対してテストスイートを実行して、テスト結果が「成功」のテストケースＴＣを取得する（ステップＳ１００１）。
【００７４】
次に、情報処理装置１００は、変更前後のプログラムＰ１，Ｐ２に対して、期待値と比較されるべき返値の指定を受ける（ステップＳ１００２）。そして、情報処理装置１００は、変更前後のプログラムＰ１，Ｐ２の各々をシンボリック実行し、シンボリック実行結果を保持する（ステップＳ１００３）。
【００７５】
次に、情報処理装置１００は、変更前後のプログラムＰ１，Ｐ２のシンボリック実行結果のうち、パスコンディションと、「成功」のテストケースＴＣのテスト入力値を比較する。これにより、情報処理装置１００は、「成功」のテストケースＴＣに対応するパスコンディションを特定する（ステップＳ１００４）。
【００７６】
そして、情報処理装置１００は、「成功」のテストケースＴＣに対応する変更前のプログラムＰの１のシンボリック実行結果と、「成功」のテストケースＴＣに対応する変更後のプログラムＰの２のシンボリック実行結果と、を比較する（ステップＳ１００５）。
【００７７】
次に、情報処理装置１００は、比較結果を用いて、変更後のプログラムＰ２の「成功」のテストケースＴＣの信頼度を決定する（ステップＳ１００６）。そして、情報処理装置１００は、「成功」のテストケースＴＣの信頼度が「要確認」である場合、確認用のテストケースＴＣを生成し、生成したテストケースＴＣの実行結果を出力する（ステップＳ１００７）。
【００７８】
次に、情報処理装置１００は、信頼度決定処理を終了する。これにより、情報処理装置１００は、情報処理装置１００の利用者に、信頼度「要確認」を通知することができる。結果として、情報処理装置１００の利用者は、リグレッションテストのテスト結果が「成功」であっても、信頼度「要確認」の通知を受けることにより、誤りのあるプログラムＰを正しいプログラムＰと誤認してしまうことを防止することができる。
【００７９】
また、情報処理装置１００の利用者は、信頼度「要確認」の通知を受け、変更後のプログラムＰに誤りがあるか否かを確認し、誤りがあればプログラムＰを修正することができる。また、情報処理装置１００の利用者は、信頼度「要確認」の通知を受けた場合、テストケースＴＣを増加させて、変更後のプログラムＰのテストを実行することができる。
【００８０】
（プログラムＰに対するシンボリック実行）
次に、図１１〜図１３を用いて、情報処理装置１００によるプログラムＰに対するシンボリック実行の一例について説明する。図１１〜図１３は、ステップＳ１００１〜ステップＳ１００３に示した処理に対応する。
【００８１】
図１１は、プログラムＰに対するシンボリック実行の手順を示す説明図である。図１１に示すように、情報処理装置１００は、シンボリック実行のため、シンボリック実行対象のプログラムＰにテスト用ドライバを付与する。テスト用ドライバは、変数をシンボル値に設定する設定文と、返値を示す数式を出力させる出力文と、を含む。
【００８２】
次に、情報処理装置１００は、テスト用ドライバとシンボリック実行対象のプログラムＰとを併せて実行することにより、シンボリック実行対象のプログラムＰをシンボリック実行する。図１１の例では、テスト用ドライバにより変数ｘ，ｙがシンボル値に設定されたプログラムＰが実行される。
【００８３】
そして、情報処理装置１００は、シンボリック実行対象のプログラムＰをシンボリック実行して、プログラムＰの実行可能な各経路におけるパスコンディションと返値を示す数式とを出力する。図１１の例では、情報処理装置１００は、シンボリック実行結果として、プログラムＰの実行可能な各経路のパスコンディションと、テスト用ドライバが指定する返値ｒｔｎを示す数式と、を出力する。
【００８４】
次に、図１２を用いて、図１１に示したテスト用ドライバを用いて、変更前のプログラムＰ１をシンボリック実行する場合について説明する。
【００８５】
図１２は、変更前のプログラムＰ１に対するシンボリック実行結果の一例を示す説明図である。図１２に示すように、情報処理装置１００は、図１１に示したテスト用ドライバを付与したプログラムＰ１を、シンボリック実行する。
【００８６】
情報処理装置１００は、シンボリック実行により、図３に示したプログラムＰ１のパスＰ１１，Ｐ１２，Ｐ１３の各パスに関するパスコンディションと、返値を示す数式と、を含むシンボリック実行結果Ｐｒｅ１，Ｐｒｅ２，Ｐｒｅ３を取得する。ここで、情報処理装置１００は、どのパスコンディションと、どの数式とが、どのパスに関するかを特定していない。
【００８７】
シンボリック実行結果は、例えば、変更前シンボリック実行結果テーブル１２００に記憶される。変更前シンボリック実行結果テーブル１２００は、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域により実現される。
【００８８】
変更前シンボリック実行結果テーブル１２００は、Ｉｄ項目のそれぞれに対応付けて、パスコンディション項目と、数式項目とを有し、シンボリック実行結果ごとにレコードを構成する。Ｉｄ項目には、便宜上付与されたシンボリック実行結果の識別子が記憶される。パスコンディション項目には、パスコンディションが記憶される。数式項目には、返値を示す数式が記憶される。
【００８９】
図１２の例では、変更前シンボリック実行結果テーブル１２００には、「シンボリック実行結果Ｐｒｅ２」に対応付けて、パスコンディションが「（（ｙ＋１）＞０）＆＆（（ｙ＋ｘ≦０））」であることが記憶されている。また、変更前シンボリック実行結果テーブル１２００には、「シンボリック実行結果Ｐｒｅ２」に対応付けて、返値を示す数式が「２」であることと、が記憶されている。
【００９０】
次に、図１３を用いて、図１１に示したテスト用ドライバを用いて、変更後のプログラムＰ２をシンボリック実行する場合について説明する。
【００９１】
図１３は、変更後のプログラムＰ２に対するシンボリック実行結果の一例を示す説明図である。図１３に示すように、情報処理装置１００は、図１１に示したテスト用ドライバを付与したプログラムＰ２を、シンボリック実行する。
【００９２】
情報処理装置１００は、シンボリック実行により、図５に示したプログラムＰ２のパスＰ２１ａ，Ｐ２１ｂ，Ｐ２２，Ｐ２３の各パスに関するパスコンディションと、返値を示す数式と、を含むシンボリック実行結果Ｐｏｓｔ１〜Ｐｏｓｔ４を出力する。ここで、情報処理装置１００は、どのパスコンディションと、どの数式とが、どのパスに関するかを特定していない。
【００９３】
シンボリック実行結果は、例えば、変更後シンボリック実行結果テーブル１３００に記憶される。変更後シンボリック実行結果テーブル１３００は、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域により実現される。
【００９４】
変更後シンボリック実行結果テーブル１３００は、Ｉｄ項目のそれぞれに対応付けて、パスコンディション項目と、数式項目とを有し、シンボリック実行結果ごとにレコードを構成する。Ｉｄ項目には、便宜上付与されたシンボリック実行結果の識別子が記憶される。パスコンディション項目には、パスコンディションが記憶される。数式項目には、返値を示す数式が記憶される。
【００９５】
図１３の例では、変更後シンボリック実行結果テーブル１３００には、「シンボリック実行結果Ｐｏｓｔ２」に対応付けて、パスコンディションが「（（ｙ＋１）＞０）＆＆（（ｙ＋ｘ≦０））」であることが記憶されている。また、変更後シンボリック実行結果テーブル１３００には、「シンボリック実行結果Ｐｏｓｔ２」に対応付けて、返値を示す数式が「２＋ｘ」であることが記憶されている。
【００９６】
これにより、情報処理装置１００は、特定したパスコンディションと数式とを用いて、リグレッションテストのテスト結果の信頼度を決定することができる。ここでは、情報処理装置１００が変更前後のプログラムＰ１，Ｐ２に対してシンボリック実行を行ったが、これに限らない。例えば、情報処理装置１００の外部に存在する他の情報処理装置によって変更前後のプログラムＰ１，Ｐ２に対するシンボリック実行が行われてもよい。この場合、情報処理装置１００は、他の情報処理装置からシンボリック実行結果を取得することになる。
【００９７】
（シンボリック実行結果の特定）
次に、図１４〜図１５を用いて、情報処理装置１００によるシンボリック実行結果の特定の一例について説明する。図１４および図１５は、ステップＳ１００４に示した処理に対応する。
【００９８】
図１４は、情報処理装置１００による「成功」のテストケースＴＣの特定の一例を示す説明図である。図１４に示すように、情報処理装置１００は、変更後テスト結果テーブル６００のテスト結果項目を用いて「成功」のテストケースＴＣを特定する。図１４の例では、情報処理装置１００は、テスト結果項目に「成功」が記憶されたテストケースＴＣ１〜ＴＣ３を特定する。
【００９９】
特定されたテストケースＴＣは、例えば、成功テストケーステーブル１４００に記憶される。成功テストケーステーブル１４００は、変更後テスト結果テーブル６００のテストケース項目と、テスト入力値項目と、期待値項目と、を抽出したテーブルである。成功テストケーステーブル１４００は、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域により実現される。
【０１００】
図１５は、情報処理装置１００による「成功」のテストケースＴＣに対応するシンボリック実行結果の特定の一例を示す説明図である。図１５に示すように、情報処理装置１００は、成功テストケーステーブル１４００に記憶された「成功」のテストケースＴＣのテスト入力値を取得する。
【０１０１】
次に、情報処理装置１００は、テスト入力値を、変更前シンボリック実行結果テーブル１２００に記憶された変更前のプログラムＰ１のパスコンディションに入力した場合に、「真」になるパスコンディションを特定する。また、情報処理装置１００は、テスト入力値を、変更後シンボリック実行結果テーブル１３００とに記憶された変更後のプログラムＰ２のパスコンディションに入力した場合に、「真」になるパスコンディションを特定する。そして、情報処理装置１００は、「真」になるパスコンディションを含む変更前後のシンボリック実行結果を特定する。
【０１０２】
図１５の例では、情報処理装置１００は、テストケースＴＣ２のテスト入力値「（ｘ，ｙ）＝（０，０）」を変更前のプログラムＰ１のシンボリック実行結果Ｐｒｅ１〜Ｐｒｅ３内のパスコンディションに代入する。ここで、情報処理装置１００は、シンボリック実行結果Ｐｒｅ２のパスコンディションが「真」になるため、「成功」のテストケースＴＣ２に対応するシンボリック実行結果として、シンボリック実行結果Ｐｒｅ２を特定する。
【０１０３】
同様にして、情報処理装置１００は、テストケースＴＣ２のテスト入力値「（ｘ，ｙ）＝（０，０）」を変更後のプログラムＰ２のシンボリック実行結果Ｐｏｓｔ１〜Ｐｏｓｔ４内のパスコンディションに代入する。ここで、情報処理装置１００は、シンボリック実行結果Ｐｏｓｔ２のパスコンディションが「真」になるため、「成功」のテストケースＴＣ２に対応するシンボリック実行結果として、シンボリック実行結果Ｐｏｓｔ２を特定する。
【０１０４】
特定された変更前後のシンボリック実行結果は、例えば、シンボリック実行結果組み合わせテーブル１５００に記憶される。シンボリック実行結果組み合わせテーブル１５００は、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域により実現される。
【０１０５】
シンボリック実行結果組み合わせテーブル１５００は、テストケース項目のそれぞれに対応付けて、変更前のシンボリック実行結果項目と、変更後のシンボリック実行結果項目とを有し、テストケースごとにレコードを構成する。テストケース項目には、テストケースの識別子が記憶される。変更前のシンボリック実行結果項目には、変更前のシンボリック実行結果の識別子が記憶される。変更後のシンボリック実行結果項目には、変更後のシンボリック実行結果の識別子が記憶される。
【０１０６】
これにより、情報処理装置１００は、或る「成功」のテストケースＴＣに対応する変更前後のプログラムＰ１，Ｐ２のシンボリック実行結果の組を特定することができる。次に、情報処理装置１００は、特定したシンボリック実行結果の組を用いて、或る「成功」のテストケースＴＣの信頼度を決定することができる。
【０１０７】
（シンボリック実行結果特定処理）
次に、図１６を用いて、シンボリック実行結果特定処理について説明する。シンボリック実行結果特定処理は、図１４および図１５に示した情報処理装置１００による「成功」のテストケースＴＣに対応する変更前後のプログラムＰ１，Ｐ２のシンボリック実行結果の組を特定する処理である。
【０１０８】
図１６は、シンボリック実行結果特定処理の詳細な処理手順を示すフローチャートである。図１６に示すように、まず、情報処理装置１００は、「成功」のテストケースＴＣの集合、および変更前後のパスコンディションを取得する（ステップＳ１６０１）。
【０１０９】
次に、情報処理装置１００は、「成功」のテストケースＴＣの集合から、順にテストケースＴＣを取得する（ステップＳ１６０２）。そして、情報処理装置１００は、取得したテストケースＴＣのテスト入力値が、未処理のテスト入力値か否かを判定する（ステップＳ１６０３）。ここで、未処理のテスト入力値でない場合（ステップＳ１６０３：Ｎｏ）、情報処理装置１００は、「成功」のテストケースＴＣに対応するパスコンディションを出力し（ステップＳ１６０８）、シンボリック実行結果特定処理を終了する。
【０１１０】
一方、未処理のテスト入力値である場合（ステップＳ１６０３：Ｙｅｓ）、情報処理装置１００は、変更前後のシンボリック実行結果の中から、パスコンディションを順に取得する（ステップＳ１６０４）。ここで、未処理のパスコンディションでない場合（ステップＳ１６０５：Ｎｏ）、情報処理装置１００は、ステップＳ１６０２に戻る。
【０１１１】
一方、未処理のパスコンディションである場合（ステップＳ１６０５：Ｙｅｓ）、情報処理装置１００は、取得したテスト入力値により取得したパスコンディションが「真」になるか否かを判定する（ステップＳ１６０６）。ここで、「真」にならない場合（ステップＳ１６０６：Ｎｏ）、情報処理装置１００は、ステップＳ１６０４に戻る。
【０１１２】
一方、「真」になる場合（ステップＳ１６０６：Ｙｅｓ）、情報処理装置１００は、取得したテスト入力値の「成功」のテストケースＴＣと、取得したパスコンディションと、を対応付けておく（ステップＳ１６０７）。次に、情報処理装置１００は、ステップＳ１６０２に戻る。
【０１１３】
これにより、情報処理装置１００は、或る「成功」のテストケースＴＣに対応する変更前後のプログラムＰ１，Ｐ２のシンボリック実行結果の組を特定することができる。次に、情報処理装置１００は、特定したシンボリック実行結果の組を用いて、或る「成功」のテストケースＴＣの信頼度を決定することができる。
【０１１４】
（シンボリック実行結果の比較）
次に、図１７を用いて、情報処理装置１００によるシンボリック実行結果の比較について説明する。シンボリック実行結果の比較は、ステップＳ１００５に示した処理である。
【０１１５】
図１７は、情報処理装置１００によるシンボリック実行結果の比較の一例を示す説明図である。情報処理装置１００は、シンボリック実行結果組み合わせテーブル１５００に記憶された変更前後のシンボリック実行結果のパスコンディションを、変更前シンボリック実行結果テーブル１２００と変更後シンボリック実行結果テーブル１３００とから取得する。次に、情報処理装置１００は、取得したパスコンディションを比較する。そして、情報処理装置１００は、変更前のパスコンディションと変更後のパスコンディションとが「同一」、「限定」、または「拡張」のいずれに該当するかを判定する。
【０１１６】
「同一」は変更前のパスコンディションと変更後のパスコンディションとが一致することを示す。「限定」は変更前のパスコンディションに変更後のパスコンディションが包含されることを示す。例えば、変更前のシンボリック実行結果内のパスコンディションが「ｘ＞０」であり、変更後のシンボリック実行結果内のパスコンディションが「ｘ＞５」である場合、「限定」になる。
【０１１７】
「拡張」は変更前のパスコンディションより変更後のパスコンディションが広いことを示す。例えば、変更前のシンボリック実行結果内のパスコンディションが「ｘ＞０」であり、変更後のシンボリック実行結果内のパスコンディションが「ｘ＞−５」である場合、「拡張」になる。
【０１１８】
また、情報処理装置１００は、シンボリック実行結果組み合わせテーブル１５００に記憶された変更前後のシンボリック実行結果の数式を、変更前シンボリック実行結果テーブル１２００と変更後シンボリック実行結果テーブル１３００とから取得して、比較する。次に、情報処理装置１００は、変更前の数式と変更後の数式とが「同一」または「非同一」のいずれに該当するかを判定する。
【０１１９】
図１７の例では、情報処理装置１００は、テストケースＴＣ２に対応する変更前後のパスコンディションが、共に「（（ｙ＋１）＞０）＆＆（（ｙ＋ｘ≦０））」であるため、パスコンディションの関係は「同一」であると判定する。また、情報処理装置１００は、テストケースＴＣ２に対応する返値を示す数式が「ｘ」と「２＋ｘ」とであり、異なるため、数式の関係は「相違」であると判定する。
【０１２０】
比較結果は、例えば、比較結果テーブル１７００に記憶される。比較結果テーブル１７００は、例えば、ＲＡＭ２０３、磁気ディスク２０５、光ディスク２０７などの記憶領域により実現される。比較結果テーブル１７００は、テストケース項目のそれぞれに対応付けて、パスコンディションの関係項目と、数式の関係項目とを有し、テストケースごとにレコードを構成する。テストケース項目には、テストケースの識別子が記憶される。パスコンディションの関係項目には、パスコンディションの関係が記憶される。数式の関係項目には、数式の関係が記憶される。
【０１２１】
（シンボリック実行結果比較処理）
次に、図１８〜図２０を用いて、情報処理装置１００によるシンボリック実行結果比較処理の詳細な処理手順について説明する。シンボリック実行結果比較処理は、パスコンディション比較処理と、数式比較処理と、を含む。
【０１２２】
図１８および図１９は、情報処理装置１００によるパスコンディション比較処理の詳細な処理手順を示すフローチャートである。図１８に示すように、まず、情報処理装置１００は、「成功」のテストケースＴＣに対応するパスコンディションを用いて、シンボリック実行結果の集合を取得する（ステップＳ１８０１）。
【０１２３】
次に、情報処理装置１００は、シンボリック実行結果の集合の中から、変更前後のパスコンディションの組を順に取得する（ステップＳ１８０２）。そして、情報処理装置１００は、取得したパスコンディションの組が、未処理のパスコンディションの組か否かを判定する（ステップＳ１８０３）。
【０１２４】
ここで、未処理のパスコンディションの組でない場合（ステップＳ１８０３：Ｎｏ）、情報処理装置１００は、「成功」のテストケースＴＣに対応するパスコンディションの組の比較結果を出力し（ステップＳ１８０４）、パスコンディション比較処理を終了する。一方、未処理のパスコンディションの組である場合（ステップＳ１８０３：Ｙｅｓ）、情報処理装置１００は、図１９のステップＳ１９０１に移行する。
【０１２５】
図１９において、情報処理装置１００は、パスコンディションの組が、文字列として同一か否かを判定する（ステップＳ１９０１）。ここで、文字列として同一である場合（ステップＳ１９０１：Ｙｅｓ）、情報処理装置１００は、ステップＳ１９０５に移行する。
【０１２６】
一方、文字列として同一でない場合（ステップＳ１９０１：Ｎｏ）、情報処理装置１００は、パスコンディションの組から、２つの条件式を生成する（ステップＳ１９０２）。２つの条件式とは、条件式１「変更前のパスコンディション＆＆Ｎｏｔ（変更後のパスコンディション）」と条件式２「Ｎｏｔ（変更前のパスコンディション）＆＆変更後のパスコンディション」である。
【０１２７】
次に、情報処理装置１００は、２つの条件式が共に充足可能か否かを判定する（ステップＳ１９０３）。ここで、２つの条件式が充足可能である場合（ステップＳ１９０３：Ｙｅｓ）、情報処理装置１００は、変更前後のパスコンディションが「同一」であると判定し（ステップＳ１９０４）、図１８のステップＳ１８０２に戻る。
【０１２８】
一方、２つの条件式が充足可能でない場合（ステップＳ１９０３：Ｎｏ）、情報処理装置１００は、条件式１が充足不可能、かつ、条件式２が充足可能か否かを判定する（ステップＳ１９０５）。ここで、条件式１が充足不可能、かつ、条件式２が充足可能である場合（ステップＳ１９０５：Ｙｅｓ）、情報処理装置１００は、変更前後のパスコンディションが「拡張」であると判定し（ステップＳ１９０６）、図１８のステップＳ１８０２に戻る。
【０１２９】
一方、条件式１が充足不可能でない場合、または、条件式２が充足可能でない場合（ステップＳ１９０５：Ｎｏ）、情報処理装置１００は、条件式１が充足可能、かつ、条件式２が充足不可能か否かを判定する（ステップＳ１９０７）。ここで、条件式１が充足可能、かつ、条件式２が充足不可能である場合（ステップＳ１９０７：Ｙｅｓ）、情報処理装置１００は、変更前後のパスコンディションが「限定」であると判定し（ステップＳ１９０８）、図１８のステップＳ１８０２に戻る。
【０１３０】
一方、条件式１が充足可能でない場合、または、条件式２が充足不可能でない場合（ステップＳ１９０７：Ｎｏ）、情報処理装置１００は、変更前後のパスコンディションが「相違」であると判定し（ステップＳ１９０９）、図１８のステップＳ１８０２に戻る。これにより、情報処理装置１００は、変更前後のパスコンディションの関係を特定して、変更後のプログラムＰ２のリグレッションテストのテスト結果の信頼度を決定することができる。
【０１３１】
図２０は、情報処理装置１００による数式比較処理の詳細な処理手順を示すフローチャートである。図２０に示すように、情報処理装置１００は、「成功」のテストケースＴＣに対応するパスコンディションを用いて、シンボリック実行結果の集合を取得する（ステップＳ２００１）。
【０１３２】
次に、情報処理装置１００は、取得したシンボリック実行結果の集合の中から、変更前後の数式の組を順に取得する（ステップＳ２００２）。そして、情報処理装置１００は、未処理の数式の組か否かを判定する（ステップＳ２００３）。
【０１３３】
ここで、未処理の数式の組でない場合（ステップＳ２００３：Ｎｏ）、情報処理装置１００は、「成功」のテストケースＴＣに対応する数式の比較結果を出力し（ステップＳ２０１０）、数式比較処理を終了する。
【０１３４】
一方、未処理の数式の組である場合（ステップＳ２００３：Ｙｅｓ）、情報処理装置１００は、変更前後の数式が文字列として同一か否かを判定する（ステップＳ２００４）。ここで、文字列として同一である場合（ステップＳ２００４：Ｙｅｓ）、情報処理装置１００は、変更前後の数式は「同一」であると判定し（ステップＳ２００５）、ステップＳ２００２に戻る。
【０１３５】
一方、文字列として同一でない場合（ステップＳ２００４：Ｎｏ）、情報処理装置１００は、変更前後の数式の組に、数式比較ルールを適用する（ステップＳ２００６）。数式比較ルールについては、図２１および図２２を用いて後述する。
【０１３６】
次に、情報処理装置１００は、数式比較ルールに従って、変更前後の数式が同一と判定されたか否かを判定する（ステップＳ２００７）。ここで、変更前後の数式が同一と判定された場合（ステップＳ２００７：Ｙｅｓ）、情報処理装置１００は、変更前後の数式は「同一」であると判定し（ステップＳ２００８）、ステップＳ２００２に戻る。
【０１３７】
一方、変更前後の数式が同一でないと判定された場合（ステップＳ２００７：Ｎｏ）、情報処理装置１００は、変更前後の数式は「相違」であると判定し（ステップＳ２００９）、ステップＳ２００２に戻る。これにより、情報処理装置１００は、変更前後の数式の関係を特定して、変更後のプログラムＰ２のリグレッションテストのテスト結果の信頼度を決定することができる。
【０１３８】
（数式比較ルール）
次に、図２１および図２２を用いて、ステップＳ２００６に示した数式比較ルールについて説明する。数式比較ルールは、変更前後の数式が文字列として同一でない場合に、変更前後の数式が実質的に同一であるか否かを判定するためのルールである。
【０１３９】
図２１は、数式比較ルールの例１を示す説明図である。数式比較ルールの例１は、変更前後の数式を、数学の法則を用いて変換し、変換後の数式同士を比較するルールである。数学の法則とは、例えば、分配法則、交換法則、および結合法則のうち少なくともいずれかである。
【０１４０】
図２１の例では、情報処理装置１００は、文字列としては同一でない数式「ｚ（ｘ，ｙ）×ｇ（ｙ）＋ｆ（ｘ）×ｚ（ｘ，ｙ）」と数式「（ｆ（ｘ）＋ｇ（ｙ））×ｚ（ｘ，ｙ）」とが実質的に同一か否かを判定する。
【０１４１】
情報処理装置１００は、具体的には、例えば、各数式を分配法則に従って展開し、かつ、変数のアルファベット順に並べ替える。これにより、情報処理装置１００は、変更前後の数式が共に「ｆ（ｘ）×ｚ（ｘ，ｙ）＋ｇ（ｙ）×ｚ（ｘ，ｙ）」となるため、変更前後の数式が実質的に同一であると判定する。
【０１４２】
図２２は、数式比較ルールの例２を示す説明図である。数式比較ルールの例２は、数学の法則を用いて変換することができない数式が実質的に同一か否かを判定するためのルールである。
【０１４３】
図２２の例では、情報処理装置１００は、文字列としては同一でない数式「ｆ（ｘ）」と数式「Ｆ（ｘ）」とが実質的に同一か否かを判定する。情報処理装置１００は、具体的には、例えば、変更前後のパスコンディションを共に充足する１または複数のテスト入力値を生成する。次に、情報処理装置１００は、生成したテスト入力値に対して、変更前後の数式が示す返値が一致するか否かを判定する。ここで、情報処理装置１００は、生成したテスト入力値に対して、返値が一致する場合、変更前後の数式が実質的に同一であると判定する。
【０１４４】
情報処理装置１００は、具体的には、例えば、変更前後のパスコンディションを共に充足するテスト入力値「（ｘ，ｙ）＝（Ｘ１，Ｙ１）」を、変更前後の数式「ｆ（ｘ）」と「Ｆ（ｘ）」に代入する。ここで、情報処理装置１００は、変更前後の数式が示す返値が「Ｚ１」であり一致するため、変更前後の数式が実質的に同一であると判定する。
【０１４５】
ステップＳ２００６において、情報処理装置１００は、数式比較ルールとして、上述した数式比較ルールの例１，数式比較ルールの例２，または、数式比較ルールの例１と例２との組み合わせのいずれを使用してもよい。
【０１４６】
（信頼度決定）
次に、図２３を用いて、情報処理装置１００による信頼度決定の一例について説明する。信頼度決定は、ステップＳ１００６に示した処理である。
【０１４７】
図２３は、情報処理装置１００による信頼度決定の一例を示す説明図である。情報処理装置１００は、例えば、比較結果テーブル１７００を参照して、変更前後のパスコンディションの比較結果が「拡張」になるテストケースＴＣの信頼度を「要確認」であると決定する。また、情報処理装置１００は、例えば、比較結果テーブル１７００を参照して、変更前後の数式の比較結果が「相違」になるテストケースＴＣの信頼度を「要確認」であると決定する。また、情報処理装置１００は、他の場合のテストケースＴＣの信頼度を「信頼できる」と決定する。
【０１４８】
図２３の例では、情報処理装置１００は、テストケースＴＣ２の数式が「相違」のため、テストケースＴＣ２の信頼度を「要確認」であると決定する。また、情報処理装置１００は、他のテストケースＴＣ１，ＴＣ３の信頼度を「信頼できる」と決定する。そして、情報処理装置１００は、信頼度を出力する。
【０１４９】
ここで、情報処理装置１００は、３種類以上の信頼度を決定してもよい。例えば、信頼度は、「高、中、低」である。この場合、情報処理装置１００は、例えば、パスコンディションの比較結果と数式の比較結果とが共に「同一」になるテストケースＴＣを信頼度「高」に決定してもよい。また、情報処理装置１００は、例えば、パスコンディションの比較結果が「拡張」であり、数式の比較結果が「同一」になるテストケースＴＣを信頼度「中」に決定してもよい。また、情報処理装置１００は、例えば、パスコンディションの比較結果が「拡張」であり、数式の比較結果が「相違」になるテストケースＴＣを信頼度「低」に決定してもよい。
【０１５０】
これにより、情報処理装置１００は、偶々、変更前後のプログラムＰ１，Ｐ２の返値が一致し、リグレッションテストのテスト結果が「成功」になる場合に、情報処理装置１００の利用者に、信頼度「要確認」を通知することができる。
【０１５１】
結果として、情報処理装置１００の利用者は、リグレッションテストのテスト結果が「成功」であっても、信頼度「要確認」の通知を受けることにより、誤りのあるプログラムＰを正しいプログラムＰと誤認してしまうことを防止することができる。また、情報処理装置１００の利用者は、信頼度「要確認」の通知を受け、変更後のプログラムＰに誤りがあるか否かを確認し、誤りがあればプログラムＰを修正することができる。
【０１５２】
ここでは、１つのパスコンディションは１つのテストケースＴＣに対応するが、これに限らない。例えば、１つのパスコンディションに複数のテストケースＴＣが対応してもよい。この場合、複数のテストケースＴＣによるテスト結果が「成功」であれば、数式が「相違」であっても、プログラム２の信頼度を「信頼できる」に決定してもよい。
【０１５３】
（決定処理）
次に、図２４を用いて、情報処理装置１００による決定処理の詳細な処理手順について説明する。
【０１５４】
図２４は、情報処理装置１００による決定処理の詳細な処理手順を示すフローチャートである。図２４に示すように、情報処理装置１００は、「成功」のテストケースＴＣに対応するシンボリック実行結果の比較結果の集合を取得する（ステップＳ２４０１）。
【０１５５】
次に、情報処理装置１００は、取得した比較結果の集合の中から、比較結果を順に取得する（ステップＳ２４０２）。そして、情報処理装置１００は、取得した比較結果が未処理であるか否かを判定する（ステップＳ２４０３）。ここで、未処理でない場合（ステップＳ２４０３：Ｎｏ）、情報処理装置１００は、「成功」のテストケースＴＣの信頼度を出力し（ステップＳ２４０７）、決定処理を終了する。
【０１５６】
一方、未処理でない場合（ステップＳ２４０３：Ｙｅｓ）、情報処理装置１００は、変更前後において、パスコンディションが同一または限定であり、かつ、数式が同一か否かを判定する（ステップＳ２４０４）。ここで、パスコンディションが同一または限定であり、かつ、数式が同一である場合（ステップＳ２４０４：Ｙｅｓ）、情報処理装置１００は、「成功」のテストケースＴＣを「信頼できる」と判定し（ステップＳ２４０５）、ステップＳ２４０２に戻る。
【０１５７】
パスコンディションが同一または限定であり、かつ、数式が同一でない場合（ステップＳ２４０４：Ｎｏ）、情報処理装置１００は、「成功」のテストケースＴＣを「要確認」と判定し（ステップＳ２４０６）、ステップＳ２４０２に戻る。
【０１５８】
これにより、情報処理装置１００は、偶々、変更前後のプログラムＰ１，Ｐ２の返値が一致し、リグレッションテストのテスト結果が「成功」になる場合に、情報処理装置１００の利用者に、信頼度「要確認」を通知することができる。情報処理装置１００の利用者は、信頼度「要確認」の通知を受けた場合、テストケースＴＣを増加させて、変更後のプログラムＰのテストをさらに実行してもよい。
【０１５９】
（テスト入力値の生成）
次に、図２５を用いて、情報処理装置１００によるテスト入力値の生成について説明する。
【０１６０】
図２５は、情報処理装置１００によるテスト入力値の生成を示す説明図である。情報処理装置１００は、「要確認」と判定されたテストケースＴＣ２に対応する新たなテスト入力値を生成して、プログラムＰ２のテストをさらに実行する。新たなテスト入力値は、例えば、パスコンディションを制約ソルバに与えることにより、制約ソルバから取得することができる。
【０１６１】
図２５の例では、情報処理装置１００は、「要確認」のテストケースＴＣ２に対応するテスト入力を生成する。ここで、情報処理装置１００は、テストケースＴＣ２のパスコンディション「ｙ＋１＞０＆＆ｙ＋ｘ≦０」と、既にあるテスト入力値以外の値が生成されるように「ｘ！＝０」と「ｙ！＝０」と、を含む条件を充足するテスト入力値を生成する。この場合、情報処理装置１００は、テスト入力値「（ｘ，ｙ）＝（−１，１）」を生成する。
【０１６２】
（テスト入力値生成処理）
次に、図２６を用いて、テスト入力値生成処理について説明する。
【０１６３】
図２６は、テスト入力値生成処理の詳細な処理手順を示すフローチャートである。図２６に示すように、まず、情報処理装置１００は、「要確認」と判定されたテストケースＴＣの集合を取得する（ステップＳ２６０１）。次に、情報処理装置１００は、取得したテストケースＴＣの集合の中から、順にテストケースＴＣを取得する（ステップＳ２６０２）。
【０１６４】
そして、情報処理装置１００は、取得したテストケースＴＣが未処理であるか否かを判定する（ステップＳ２６０３）。ここで、未処理でない場合（ステップＳ２６０３：Ｎｏ）、情報処理装置１００は、「要確認」のテストケースＴＣのテスト入力値を出力し（ステップＳ２６０６）、テスト入力値生成処理を終了する。
【０１６５】
一方、未処理である場合（ステップＳ２６０３：Ｙｅｓ）、情報処理装置１００は、「要確認」のテストケースＴＣのテスト入力値とパスコンディションとを用いて、新たなテスト入力値が充足すべき条件式を生成する（ステップＳ２６０４）。
【０１６６】
次に、情報処理装置１００は、生成した条件式を制約ソルバに与え、条件式を充足する新たなテスト入力値を制約ソルバから取得し（ステップＳ２６０５）、ステップＳ２６０２に戻る。これにより、情報処理装置１００の利用者は、「要確認」のテストケースＴＣに対する新たなテスト入力値の生成にかかる手間を削減することができる。
【０１６７】
以上説明したように、情報処理装置１００は、「成功」のテストケースＴＣに関する変更前後のプログラムＰ１，Ｐ２のシンボリック実行結果を取得し、取得したシンボリック実行結果を用いて、リグレッションテストのテスト結果の信頼度を決定する。情報処理装置１００は、決定した信頼度を出力する。これにより、情報処理装置１００は、リグレッションテストのテスト結果が「成功」であっても、偶々「成功」になったのか否かの指標になる信頼度を決定することができる。また、情報処理装置１００は、情報処理装置１００の利用者に、信頼度を通知することができる。
【０１６８】
結果として、情報処理装置１００の利用者は、リグレッションテストのテスト結果が「成功」であっても、通知された信頼度が低い場合、変更後のプログラムＰに誤りがあるか否かを確認し、誤りがあればプログラムＰを修正することができる。そのため、情報処理装置１００の利用者は、誤りのあるプログラムＰを正しいプログラムＰと誤認してしまうことを防止することができる。また、情報処理装置１００の利用者は、通知された信頼度が低い場合、テストケースＴＣを増加させて、変更後のプログラムＰのテストを実行することができる。
【０１６９】
また、情報処理装置１００は、変更前のシンボリック実行結果内のパスコンディションに比べて、変更後のシンボリック実行結果内のパスコンディションが「拡張」されている場合、信頼度を低くする。これにより、情報処理装置１００は、パスコンディションから信頼度を決定することができる。
【０１７０】
また、情報処理装置１００は、変更前のシンボリック実行結果内の数式に比べて、変更後のシンボリック実行結果内の数式が「相違」する場合、信頼度を低くする。これにより、情報処理装置１００は、数式から信頼度を決定することができる。
【０１７１】
また、情報処理装置１００は、変更前後のシンボリック実行結果内の数式に適当な値を代入した場合の返値が一致するか否かを判定することにより、変更前後のシンボリック実行結果内の数式が実質的に同一であるか否かを判定する。これにより、情報処理装置１００は、変更前後の数式か文字列として同一でない場合も、実質的に同一か否かの判定結果を用いて、信頼度を決定することができる。
【０１７２】
また、情報処理装置１００は、信頼度を低くした場合、新たにプログラムＰ２をテストする場合に使用するテスト入力値を生成する。これにより、情報処理装置１００の利用者は、信頼度が低い場合、プログラムＰ２をテストする場合に使用するテスト入力値を生成する手間を削減することができる。
【０１７３】
なお、本実施の形態で説明した情報処理方法は、予め用意されたプログラムＰをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本情報処理プログラムＰは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本情報処理プログラムＰは、インターネット等のネットワークを介して配布してもよい。
【０１７４】
また、本実施の形態で説明した情報処理装置１００は、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と表す。）やＦＰＧＡなどのＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）によっても実現することができる。具体的には、例えば、上述した情報処理装置１００の機能（第１の取得部９０１、第２の取得部９０２、決定部９０３、生成部９０４、出力部９０５、第３の取得部９０６）をＨＤＬ記述によって機能定義し、そのＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより、情報処理装置１００を製造することができる。
【０１７５】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１７６】
（付記１）第１のプログラムおよび前記第１のプログラムが変更された第２のプログラムから共に期待値が返される入力値を前記第１のプログラムに与えた場合の第１の実行経路に関する条件式の系列を示すパスコンディションと、前記第１の実行経路に関する返値を示す数式と、を含む第１のシンボリック実行結果を取得する第１の取得部と、
前記入力値を前記第２のプログラムに与えた場合の第２の実行経路に関する条件式の系列を示すパスコンディションと、前記第２の実行経路に関する返値を示す数式と、を含む第２のシンボリック実行結果を取得する第２の取得部と、
前記第１の取得部によって取得された第１のシンボリック実行結果内のパスコンディションに、前記第２の取得部によって取得された第２のシンボリック実行結果内のパスコンディションが包含されているか否か、または、前記第１および第２のシンボリック実行結果内の数式が一致するか否か、に基づいて、前記入力値による前記第２のプログラムのテスト結果に関する信頼性の高さの指標になる信頼度を決定する決定部と、
前記決定部によって決定された信頼度を出力する出力部と、
を有することを特徴とする情報処理装置。
【０１７７】
（付記２）前記決定部は、
前記第１の取得部によって取得された第１のシンボリック実行結果内のパスコンディションに、前記第２の取得部によって取得された第２のシンボリック実行結果内のパスコンディションが包含されていない場合、前記信頼度を低くすることを特徴とする付記１に記載の情報処理装置。
【０１７８】
（付記３）前記決定部は、
前記第１および第２の取得部によって取得された第１および第２のシンボリック実行結果内の数式が一致しない場合、前記信頼度を低くすることを特徴とする付記１または２に記載の情報処理装置。
【０１７９】
（付記４）前記第１の実行経路に関する条件式の系列を示すパスコンディションと前記第２の実行経路に関する条件式の系列を示すパスコンディションとに共に包含される値を生成する生成部を有し、
前記決定部は、
前記第１および第２の取得部によって取得された第１および第２のシンボリック実行結果内の数式が、前記生成部によって生成された値に対して同一の返値を示さない場合、前記信頼度を低くすることを特徴とする付記１乃至３のいずれか一つに記載の情報処理装置。
【０１８０】
（付記５）前記決定部によって信頼度が低くされた場合、前記第２の実行経路に関する条件式の系列を示すパスコンディションをソルバに与えることにより、前記第２の実行経路に関する条件式の系列を示すパスコンディションを満たす充足解を前記ソルバから取得する第３の取得部を有することを特徴とする付記１乃至４のいずれか一つに記載の情報処理装置。
【０１８１】
（付記６）コンピュータが、
第１のプログラムおよび前記第１のプログラムが変更された第２のプログラムから共に期待値が返される入力値を前記第１のプログラムに与えた場合の第１の実行経路に関する条件式の系列を示すパスコンディションと、前記第１の実行経路に関する返値を示す数式と、を含む第１のシンボリック実行結果を取得し、
前記入力値を前記第２のプログラムに与えた場合の第２の実行経路に関する条件式の系列を示すパスコンディションと、前記第２の実行経路に関する返値を示す数式と、を含む第２のシンボリック実行結果を取得し、
取得された第１のシンボリック実行結果内のパスコンディションに、取得された第２のシンボリック実行結果内のパスコンディションが包含されているか否か、または、取得された第１および第２のシンボリック実行結果内の数式が一致するか否か、に基づいて、前記第２のプログラムの信頼性の指標になる信頼度を決定し、
決定された信頼度を出力する、
処理を実行することを特徴とする情報処理方法。
【０１８２】
（付記７）コンピュータに、
第１のプログラムおよび前記第１のプログラムが変更された第２のプログラムから共に期待値が返される入力値を前記第１のプログラムに与えた場合の第１の実行経路に関する条件式の系列を示すパスコンディションと、前記第１の実行経路に関する返値を示す数式と、を含む第１のシンボリック実行結果を取得し、
前記入力値を前記第２のプログラムに与えた場合の第２の実行経路に関する条件式の系列を示すパスコンディションと、前記第２の実行経路に関する返値を示す数式と、を含む第２のシンボリック実行結果を取得し、
取得された第１のシンボリック実行結果内のパスコンディションに、取得された第２のシンボリック実行結果内のパスコンディションが包含されているか否か、または、取得された第１および第２のシンボリック実行結果内の数式が一致するか否か、に基づいて、前記第２のプログラムの信頼性の指標になる信頼度を決定し、
決定された信頼度を出力する、
処理を実行させることを特徴とする情報処理プログラム。
【符号の説明】
【０１８３】
１００  情報処理装置
９０１  第１の取得部
９０２  第２の取得部
９０３  決定部
９０４  生成部
９０５  出力部
９０６  第３の取得部
【図１】
0005825163.tif 000002
【図２】
0005825163.tif 000003
【図３】
0005825163.tif 000004
【図４】
0005825163.tif 000005
【図５】
0005825163.tif 000006
【図６】
0005825163.tif 000007
【図７】
0005825163.tif 000008
【図８】
0005825163.tif 000009
【図９】
0005825163.tif 000010
【図１０】
0005825163.tif 000011
【図１１】
0005825163.tif 000012
【図１２】
0005825163.tif 000013
【図１３】
0005825163.tif 000014
【図１４】
0005825163.tif 000015
【図１５】
0005825163.tif 000016
【図１６】
0005825163.tif 000017
【図１７】
0005825163.tif 000018
【図１８】
0005825163.tif 000019
【図１９】
0005825163.tif 000020
【図２０】
0005825163.tif 000021
【図２１】
0005825163.tif 000022
【図２２】
0005825163.tif 000023
【図２３】
0005825163.tif 000024
【図２４】
0005825163.tif 000025
【図２５】
0005825163.tif 000026
【図２６】
0005825163.tif 000027