(57)【特許請求の範囲】
【請求項１】
所定の処理ステップへ分岐する分岐条件を指定した複数の分岐命令ステップを含み、分岐先で実行される複数の処理ステップを実行経路として含む試験対象プログラムを記憶する試験対象プログラム記憶部と、
前記試験対象プログラムに入力する複数の入力データを記憶する入力データ記憶部と、
前記入力データ記憶部に記憶された入力データ毎に、入力データを用いて前記試験対象プログラムを実行するプログラム実行部と、
前記入力データ記憶部に記憶された入力データ毎に、前記プログラム実行部が前記試験対象プログラムに含まれる少なくともいずれかの分岐命令ステップを実行した場合、実行した分岐命令ステップのステップ番号と分岐条件の判定結果とを分岐命令ステップの実行順に示す分岐結果データを生成する分岐結果データ生成部と、
前記プログラム実行部が前記試験対象プログラムの実行を終了する毎に、前記分岐結果データ生成部により生成された分岐結果データに基づいて複数の分岐命令ステップのうち分岐先の全ての実行経路が実行済みである分岐命令ステップを経路網羅ステップとして判定し、判定した経路網羅ステップのステップ番号と分岐条件の判定結果とを前記試験対象プログラムの実行を中止する実行中止条件として示す実行中止条件データを生成する実行中止条件データ生成部と、
前記プログラム実行部が全ての入力データを用いて前記試験対象プログラムの実行を終了した場合、所定の試験結果データを生成し、生成した試験結果データを出力する試験結果データ出力部とを備え、
前記プログラム実行部は、前記試験対象プログラムに含まれる分岐命令ステップを実行した場合、前記実行中止条件データ生成部によって生成された実行中止条件データに基づいて実行した分岐命令ステップのステップ番号と分岐条件の判定結果とが前記実行中止条件データに示される実行中止条件を満たすか否かを判定し、前記分岐命令ステップのステップ番号と分岐条件の判定結果とが前記実行中止条件を満たす場合、前記分岐命令ステップの分岐先の実行経路を実行せずに前記試験対象プログラムの実行を終了する
ことを特徴とするプログラム試験装置。
【請求項２】
前記実行中止条件データ生成部は、
前記プログラム実行部が前記試験対象プログラムの実行を終了する毎に最後に実行された分岐命令ステップを経路網羅ステップとして判定し、
前記経路網羅ステップを実行するまでに実行された各分岐命令ステップのステップ番号と分岐条件の判定結果とを他の分岐結果データと比較し、
前記各分岐命令ステップのステップ番号と分岐条件の判定結果とが他の分岐結果データと一致する場合、前記各分岐命令ステップのうち最後に実行された分岐命令ステップを経路網羅ステップとして判定する
ことを特徴とする請求項１記載のプログラム試験装置。
【請求項３】
前記試験結果データ出力部は、前記分岐結果データ生成部により生成された分岐結果データに基づいて実行していない実行経路を未実行経路として判定し、判定した未実行経路を示すデータを前記試験結果データとして生成し、生成した試験結果データを出力する
ことを特徴とする請求項１または請求項２記載のプログラム試験装置。
【請求項４】
前記試験結果データ出力部は、入力データ毎に入力データと前記試験対象プログラムの実行結果とを対応付けて示すデータを前記試験結果データとして生成し、生成した試験結果データを出力する
ことを特徴とする請求項１から請求項３いずれかに記載のプログラム試験装置。
【請求項５】
所定の処理ステップへ分岐する分岐条件を指定した複数の分岐命令ステップを含み、分岐先で実行される複数の処理ステップを実行経路として含む試験対象プログラムを記憶する試験対象プログラム記憶部と、前記試験対象プログラムに入力する複数の入力データを記憶する入力データ記憶部とを備えるプログラム試験装置のプログラム試験方法において、
プログラム実行部が、前記入力データ記憶部に記憶された入力データ毎に、入力データを用いて前記試験対象プログラムを実行し、
分岐結果データ生成部が、前記入力データ記憶部に記憶された入力データ毎に、前記プログラム実行部が前記試験対象プログラムに含まれる少なくともいずれかの分岐命令ステップを実行した場合、実行した分岐命令ステップのステップ番号と分岐条件の判定結果とを分岐命令ステップの実行順に示す分岐結果データを生成し、
実行中止条件データ生成部が、前記プログラム実行部が前記試験対象プログラムの実行を終了する毎に、前記分岐結果データ生成部により生成された分岐結果データに基づいて複数の分岐命令ステップのうち分岐先の全ての実行経路が実行済みである分岐命令ステップを経路網羅ステップとして判定し、判定した経路網羅ステップのステップ番号と分岐条件の判定結果とを前記試験対象プログラムの実行を中止する実行中止条件として示す実行中止条件データを生成し、
試験結果データ出力部が、前記プログラム実行部が全ての入力データを用いて前記試験対象プログラムの実行を終了した場合、所定の試験結果データを生成し、生成した試験結果データを出力し、
前記プログラム実行部は、前記試験対象プログラムに含まれる分岐命令ステップを実行した場合、前記実行中止条件データ生成部によって生成された実行中止条件データに基づいて実行した分岐命令ステップのステップ番号と分岐条件の判定結果とが前記実行中止条件データに示される実行中止条件を満たすか否かを判定し、前記分岐命令ステップのステップ番号と分岐条件の判定結果とが前記実行中止条件を満たす場合、前記分岐命令ステップの分岐先の実行経路を実行せずに前記試験対象プログラムの実行を終了する
ことを特徴とするプログラム試験装置のプログラム試験方法。
【請求項６】
所定の処理ステップへ分岐する分岐条件を指定した複数の分岐命令ステップを含み、分岐先で実行される複数の処理ステップを実行経路として含む試験対象プログラムを記憶する試験対象プログラム記憶部と、前記試験対象プログラムに入力する複数の入力データを記憶する入力データ記憶部とを備えるプログラム試験装置を動作させるプログラム試験プログラムにおいて、
前記入力データ記憶部に記憶された入力データ毎に、入力データを用いて前記試験対象プログラムを実行するプログラム実行処理と、
前記入力データ記憶部に記憶された入力データ毎に、前記プログラム実行処理で前記試験対象プログラムに含まれる少なくともいずれかの分岐命令ステップを実行した場合、実行した分岐命令ステップのステップ番号と分岐条件の判定結果とを分岐命令ステップの実行順に示す分岐結果データを生成する分岐結果データ生成処理と、
前記プログラム実行処理で前記試験対象プログラムの実行を終了する毎に、前記分岐結果データ生成処理により生成された分岐結果データに基づいて複数の分岐命令ステップのうち分岐先の全ての実行経路が実行済みである分岐命令ステップを経路網羅ステップとして判定し、判定した経路網羅ステップのステップ番号と分岐条件の判定結果とを前記試験対象プログラムの実行を中止する実行中止条件として示す実行中止条件データを生成する実行中止条件データ生成処理と、
前記プログラム実行処理で全ての入力データを用いて前記試験対象プログラムの実行を終了した場合、所定の試験結果データを生成し、生成した試験結果データを出力する試験結果データ出力処理とを前記プログラム試験装置に実行させ、
前記プログラム実行処理は、前記試験対象プログラムに含まれる分岐命令ステップを実行した場合、前記実行中止条件データ生成処理によって生成された実行中止条件データに基づいて実行した分岐命令ステップのステップ番号と分岐条件の判定結果とが前記実行中止条件データに示される実行中止条件を満たすか否かを判定し、前記分岐命令ステップのステップ番号と分岐条件の判定結果とが前記実行中止条件を満たす場合、前記分岐命令ステップの分岐先の実行経路を実行せずに前記試験対象プログラムの実行を終了する
ことを特徴とするプログラム試験プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、試験対象プログラムを試験するプログラム試験装置、プログラム試験装置のプログラム試験方法およびプログラム試験プログラムに関するものである。
【背景技術】
【０００２】
プログラムの試験では、複数の入力変数値の組み合わせを入力して試験対象プログラムを実行することが一般的である。
ここで、一つの入力変数値組み合わせによって実行できる実行経路は一つであるため、試験対象プログラムの全ての実行経路を実行するためには、入力変数値の組み合わせを様々に変えて実行を繰り返す必要がある。
しかし、試験対象プログラムが複雑であり、取り得る実行経路の数が膨大となる場合、全ての実行経路を網羅する入力変数値の組み合わせを人手によって漏れなく作成することは困難である。
【０００３】
そこで、従来のプログラム自動試験技術は、入力変数値の組み合わせを自動的に生成し、生成した入力変数値の組み合わせを入力して試験対象プログラムを実行する。これにより、実行経路の網羅度を高めている（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平７−９３１８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来のプログラム試験装置では、自動的に生成した全ての入力変数値の組み合わせについて試験対象プログラムの開始から終了まで実行経路が実行済みであるか否かを考慮せずに実行する。
したがって、新たに入力する入力変数値の組み合わせが既に実行済みの実行経路を実行するものであった場合、同一の実行経路を再び実行することとなる。
このため、従来のプログラム試験装置では実行経路の実行に重複が生じ、試験効率が低下するという課題があった。
【０００６】
本発明は、例えば、複数の入力変数値の組み合わせを用いて同一の実行経路に対する実行を繰り返すことなく、未実行の実行経路のみを実行してプログラムを試験できるようにすることを目的とする。
【課題を解決するための手段】
【０００７】
本発明のプログラム試験装置は、
所定の処理ステップへ分岐する分岐条件を指定した複数の分岐命令ステップを含み、分岐先で実行される複数の処理ステップを実行経路として含む試験対象プログラムを記憶する試験対象プログラム記憶部と、
前記試験対象プログラムに入力する複数の入力データを記憶する入力データ記憶部と、
前記入力データ記憶部に記憶された入力データ毎に、入力データを用いて前記試験対象プログラムを実行するプログラム実行部と、
前記入力データ記憶部に記憶された入力データ毎に、前記プログラム実行部が前記試験対象プログラムに含まれる少なくともいずれかの分岐命令ステップを実行した場合、実行した分岐命令ステップのステップ番号と分岐条件の判定結果とを分岐命令ステップの実行順に示す分岐結果データを生成する分岐結果データ生成部と、
前記プログラム実行部が前記試験対象プログラムの実行を終了する毎に、前記分岐結果データ生成部により生成された分岐結果データに基づいて複数の分岐命令ステップのうち分岐先の全ての実行経路が実行済みである分岐命令ステップを経路網羅ステップとして判定し、判定した経路網羅ステップのステップ番号と分岐条件の判定結果とを前記試験対象プログラムの実行を中止する実行中止条件として示す実行中止条件データを生成する実行中止条件データ生成部と、
前記プログラム実行部が全ての入力データを用いて前記試験対象プログラムの実行を終了した場合、所定の試験結果データを生成し、生成した試験結果データを出力する試験結果データ出力部とを備える。
前記プログラム実行部は、前記試験対象プログラムに含まれる分岐命令ステップを実行した場合、前記実行中止条件データ生成部によって生成された実行中止条件データに基づいて実行した分岐命令ステップのステップ番号と分岐条件の判定結果とが前記実行中止条件データに示される実行中止条件を満たすか否かを判定し、前記分岐命令ステップのステップ番号と分岐条件の判定結果とが前記実行中止条件を満たす場合、前記分岐命令ステップの分岐先の実行経路を実行せずに前記試験対象プログラムの実行を終了する。
【発明の効果】
【０００８】
本発明によれば、例えば、複数の入力変数値の組み合わせ（入力データ）を用いて同一の実行経路に対する実行を繰り返すことなく、未実行の実行経路のみを実行してプログラムを試験することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１におけるプログラム試験装置１００の機能構成図。
【図２】実施の形態１における分岐命令実行結果テーブル１９４を示す図。
【図３】実施の形態１における経路別実行結果テーブル１９５を示す図。
【図４】実施の形態１における経路網羅情報１９７を示す図。
【図５】実施の形態１におけるプログラム試験装置１００のプログラム試験方法を示すフローチャート。
【図６】実施の形態１における入力変数値データ１９２と入力変数値組み合わせ１９３とを示す図。
【図７】実施の形態１における経路網羅フラグ更新処理（Ｓ１６０）を示すフローチャート。
【図８】実施の形態１における試験対象プログラム１９１を表すフローチャートの一例。
【図９】実施の形態１における分岐命令実行結果設定処理（Ｓ１４０）と経路網羅フラグ更新処理（Ｓ１６０）との具体例を示す分岐命令実行結果テーブル１９４。
【図１０】実施の形態１における分岐命令実行結果設定処理（Ｓ１４０）と経路網羅フラグ更新処理（Ｓ１６０）との具体例を示す分岐命令実行結果テーブル１９４。
【図１１】実施の形態１における分岐命令実行結果設定処理（Ｓ１４０）と経路網羅フラグ更新処理（Ｓ１６０）との具体例を示す分岐命令実行結果テーブル１９４。
【図１２】実施の形態１における分岐命令実行結果設定処理（Ｓ１４０）と経路網羅フラグ更新処理（Ｓ１６０）との具体例を示すフローチャート。
【図１３】実施の形態１における分岐命令実行結果設定処理（Ｓ１４０）と経路網羅フラグ更新処理（Ｓ１６０）との具体例を示すフローチャート。
【図１４】実施の形態１における分岐命令実行結果設定処理（Ｓ１４０）と経路網羅フラグ更新処理（Ｓ１６０）との具体例を示すフローチャート。
【図１５】実施の形態１におけるプログラム試験装置１００のハードウェア資源の一例を示す図。
【発明を実施するための形態】
【００１０】
実施の形態１．
複数の分岐命令ステップを含む試験対象プログラムを試験するプログラム試験装置について説明する。
【００１１】
図１は、実施の形態１におけるプログラム試験装置１００の機能構成図である。
実施の形態１におけるプログラム試験装置１００の機能構成について、図１に基づいて説明する。
【００１２】
プログラム試験装置１００は、入力変数値組み合わせ生成部１１０とプログラム実行部１２０と試験結果出力部１６０とを備える。
プログラム試験装置１００は、分岐命令実行結果記録部１３０と網羅結果記録部１４０と経路別実行結果記録部１５０とを備える。
さらに、プログラム試験装置１００は試験装置記憶部１９０を備える。
【００１３】
試験装置記憶部１９０（試験対象プログラム記憶部、入力データ記憶部の一例）は、プログラム試験装置１００で使用するデータを記憶する。
試験対象プログラム１９１、入力変数値データ１９２、入力変数値組み合わせ１９３、分岐命令実行結果テーブル１９４、経路別実行結果テーブル１９５、経路別実行結果情報１９６および経路網羅情報１９７は、試験装置記憶部１９０に記憶されるデータの一例である。
【００１４】
試験対象プログラム１９１は、所定の処理ステップへ分岐する分岐条件を指定した複数の分岐命令ステップを含み、分岐先で実行される複数の処理ステップを実行経路として含む。
その他のデータについては後述する。
【００１５】
入力変数値組み合わせ生成部１１０（入力データ生成部の一例）は、入力変数値データ１９２を入力し、入力した入力変数値データ１９２に基づいて複数の入力変数値組み合わせ１９３を生成する（入力データ生成処理）。
入力変数値データ１９２は、試験対象プログラム１９１の入力パラメータとして使用する入力変数毎に入力変数に設定する複数の値（以下、「入力変数値」）を示すデータである。
入力変数値組み合わせ１９３（入力データの一例）は、入力変数と入力変数値とを組み合わせたデータである。
【００１６】
プログラム実行部１２０は、命令実行部１２１とエラー検出部１２２とを備える。
【００１７】
命令実行部１２１は、試験装置記憶部１９０に記憶された入力変数値組み合わせ１９３毎に、入力変数値組み合わせ１９３を用いて試験対象プログラム１９１を実行する（プログラム実行処理）。
【００１８】
エラー検出部１２２は、命令実行部１２１が試験対象プログラム１９１に含まれる処理ステップを実行した場合、処理ステップの実行によって特定のエラーが発生したか否かを判定する（エラー判定処理）。
エラー検出部１２２は、特定のエラーが発生した場合、発生したエラーを表すエラー情報を出力する。
【００１９】
分岐命令実行結果記録部１３０（分岐結果データ生成部の一例）は、試験装置記憶部１９０に記憶された入力変数値組み合わせ１９３毎に実行済み経路レコードを生成し、生成した実行済み経路レコードを分岐命令実行結果テーブル１９４に設定する（分岐結果データ生成処理）。
実行済み経路レコード（分岐結果データ、実行中止条件データの一例）は、命令実行部１２１が試験対象プログラム１９１に含まれる少なくともいずれかの分岐命令ステップを実行した場合、実行した分岐命令ステップのステップ番号と分岐条件の判定結果とを分岐命令ステップの実行順に示すデータである。
【００２０】
網羅結果記録部１４０（実行中止条件データ生成部の一例）は、命令実行部１２１が試験対象プログラム１９１の実行を終了する毎に、分岐命令実行結果記録部１３０により生成された分岐命令実行結果テーブル１９４の実行済み経路レコードに基づいて経路網羅ステップを判定する。
網羅結果記録部１４０は、経路網羅ステップに対応付けて経路網羅フラグを分岐命令実行結果テーブル１９４のレコードに設定する（実行中止条件データ生成処理）。
経路網羅ステップとは、複数の分岐命令ステップのうち分岐先の全ての実行経路が実行済みである分岐命令ステップのことである。
経路網羅フラグとは、経路網羅ステップのステップ番号と分岐条件の判定結果とを試験対象プログラム１９１の実行を中止する実行中止条件として示すデータである。
【００２１】
例えば、網羅結果記録部１４０は、以下のように経路網羅ステップを判定する（経路網羅ステップ判定処理）。
網羅結果記録部１４０は、命令実行部１２１が試験対象プログラム１９１の実行を終了する毎に最後に実行された分岐命令ステップを経路網羅ステップとして判定する。
網羅結果記録部１４０は、経路網羅ステップを実行するまでに実行された各分岐命令ステップのステップ番号と分岐条件の判定結果とを他の実行済み経路レコードと比較する。
網羅結果記録部１４０は、各分岐命令ステップのステップ番号と分岐条件の判定結果とが他の実行済み経路レコードと一致する場合、各分岐命令ステップのうち最後に実行された分岐命令ステップを経路網羅ステップとして判定する。
【００２２】
経路別実行結果記録部１５０（実行結果データ生成部の一例）は、命令実行部１２１が試験対象プログラム１９１の実行を終了する毎に経路別実行結果テーブル１９５を生成する（実行結果データ生成処理）。
経路別実行結果テーブル１９５は、入力変数値組み合わせ１９３と試験対象プログラム１９１の実行結果とを示すデータである。
【００２３】
試験結果出力部１６０（試験結果データ出力部の一例）は、経路別実行結果出力部１６１と経路網羅情報出力部１６２とを備える。
【００２４】
経路別実行結果出力部１６１は、経路別実行結果記録部１５０により生成された経路別実行結果テーブル１９５に基づいて経路別実行結果テーブル１９５の設定内容を示す経路別実行結果情報１９６（試験結果データの一例）を生成する。
経路別実行結果出力部１６１は、生成した経路別実行結果情報１９６を出力する（試験結果データ出力処理）。
【００２５】
経路網羅情報出力部１６２は、分岐命令実行結果記録部１３０により生成された分岐命令実行結果テーブル１９４に基づいて実行していない実行経路を未実行経路として判定する。
経路網羅情報出力部１６２は、判定した未実行経路を示す経路網羅情報１９７（試験結果データの一例）を生成し、生成した経路網羅情報１９７を出力する（試験結果データ出力処理）。
【００２６】
但し、プログラム実行部１２０の命令実行部１２１は、試験対象プログラム１９１に含まれる分岐命令ステップを実行した場合、網羅結果記録部１４０によって生成された分岐命令実行結果テーブル１９４（経路網羅フラグ）に基づいて分岐命令ステップのステップ番号と分岐条件の判定結果とが実行中止条件を満たすか否かを判定する。
そして、命令実行部１２１は、分岐命令ステップのステップ番号と分岐条件の判定結果とが実行中止条件を満たす場合、分岐命令ステップの分岐先の実行経路を実行せずに試験対象プログラム１９１の実行を終了する。
【００２７】
図２は、実施の形態１における分岐命令実行結果テーブル１９４を示す図である。
実施の形態１における分岐命令実行結果テーブル１９４について、図２に基づいて説明する。
【００２８】
分岐命令実行結果テーブル１９４は、「実行経路番号」と「分岐命令実行結果」とを対応付けたデータである。
【００２９】
「実行経路番号」は、入力変数値組み合わせ１９３毎に割り当てられたユニークな番号を示す。
【００３０】
「分岐命令実行結果」は、実行された分岐命令ステップ毎に「ステップ番号」と「判定結果」と「経路網羅フラグ」とを示す。
「ステップ番号」は、実行された分岐命令ステップを識別する情報として分岐命令ステップのステップ番号（例えば、ソースコードの行番号）を示す。
「判定結果」は、分岐条件の判定結果を示す。例えば、分岐命令ステップがｉｆ文（二分岐命令）である場合、分岐条件の判定結果は“真（ｙｅｓ）”または“偽（ｎｏ）”である。
「経路網羅フラグ」は、分岐先の全ての実行経路が実行済みであるか否かを示す。分岐先の全ての実行経路が実行済みである場合、「経路網羅フラグ」は“真”を示し、分岐先の少なくともいずれかの実行経路が実行されていない場合、「経路網羅フラグ」は“偽”を示す。
【００３１】
例えば、実行経路１の最初の分岐命令実行結果（５，真，偽）は、ステップ番号“５”の分岐命令ステップが実行され、分岐命令ステップを実行したときに分岐条件の判定結果が“真”であったことを意味する。
また、この分岐命令実行結果（５，真，偽）は、ステップ番号“５”の分岐命令ステップで判定結果が“真”である場合の分岐先に実行済みでない実行経路が残っている、ことを意味する。
【００３２】
図３は、実施の形態１における経路別実行結果テーブル１９５を示す図である。
実施の形態１における経路別実行結果テーブル１９５について、図３に基づいて説明する。
【００３３】
経路別実行結果テーブル１９５は、「入力変数値組み合わせ」と「実行結果」と「実行経路番号」とを対応付けたデータである。
【００３４】
「入力変数値組み合わせ」は、試験対象プログラム１９１の実行に用いられた入力変数値組み合わせ１９３を示す。
【００３５】
「実行結果」は、「出力変数値」または「エラー情報」を示す。試験対象プログラム１９１がエラー終了しなかった場合、「出力変数値」が設定され、試験対象プログラム１９１がエラー終了した場合、「エラー情報」が設定される。
「出力変数値」は、試験対象プログラム１９１の実行が終了したときに出力変数に設定されていた値である。出力変数とは、試験対象プログラム１９１の出力パラメータとして使用される変数である。
「エラー情報」は、発生したエラーの種類やエラーが発生した処理ステップの番号などを示す。
【００３６】
「実行経路番号」は、入力変数値組み合わせ１９３毎に割り当てられたユニークな番号を示す。
経路別実行結果テーブル１９５の「実行経路番号」は、分岐命令実行結果テーブル１９４の「実行経路番号」（図２参照）に対応している。
【００３７】
経路別実行結果テーブル１９５は、経路別実行結果情報１９６として用いられる。
【００３８】
図４は、実施の形態１における経路網羅情報１９７を示す図である。
実施の形態１における経路網羅情報１９７について、図４に基づいて説明する。
【００３９】
経路網羅情報１９７には、実行済みの経路網羅情報１９７Ａと未実行の経路網羅情報１９７Ｂとがある。
【００４０】
実行済みの経路網羅情報１９７Ａは、実行済みの実行経路について「実行経路番号」と「分岐命令実行結果」とを示す。
「実行経路番号」は、実行された実行経路を識別する番号を示す。
「分岐命令実行結果」は、実行経路に含まれる分岐命令の「ステップ番号」と「判定結果」とを示す。
実行済みの経路網羅情報１９７Ａの「実行経路番号」「分岐命令実行結果」は、分岐命令実行結果テーブル１９４の「実行経路番号」「分岐命令実行結果（経路網羅フラグを除く）」（図２参照）に対応している。
【００４１】
未実行の経路網羅情報１９７Ｂは、未実行の実行経路について「分岐命令実行結果」を示す。
【００４２】
例えば、実行済みの経路網羅情報１９７Ａの“実行経路１”は、ステップ番号“５”“１０”“１８”“３２”“４０”の各分岐命令ステップで判定結果が“真”である実行経路が実行済みであることを示している。
また、未実行の経路網羅情報１９７Ｂの“項番１”は、上記の“実行経路１”に対してステップ番号“４０”の分岐命令ステップで判定結果が“偽”である実行経路が実行されていないことを示している。
【００４３】
図５は、実施の形態１におけるプログラム試験装置１００のプログラム試験方法を示すフローチャートである。
実施の形態１におけるプログラム試験装置１００のプログラム試験方法について、図５に基づいて説明する。
【００４４】
まず、プログラム試験方法の概要について説明する。
【００４５】
入力変数値組み合わせ生成部１１０は、複数の入力変数値組み合わせ１９３を生成する（Ｓ１１０）。
命令実行部１２１は入力変数値組み合わせ１９３を選択し（Ｓ１２０）、試験対象プログラム１９１の処理ステップを一つ実行する（Ｓ１３０）。
命令実行部１２１は、試験対象プログラム１９１が終了したか否かを判定する（Ｓ１３１）。
試験対象プログラム１９１が終了していない場合（Ｓ１３１「ＮＯ」）、命令実行部１２１は実行した処理ステップが分岐命令ステップであるか否かを判定する（Ｓ１３２）。
実行した処理ステップが分岐命令ステップでない場合（Ｓ１３２「ＮＯ」）、Ｓ１３０に戻る。
【００４６】
実行した処理ステップが分岐命令ステップである場合（Ｓ１３２「ＹＥＳ」）、命令実行部１２１は実行した分岐命令ステップが実行中止条件を満たすか否かを分岐命令実行結果テーブル１９４に基づいて判定する（Ｓ１３３）。
実行した分岐命令ステップの判定結果が実行中止条件を満たさない場合（Ｓ１３３「ＮＯ」）、分岐命令実行結果記録部１３０は分岐命令実行結果テーブル１９４に分岐命令ステップの実行結果を設定する（Ｓ１４０）。その後、Ｓ１３０に戻る。
【００４７】
実行した分岐命令ステップの判定結果が実行中止条件を満たす場合（Ｓ１３３「ＹＥＳ」）、Ｓ１３４に進む。
【００４８】
試験対象プログラム１９１が終了した場合（Ｓ１３１「ＹＥＳ」）、経路別実行結果記録部１５０は経路別実行結果テーブル１９５を設定し（Ｓ１５０）、網羅結果記録部１４０は分岐命令実行結果テーブル１９４の経路網羅フラグを更新する（Ｓ１６０）。その後、Ｓ１３４に進む。
【００４９】
命令実行部１２１は未選択の入力変数値組み合わせ１９３が残っているか否かを判定する（Ｓ１３４）。
未選択の入力変数値組み合わせ１９３が残っている場合（Ｓ１３４「ＹＥＳ」）、Ｓ１２０に戻る。
未選択の入力変数値組み合わせ１９３が残っていない場合（Ｓ１３４「ＮＯ」）、試験結果出力部１６０は経路別実行結果テーブル１９５と分岐命令実行結果テーブル１９４とに基づいて試験結果を出力する（Ｓ１７０）。
【００５０】
次に、プログラム試験方法の詳細について説明する。
【００５１】
Ｓ１１０において、入力変数値組み合わせ生成部１１０は、入力変数値データ１９２を入力し、入力した入力変数値データ１９２に基づいて複数の入力変数値組み合わせ１９３を生成する。
【００５２】
図６は、実施の形態１における入力変数値データ１９２と入力変数値組み合わせ１９３とを示す図である。
入力変数値組み合わせ生成処理（図５のＳ１１０）について、図６に基づいて説明する。
【００５３】
利用者は、キーボードやマウスなどの入力装置を用いて試験対象プログラム１９１の入力変数「ｘ」「ｙ」「ｚ」毎に入力変数に設定する１つ以上の初期値を入力変数値としてプログラム試験装置１００に入力する。
入力変数値組み合わせ生成部１１０は、入力装置から入力変数毎に入力変数値を入力し、入力変数と入力変数値とを対応付けて入力変数値データ１９２を生成し、生成した入力変数値データ１９２を試験装置記憶部１９０に記憶する。
【００５４】
例えば、入力変数「ｘ」の入力変数値として２つの値「０」「１」が入力された場合、入力変数値組み合わせ生成部１１０は、入力変数「ｘ」と入力変数値「０」「１」とを対応付けて入力変数値データ１９２に設定する。
【００５５】
入力変数値組み合わせ生成部１１０は、入力変数値データ１９２に基づいて各入力変数の入力変数値を１つずつ組み合わせて入力変数値組み合わせ１９３を生成し、生成した入力変数値組み合わせ１９３を試験装置記憶部１９０に記憶する。
【００５６】
例えば、入力変数値データ１９２に入力変数「ｘ」の２つの入力変数値「０」「１」と、入力変数「ｙ」の３つの入力変数値「−１０」「０」「１０」と、入力変数「ｚ」の３つの入力変数値「ａ」「ｂ」「ｃ」とが設定されている場合、入力変数値組み合わせ生成部１１０は「１８（＝２×３×３）」個の入力変数値組み合わせ１９３を生成する。
【００５７】
図５に戻り、プログラム試験方法の説明を続ける。
【００５８】
Ｓ１１０の後、Ｓ１２０に進む。
【００５９】
Ｓ１２０において、命令実行部１２１は、Ｓ１１０で生成された複数の入力変数値組み合わせ１９３から未選択の入力変数値組み合わせ１９３を一つ選択し、選択した入力変数値組み合わせ１９３を試験対象プログラム１９１の入力変数に設定する。
また、命令実行部１２１は、選択した入力変数値組み合わせ１９３に対して実行経路番号を生成する。生成された実行経路番号は、分岐命令実行結果テーブル１９４（図２参照）や経路別実行結果テーブル１９５（図３参照）に設定される。
Ｓ１２０の後、Ｓ１３０に進む。
【００６０】
Ｓ１３０において、命令実行部１２１は、試験対象プログラム１９１に従って次の処理ステップに移行し、次の処理ステップを実行する。
例えば、命令実行部１２１は、１回目のＳ１３０では先頭の処理ステップに移行し、先頭の処理ステップを実行する。
また、命令実行部１２１は、２回目のＳ１３０では２番目の処理ステップに移行し、２番目の処理ステップを実行する。
但し、前回実行した処理ステップの種類が分岐命令ステップである場合、命令実行部１２１は、分岐命令ステップが示す分岐先の処理ステップに処理を移行し、分岐先の処理ステップを実行する。
【００６１】
このとき、エラー検出部１２２は、命令実行部１２１による処理ステップの実行によりエラーが発生したか否かを判定する。
例えば、エラー検出部１２２は、メモリのアクセス違反（記憶例外）やオーバーフロー（演算例外）などのエラーがＯＳ（オペレーティングシステム）から通知された場合にエラーが発生したと判定する。
また、エラー検出部１２２は、試験対象プログラム１９１で使用する各変数の値が許容範囲外の値である場合にエラーが発生したと判定してもよい。この場合、各変数の許容範囲の値を示す許容範囲情報は試験装置記憶部１９０に予め記憶しておく。
【００６２】
エラーが発生した場合、エラー検出部１２２は、エラー内容（または名称）やエラーが発生した処理ステップの番号などのエラー情報を出力する。
経路別実行結果記録部１５０は、Ｓ１２０で選択された入力変数値組み合わせ１９３と、エラー検出部１２２が出力したエラー情報と、Ｓ１２０で生成された実行経路番号とを対応付けて経路別実行結果テーブル１９５に設定する（図３参照）。
そして、命令実行部１２１は以後の処理ステップを実行せずに試験対象プログラム１９１の実行を終了する。処理はＳ１３４に進む。
図５では、Ｓ１３０でエラーが発生した場合の処理の流れについて図示を省略している。
【００６３】
エラーが発生しなかった場合、処理はＳ１３１に進む。
【００６４】
Ｓ１３１において、命令実行部１２１は、Ｓ１３０で実行した処理ステップが最後の処理ステップであるか否か（または、次の処理ステップがあるか否か）を判定する。つまり、命令実行部１２１は、Ｓ１３０での処理ステップの実行により試験対象プログラム１９１の実行が終了したか否かを判定する。
試験対象プログラム１９１の実行が終了した場合（ＹＥＳ）、Ｓ１５０に進む。
試験対象プログラム１９１の実行が終了していない場合（ＮＯ）、Ｓ１３２に進む。
【００６５】
Ｓ１３２において、命令実行部１２１は、Ｓ１３０で実行した処理ステップの種類が分岐命令ステップであるか否かを判定する。
分岐命令ステップを実行した場合（ＹＥＳ）、Ｓ１３３に進む。
分岐命令ステップ以外の処理ステップを実行した場合（ＮＯ）、Ｓ１３０に戻る。
【００６６】
Ｓ１３３において、命令実行部１２１は、分岐命令実行結果テーブル１９４（図２参照）を参照し、Ｓ１３０で今回実行した分岐命令ステップの判定結果が試験対象プログラム１９１の実行中止条件を満たすか否かを判定する。
このとき、命令実行部１２１は以下のように判定を行う。
【００６７】
命令実行部１２１は、今回の実行経路と一致する「分岐命令実行結果（経路網羅フラグを除く）」を含んだ別の実行経路を「該当実行経路」として分岐命令実行結果テーブル１９４から検索する。つまり、該当実行経路とは、今回の実行経路のステップ番号の組み合わせと今回の実行経路の判定結果の組み合わせとを含んだ実行経路のことである。
該当実行経路が有った場合、命令実行部１２１は該当実行経路の「分岐命令実行結果」のうち今回実行した分岐命令ステップと同じ分岐命令ステップの経路網羅フラグを参照する。
参照した経路網羅フラグが「真」である場合、命令実行部１２１は今回実行した分岐命令ステップの判定結果が試験対象プログラム１９１の実行中止条件を満たすと判定する。
該当実行経路が無い場合または参照した経路網羅フラグが「偽」である場合、命令実行部１２１は今回実行した分岐命令ステップの判定結果が試験対象プログラム１９１の実行中止条件を満たさないと判定する。
【００６８】
例えば、図２において今回の実行経路を「実行経路ｎ」とし、今回実行した分岐命令ステップのステップ番号を「１８」とし、分岐条件の判定結果を「真」とする。
この場合、実行経路１の分岐命令実行結果は実行経路ｎと同じ分岐命令実行結果「５，真」「１０，真」「１８，真」を含むため、実行経路１が「該当実行経路」に該当する。
しかし、実行経路１の分岐命令実行結果「１８，真」に対応する経路網羅フラグは「偽」であるため、今回実行した分岐命令ステップ（ステップ番号：１８）の判定結果「真」は試験対象プログラム１９１の実行中止条件を満たしていない。
つまり、実行経路１の分岐命令実行結果「１８，真」に対応する経路網羅フラグが「真」であれば、今回実行した分岐命令ステップ（ステップ番号：１８）の判定結果「真」は試験対象プログラム１９１の実行中止条件を満たす。
【００６９】
今回実行した分岐命令ステップの判定結果が試験対象プログラム１９１の実行中止条件を満たす場合（ＹＥＳ）、命令実行部１２１は以後の処理ステップを実行せずに試験対象プログラム１９１の実行を終了する。処理はＳ１３４に進む。
今回実行した分岐命令ステップの判定結果が試験対象プログラム１９１の実行中止条件を満たさない場合（ＮＯ）、Ｓ１４０に進む。
【００７０】
Ｓ１４０において、分岐命令実行結果記録部１３０は、分岐命令実行結果テーブル１９４（図２参照）にＳ１３０で今回実行した分岐命令ステップの分岐命令実行結果を設定する。
【００７１】
例えば、図２において今回の実行経路を「実行経路ｎ」とし、今回実行した分岐命令ステップのステップ番号を「１８」とし、分岐条件の判定結果を「真」とする。
この場合、分岐命令実行結果記録部１３０は、実行経路ｎの分岐命令実行結果にステップ番号「１８」と判定結果「真」と経路網羅フラグの初期値「偽」との組み合わせ「１８，真，偽」を追加する。
【００７２】
Ｓ１４０の後、Ｓ１３０に戻る。
【００７３】
Ｓ１５０において、経路別実行結果記録部１５０は、Ｓ１２０で選択された入力変数値組み合わせ１９３と、試験対象プログラム１９１の出力変数の値と、Ｓ１２０で生成された実行経路番号とを対応付けて経路別実行結果テーブル１９５に設定する（図３参照）。
Ｓ１５０の後、Ｓ１６０に進む。
【００７４】
Ｓ１６０において、網羅結果記録部１４０は、分岐命令実行結果テーブル１９４（図２参照）に設定されている経路網羅フラグのうち、分岐先の全ての実行経路が実行済みである分岐命令ステップの判定結果に対応する経路網羅フラグを「偽」から「真」に更新する。
経路網羅フラグ更新処理（Ｓ１６０）の詳細については別途説明する。
Ｓ１６０の後、Ｓ１３４に進む。
【００７５】
Ｓ１３４において、命令実行部１２１は、Ｓ１２０で選択していない入力変数値組み合わせ１９３が残っているか否かを判定する。
未選択の入力変数値組み合わせ１９３が残っている場合（ＹＥＳ）、Ｓ１２０に戻る。
未選択の入力変数値組み合わせ１９３が残っていない場合（ＮＯ）、Ｓ１７０に進む。
【００７６】
Ｓ１７０において、経路別実行結果出力部１６１は、経路別実行結果テーブル１９５を試験装置記憶部１９０から取得し、経路別実行結果テーブル１９５に設定されている情報を示す経路別実行結果情報１９６を生成する。
そして、経路別実行結果出力部１６１は、生成した経路別実行結果情報１９６をディスプレイやプリンタなどの出力装置に出力する。
【００７７】
また、経路網羅情報出力部１６２は、分岐命令実行結果テーブル１９４を試験装置記憶部１９０から取得する。
経路網羅情報出力部１６２は、取得した分岐命令実行結果テーブル１９４に基づいて、実行した実行経路を示す経路網羅情報１９７（図４の経路網羅情報１９７Ａ参照）と、実行していない実行経路を示す経路網羅情報１９７（図４の経路網羅情報１９７Ｂ参照）とを生成する。
そして、経路網羅情報出力部１６２は、生成した経路網羅情報１９７を出力装置に出力する。
【００７８】
例えば、図４に示す実行済みの経路網羅情報１９７Ａは、図２の分岐命令実行結果テーブル１９４に示す情報から経路網羅フラグを除いたものである。
また、図４に示す未実行の経路網羅情報１９７Ｂは、実行済みの経路網羅情報１９７Ａからステップ番号の組み合わせ（５，１０，１８，３２，４０，・・・）を抽出し、抽出したステップ番号の組み合わせに実行済みの経路網羅情報１９７Ａに含まれない判定結果の組み合わせを対応付けたものである。例えば、ステップ番号「５」「１０」「１８」「３２」「４０」の組み合わせに対して判定結果「真」「真」「真」「真」「偽」の組み合わせは、実行済みの経路網羅情報１９７Ａには存在しない。このため、これらの組み合わせ「５，真」「１０，真」「１８，真」「３２，真」「４０，偽」を未実行の経路網羅情報１９７Ｂに設定する（項番１）。
また、試験対象プログラム１９１から試験対象プログラム１９１に含まれる全ての実行経路を抽出し、全ての実行経路を示す実行経路情報を予め生成しておいてもよい。そして、この実行経路情報に含まれる実行経路から実行済みの経路網羅情報１９７Ａに示される実行経路を除いた残りの実行経路を未実行の経路網羅情報１９７Ｂに設定してもよい。
【００７９】
Ｓ１７０により、プログラム試験方法の処理は終了する。
【００８０】
図７は、実施の形態１における経路網羅フラグ更新処理（Ｓ１６０）を示すフローチャートである。
実施の形態１における経路網羅フラグ更新処理（Ｓ１６０）について、図７に基づいて説明する。
【００８１】
Ｓ１６１において、網羅結果記録部１４０は、分岐命令実行結果テーブル１９４から今回設定された実行経路（最後の実行経路）を選択する。
網羅結果記録部１４０は、選択した実行経路の最後に設定されている分岐命令実行結果の経路網羅フラグ、つまり、最後に実行された分岐命令ステップの経路網羅フラグを「偽」から「真」に更新する。
以下、選択した実行経路を「対象実行経路」といい、対象実行経路に含まれる分岐命令ステップのうち最後に実行された分岐命令ステップを「最終分岐ステップ」という。
Ｓ１６１の後、Ｓ１６２に進む。
【００８２】
Ｓ１６２において、網羅結果記録部１４０は、対象実行経路と最終分岐ステップまでのステップ番号が一致し、対象実行経路と最終分岐ステップの一つ前の分岐命令ステップまでの判定結果が一致する（一つまたは複数の）実行経路を「候補実行経路」として分岐命令実行結果テーブル１９４から検索する。
Ｓ１６２の後、Ｓ１６３に進む。
【００８３】
Ｓ１６３において、候補実行経路が存在する場合（ＹＥＳ）、Ｓ１６４に進む。
また、候補実行経路が存在しない場合（ＮＯ）、経路網羅フラグ更新処理（Ｓ１６０）を終了する。
【００８４】
Ｓ１６４において、網羅結果記録部１４０は、候補実行経路のうち最終分岐ステップのステップ番号に対応する経路網羅フラグが「真」である（一つまたは複数の）候補実行経路を「該当実行経路」として判定する。
Ｓ１６４の後、Ｓ１６５に進む。
【００８５】
Ｓ１６５において、該当実行経路が存在する場合（ＹＥＳ）、Ｓ１６６に進む。
また、該当実行経路が存在しない場合（ＮＯ）、経路網羅フラグ更新処理（Ｓ１６０）を終了する。
【００８６】
Ｓ１６６において、網羅結果記録部１４０は、対象実行経路に含まれる最終分岐ステップの判定結果と（一つまたは複数の）該当実行経路に含まれる最終分岐ステップの判定結果とに基づいて、最終分岐ステップの全ての判定結果が実行済みであるか否かを判定する。
【００８７】
例えば、最終分岐ステップがｉｆ文（二分岐命令）である場合、対象実行経路と該当実行経路との一方の判定結果が「真（ｙｅｓ）」であり、他方の判定結果が「偽（ｎｏ）」であれば、最終分岐ステップの全ての判定結果が実行済みである。
【００８８】
つまり、対象実行経路と（一つまたは複数の）該当実行経路とに最終分岐ステップの判定結果として値が異なる分岐数の判定結果（三分岐命令であれば三種類の判定結果）が設定されている場合、最終分岐ステップの全ての判定結果は実行済みである。
【００８９】
三分岐以上に分岐する多分岐命令の分岐命令ステップが試験対象プログラム１９１に含まれる場合、分岐命令ステップ毎にステップ番号と分岐数とを示す分岐命令情報を試験装置記憶部１９０に予め記憶しておいてもよい。網羅結果記録部１４０は、この分岐命令情報から最終分岐ステップのステップ番号に対応する最終分岐ステップの分岐数を取得し、取得した分岐数に基づいて判定を行う。
但し、試験対象プログラム１９１に全ての分岐命令ステップをｉｆ文（二分岐命令）で記述する場合、全ての分岐命令ステップの判定結果は「真」または「偽」であるため、上記のような分岐命令情報は不要である。
【００９０】
Ｓ１６６の後、Ｓ１６７に進む。
【００９１】
Ｓ１６７において、最終分岐ステップの全ての判定結果が実行済みである場合（ＹＥＳ）、Ｓ１６８に進む。
また、最終分岐ステップの少なくともいずれかの判定結果が実行されていない場合（ＮＯ）、経路網羅フラグ更新処理（Ｓ１６０）は終了する。
【００９２】
Ｓ１６８において、網羅結果記録部１４０は、対象実行経路に含まれる分岐命令ステップのうち最終分岐ステップの一つ前の分岐命令ステップの経路網羅フラグを「偽」から「真」に更新する。
同様に、網羅結果記録部１４０は、該当実行経路に含まれる分岐命令ステップのうち最終分岐ステップに対応する分岐命令ステップの一つ前の分岐命令ステップの経路網羅フラグを「偽」から「真」に更新する。
Ｓ１６８により経路網羅フラグ更新処理（Ｓ１６０）は終了する。
【００９３】
図８は、実施の形態１における試験対象プログラム１９１を表すフローチャートの一例である。
図９−１１は、実施の形態１における分岐命令実行結果設定処理（Ｓ１４０）と経路網羅フラグ更新処理（Ｓ１６０）との具体例を示す分岐命令実行結果テーブル１９４である。
分岐命令実行結果設定処理（Ｓ１４０）と経路網羅フラグ更新処理（Ｓ１６０）との具体例について、図８−１１に基づいて説明する。
【００９４】
図８において、試験対象プログラム１９１は実行経路１と実行経路２とを含んでいる。
実行経路１の処理順序は「処理ステップａ→分岐命令ステップＡ（判定結果：真）→処理ステップｂ→分岐命令ステップＢ（判定結果：真）→処理ステップｃ」である。
実行経路２の処理順序は「処理ステップａ→分岐命令ステップＡ（判定結果：真）→処理ステップｂ→分岐命令ステップＢ（判定結果：偽）→処理ステップｄ」である。
分岐命令ステップＡのステップ番号は「５」であり、分岐命令ステップＢのステップ番号は「１０」である。
【００９５】
最初の入力変数値組み合わせ１９３を用いて試験対象プログラム１９１を実行した場合、分岐命令実行結果テーブル１９４は以下のように設定または更新される。
処理ステップａの実行後に分岐命令ステップＡが実行され、判定結果が「真」であった場合、図９（１）に示すように分岐命令実行結果「５，真，偽」が設定される（図５のＳ１４０）。
次に、処理ステップｂの実行後に分岐命令ステップＢが実行され、判定結果が「真」であった場合、図９（２）に示すように分岐命令実行結果「１０，真，偽」が設定される（図５のＳ１４０）。
そして、処理ステップｃが実行され試験対象プログラム１９１が終了した場合、図９（３）に示すように分岐命令ステップＢの経路網羅フラグを「偽」から「真」に更新する（図７のＳ１６１）。
【００９６】
次の入力変数値組み合わせ１９３を用いて試験対象プログラム１９１を実行した場合、分岐命令実行結果テーブル１９４は以下のように設定または更新される。
処理ステップａの実行後に分岐命令ステップＡが実行され、判定結果が「真」であった場合、図１０（４）に示すように分岐命令実行結果「５，真，偽」が設定される（図５のＳ１４０）。
次に、処理ステップｂの実行後に分岐命令ステップＢが実行され、判定結果が「偽」であった場合、図１０（５）に示すように分岐命令実行結果「１０，偽，偽」が設定される（図５のＳ１４０）。
そして、処理ステップｄが実行され試験対象プログラム１９１が終了した場合、図１０（６）に示すように分岐命令ステップＢの経路網羅フラグを「偽」から「真」に更新する（図７のＳ１６１）。
【００９７】
図１１（６）において、以下、実行経路２の最後の分岐命令ステップ（ステップ番号：１０）を「最終分岐ステップ」という。
実行経路１は実行経路２と最終分岐ステップまでのステップ番号「５」「１０」が一致し、実行経路２と最終分岐ステップの一つ前の分岐命令ステップ（ステップ番号：５）までの判定結果「真」が一致する（図７のＳ１６２）。
【００９８】
また、最終分岐ステップのステップ番号「１０」に対応する実行経路１の経路網羅フラグは「真」である（図７のＳ１６４）。
【００９９】
さらに、最終分岐ステップのステップ番号「１０」に対応する実行経路１の判定結果は「真」であり、実行経路２の判定結果は「偽」である。
したがって、最終分岐ステップの全ての判定結果が実行済みである（図７のＳ１６６）。
【０１００】
このため、図１１（７）に示すように実行経路１および実行経路２に含まれる分岐命令ステップのうち最終分岐ステップの一つ前の分岐命令ステップ（ステップ番号：５）の経路網羅フラグが「偽」から「真」に更新される（図７のＳ１６８）。
【０１０１】
図１２−１４は、実施の形態１における分岐命令実行結果設定処理（Ｓ１４０）と経路網羅フラグ更新処理（Ｓ１６０）との具体例を示すフローチャートである。
図１２−１４に示す処理（１）−（７）は、図９−図１１に示した処理（１）−（７）に対応している。
【０１０２】
図１２において実行経路１で分岐命令ステップＡが実行され、判定結果が「真」であった場合、（１）分岐命令実行結果「５，真，偽」（ステップ番号，判定結果，経路網羅フラグ）が分岐命令実行結果テーブル１９４に設定される。
次に、分岐命令ステップＢが実行され、判定結果が「真」であった場合、（２）分岐命令実行結果「１０，真，偽」が分岐命令実行結果テーブル１９４に設定される。
そして、（３）分岐命令実行結果「１０，真，偽」の経路網羅フラグ「偽」が「真」に更新される。
【０１０３】
図１３において実行経路２で分岐命令ステップＡが実行され、判定結果が「真」であった場合、（４）分岐命令実行結果「５，真，偽」が分岐命令実行結果テーブル１９４に設定される。
次に、分岐命令ステップＢが実行され、判定結果が「偽」であった場合、（５）分岐命令実行結果「１０，偽，偽」が分岐命令実行結果テーブル１９４に設定される。
そして、（６）分岐命令実行結果「１０，偽，偽」の経路網羅フラグ「偽」が「真」に更新される。
【０１０４】
図１４において、分岐命令ステップＢの判定結果「真」「偽」が共に実行済みであるため、（７）分岐命令ステップＡの分岐命令実行結果「５，真，偽」に含まれる経路網羅フラグ「偽」が「真」に更新される。
【０１０５】
図１５は、実施の形態１におけるプログラム試験装置１００のハードウェア資源の一例を示す図である。
図１５において、プログラム試験装置１００は、ＣＰＵ９０１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を備えている。ＣＰＵ９０１は、バス９０２を介してＲＯＭ９０３、ＲＡＭ９０４、通信ボード９０５、ディスプレイ装置９１１、キーボード９１２、マウス９１３、ドライブ装置９１４、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。ドライブ装置９１４は、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）などの記憶媒体を読み書きする装置である。
【０１０６】
通信ボード９０５は、有線または無線で、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、電話回線などの通信網に接続している。
【０１０７】
磁気ディスク装置９２０には、ＯＳ９２１（オペレーティングシステム）、プログラム群９２２、ファイル群９２３が記憶されている。
【０１０８】
プログラム群９２２には、実施の形態において「〜部」として説明する機能を実行するプログラムが含まれる。プログラムは、ＣＰＵ９０１により読み出され実行される。すなわち、プログラムは、「〜部」としてコンピュータ（プログラム試験装置１００）を機能させるものであり、また「〜部」の手順や方法をコンピュータに実行させるものである。
【０１０９】
ファイル群９２３には、実施の形態において説明する「〜部」で使用される各種データ（入力、出力、判定結果、計算結果、処理結果など）が含まれる。
【０１１０】
実施の形態において構成図およびフローチャートに含まれている矢印は主としてデータや信号の入出力を示す。
【０１１１】
実施の形態において「〜部」として説明するものは「〜回路」、「〜装置」、「〜機器」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
【０１１２】
実施の形態１において、例えば、以下のようなプログラム試験装置１００について説明した。
【０１１３】
プログラム試験装置１００は、入力変数値組み合わせ生成部１１０と命令実行部１２１と分岐命令実行結果記録部１３０と網羅結果記録部１４０と経路別実行結果記録部１５０とを備える。
入力変数値組み合わせ生成部１１０は、複数の入力変数値の組み合わせを生成する。
命令実行部１２１は、試験対象プログラムに入力変数値の組み合わせを与えて実行する。
分岐命令実行結果記録部１３０は、実行が完了した実行経路ごとに、試験対象プログラム中の各分岐命令の実行結果を記録する。
網羅結果記録部１４０は、試験対象プログラム中の各分岐命令について、該分岐命令以降の実行経路が網羅済みであるか否かを記録する。
経路別実行結果記録部１５０は、実行経路ごとに実行結果を記録する。
【０１１４】
プログラム試験装置１００は、さらに、経路別実行結果出力部１６１を備える。
経路別実行結果出力部１６１は、実行経路ごとに入力変数値、出力変数値、エラー情報を出力する。
【０１１５】
プログラム試験装置１００は、さらに、経路網羅情報出力部１６２を備える。
経路網羅情報出力部１６２は、実行済みの実行経路と実行済みでない実行経路とを出力する。
【０１１６】
プログラム試験装置１００は、各分岐の真、偽それぞれの結果に対して異なる分岐命令実行結果を系統的に記録し、記録した各分岐命令実行結果について、各分岐命令以降の実行経路を網羅したか判定する。
これにより、新たな変数値の組み合わせによる試験対象プログラムの実行時に各分岐命令実行結果以降の実行経路が既に実行済みであるか否かを判定することが可能となる。
そして、分岐命令実行結果以降の実行経路が既に実行済みであると判定した場合には、その時点で試験対象プログラムの実行を中止して次の変数値の組み合わせに移行する。
これにより、同一の実行経路を試験対象プログラムの終了まで実行することを避けることが可能となる。
【０１１７】
また、実行が完了した実行経路の実行結果と、実行済みの実行経路および未実行の実行経路を出力することによって、利用者に実行経路の網羅度を含む試験結果を提供することができる。
【符号の説明】
【０１１８】
１００  プログラム試験装置、１１０  入力変数値組み合わせ生成部、１２０  プログラム実行部、１２１  命令実行部、１２２  エラー検出部、１３０  分岐命令実行結果記録部、１４０  網羅結果記録部、１５０  経路別実行結果記録部、１６０  試験結果出力部、１６１  経路別実行結果出力部、１６２  経路網羅情報出力部、１９０  試験装置記憶部、１９１  試験対象プログラム、１９２  入力変数値データ、１９３  入力変数値組み合わせ、１９４  分岐命令実行結果テーブル、１９５  経路別実行結果テーブル、１９６  経路別実行結果情報、１９７  経路網羅情報、９０１  ＣＰＵ、９０２  バス、９０３  ＲＯＭ、９０４  ＲＡＭ、９０５  通信ボード、９１１  ディスプレイ装置、９１２  キーボード、９１３  マウス、９１４  ドライブ装置、９２０  磁気ディスク装置、９２１  ＯＳ、９２２  プログラム群、９２３  ファイル群。
【図１】
0005595304.tif 000002
【図２】
0005595304.tif 000003
【図３】
0005595304.tif 000004
【図４】
0005595304.tif 000005
【図５】
0005595304.tif 000006
【図６】
0005595304.tif 000007
【図７】
0005595304.tif 000008
【図８】
0005595304.tif 000009
【図９】
0005595304.tif 000010
【図１０】
0005595304.tif 000011
【図１１】
0005595304.tif 000012
【図１２】
0005595304.tif 000013
【図１３】
0005595304.tif 000014
【図１４】
0005595304.tif 000015
【図１５】
0005595304.tif 000016