(57)【特許請求の範囲】
【請求項１】
プログラム開始から終了までの間に多数のルート（ルートパターン）を備え、各ルートパターンが多数のルートパスで構成されるロードモジュールの試験ルートを決定する試験ルート決定装置において、
ロードモジュールを構成する全ルートパスについて、ルートパスと該ルートパスが試験により実行されたかを示す実行フラグとの対応を示すルートパス情報と、ロードモジュールの開始から終了までの間に存在するルートパターンのそれぞれについて、ルートパターンと該ルートパターンの試験実行の有無を示す実行フラグと該ルートパターンを構成するルートパスのうち試験が未実行のルートパスの数との対応を示すルートパターン情報を作成する情報作成部、
前記ルートパス情報及びルートパターン情報を保存する保存部、
所定のルートパターンの試験が実行されたとき、該ルートパターンに対応する前記実行フラグをオンすると共に、該ルートパターンを構成するルートパスに応じた前記実行フラグをオンし、かつ、前記保存されている各ルートパターンの未実行ルートパスの数を更新する試験実行状況反映部、
試験が未実行のルートパターンのうち、未実行ルートパス数が最大のルートパターンを次に試験するためのルートパターンとして決定する試験ルートパターン決定部、
全ルートパスの実行フラグがオンになったとき、試験ルート決定終了と判断する判断部、
を備え、前記情報作成部は、サブルーチンを呼び出して処理を行うルートパスを含むルートパターンに関して、該ルートパスを除いたルートパスの数と該サブルーチンにおけるルートパスの数の和を該ルートパターンのルートパス数として求め、
前記試験実行状況反映部は、サブルーチンを呼び出して処理を行うルートパスを含むルートパターンに関して、該ルートパスを除いた未実行ルートパスの数及び該サブルーチンにおける未実行ルートパスの数の和を未実行ルートパターンの未実行ルートパス数として求めて前記未実行ルートパスの数を更新する、
ことを特徴とするロードモジュールの試験ルート決定装置。
【請求項２】
プログラム開始から終了までの間に多数のルート（ルートパターン）を備え、各ルートパターンが多数のルートパスで構成されるロードモジュールの試験ルートを決定する試験ルート決定装置において、
ロードモジュールを構成する全ルートパスについて、ルートパスと該ルートパスが試験により実行されたかを示す実行フラグとの対応を示すルートパス情報と、ロードモジュールの開始から終了までの間に存在するルートパターンのそれぞれについて、ルートパターンと該ルートパターンの試験実行の有無を示す実行フラグと該ルートパターンを構成するルートパスのうち試験が未実行のルートパスの数との対応を示すルートパターン情報を作成する情報作成部、
前記ルートパス情報及びルートパターン情報を保存する保存部、
所定のルートパターンの試験が実行されたとき、該ルートパターンに対応する前記実行フラグをオンすると共に、該ルートパターンを構成するルートパスに応じた前記実行フラグをオンし、かつ、前記保存されている各ルートパターンの未実行ルートパスの数を更新する試験実行状況反映部、
試験が未実行のルートパターンのうち、未実行ルートパス数が最大のルートパターンを次に試験するためのルートパターンとして決定する試験ルートパターン決定部、
全ルートパスの実行フラグがオンになったとき、試験ルート決定終了と判断する判断部、
ロードモジュールを修正した場合、修正によって影響を受けないルートパターン部分であって分岐処理を含むルートパターン部分については、最初の分岐処理の分岐条件毎にまとめてブロック化し、ブロック化された各ブロックに前記最初の分岐処理の分岐条件をそれぞれ対応付けて該分岐条件を入力条件とするルートブロックをそれぞれ作成するルートブロック作成部、
前記ルートパスと該ルートブロックを用いて新たなルートパターンを作成する新ルートパターン作成部、
を備え、前記試験ルートパターン決定部は、未実行ルートパス及び未実行ルートブロックの数が最大の未実行ルートパターンを次に試験すべき試験ルートパターンとして決定し、未実行ルートパス、未実行ルートブロックが存在しなくなるまで試験ルートパターンを順次決定する、
ことを特徴とするロードモジュールの試験ルート決定装置。
【請求項３】
プログラム開始から終了までの間に多数のルート（ルートパターン）を備え、各ルートパターンが多数のルートパスで構成されるロードモジュールの試験ルートを決定する試験ルート決定装置において、
連続して実行される２つのルートパスの組み合わせを最小ルートパターンと定義するとき、ロードモジュールを構成する全ルートパスの最小ルートパターンについて、最小ルートパターンと該最小ルートパターンが試験により実行されたかを示す実行フラグとの対応を示すルートパス情報と、ロードモジュールの開始から終了までの間に存在するルートパターンのそれぞれについて、ルートパターンと該ルートパターンの試験実行の有無を示す実行フラグと該ルートパターンを構成する最小ルートパターンのうち試験が未実行の最小ルートパターンの数との対応を示すルートパターン情報を作成する情報作成部、
前記ルートパス情報及びルートパターン情報を保存する保存部、
所定のルートパターンの試験が実行されたとき、該ルートパターンに対応する前記実行フラグをオンすると共に、該ルートパターンを構成する最小ルートパターンに応じた前記実行フラグをオンし、かつ、前記保存されている各ルートパターンの未実行最小ルートパターンの数を更新する試験実行状況反映部、
試験が未実行のルートパターンのうち、未実行最小ルートパターンの数が最大のルートパターンを次に試験するためのルートパターンとして決定する試験ルートパターン決定部、
全最小ルートパターンの実行フラグがオンになったとき、試験ルート決定終了と判断する判断部、
を備えたことを特徴とするロードモジュールの試験ルート決定装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はロードモジュールの試験ルート決定装置に係り、特に、ロードモジュール（プログラム）の試験を実施する際、実行済試験ルートパスを蓄積すると同時に、未試験ルートパスを効率的に実行するロードモジュールの試験ルート決定装置に関する。
【０００２】
【従来の技術】
１つの大きな問題を解決するプログラムを作成するには、通常、問題解決プログラムの設計段階でいくつかの処理に分割し、例えば、入力処理関係、レコードの更新処理関係あるいは出力処理関係などのように所定の論理の集まりで分割し（モジュール化し）、分割により得られた各モジュールを一人あるいは何人かのプログラマがそれぞれ別々にプログラミングし、出来上がった各モジュールのプログラムを連係編集プログラムで結合して問題解決のプログラムとする。
このような分割共同作業によるプログラミング手法によれば、
(1) プログラム作成に要する時間を短縮できる、
(2) 各モジュール毎に分離テストを行った上で全体を結合すれば良いので、デバッキングが容易になり、しかも、正確なテストを行える、
(3) テストの都度、全プログラムを翻訳し直す必要がなく、不完全なモジュールだけを取り出して翻訳チェックするだけで良い、
などの利点がある。
【０００３】
図３８は上記プログラミングの説明図であり、ある問題をＡ〜Ｄの４つのモジュールに分割し、各モジュールをプログラマＡ〜Ｄが担当してプログラミングし（プログラムモジュール）、それらプログラムモジュールを結合して問題解決プログラムを作成する。
以上より、プログラムモジュールは、他のプログラム部分に影響を与えることなく修正や置換が可能なプログラム部分又は完全なプログラムである。かかるプログラムモジュールには、図３９に示すように(1) 原始モジュール（ソースモジュール）、(2) 目的モジュール（オブジェクトモジュール）、(3) ロードモジュールの３種類が存在する。原始モジュールは、言語翻訳プログラム（コンパイラ）への入力単位となるもので、プログラマが書いた一連のステートメントで構成されているもの、目的モジュールはコンパイラの出力結果である機械語のモジュール、ロードモジュールは連係編集プログラムによって作り出されるもので、１以上の目的モジュールを結合して、あるいは、目的モジュールとロードモジュールを結合して作成される。
【０００４】
【発明が解決しようとする課題】
プログラムの品質を保証するために、ロードモジュールの全ルートパスの試験が不可欠であり、全ルートパスを如何に早く網羅して実行するかが要求される。ここで、ルートパスとは、ロードモジュールを構成するソースモジュールをコンパイルした時に生成される最小分岐条件節である。
しかし、複数のソースモジュールから構成される大規模なロードモジュールの試験では、該ロードモジュールに多くの分岐命令、サブルーチン実行命令等が存在して試験ルートが複雑になる。このため、ルート試験に長時間を要し、しかも、特定のルートパスのみが複数回実行されたりする場合が生じる。
このため、全ルートパスを効率的に実行して試験するための情報を抽出して試験実行手段に提供する必要がある。しかし、従来、最短時間、最小試験項目でロードモジュールを試験する仕組みは存在しない。ただ、従来技術では、実行済試験ルートパスを蓄積し、全試験ルートパスに対する実行済試験ルートパスの網羅率（＝実行済試験ルートパス数／全試験ルートパス数）を測定し、この網羅率情報に基づいて試験担当者が未試験ルートパスを経験または、無作為に実行している。
【０００５】
従って、本発明の目的は、ロードモジュールの試験において、全試験ルートパスを効率的に実行できる試験ルート決定方法を提供することである。
本発明の別の目的は、サブルーチンを呼び出して実行する処理を含むロードモジュールの試験において、サブルーチンを含めて試験ルートパスを効率的に実行できる試験ルート決定方法を提供することである。
本発明の別の目的は、ロードモジュールの試験において、最小ルートパターン単位で試験が行われたか否かを管理することにより、より品質の良い試験を実施できる試験ルート決定方法を提供することである。
本発明の別の目的は、ロードモジュールの一部を修正した場合、修正部分を効果的に短時間で試験できる試験ルート決定方法を提供することである。
本発明の別の目的は、未実行ルートパスの実行のために、該ルートパスの手前で実行される既実行ルートパスの選択に偏りが出ないようにルートパスを自動的に選択し、分岐網羅率を高め、より品質の良い試験を実施できる試験ルート決定方法を提供することである。
【０００７】
【課題を解決するための手段】
本発明によれば、サブルーチンを呼び出して実行するルートパスを含むルートパターンについて、該ルートパスを除いた未実行ルートパス数及び該サブルーチンにおける未実行ルートパス数をそれぞれ管理し、これら未実行ルートパスの和をルートパターンの未実行ルートパス数として求め、未実行ルートパス数が最大のルートパターンを次に試験すべき試験ルートパターンとして決定する。このようにすれば、サブルーチンを呼び出して実行する処理を含むロードモジュールの試験において、サブルーチンを含めて試験ルートパスを効率的に実行することができる。
本発明によれば、(1) ロードモジュールを修正した場合、修正によって影響を受けないルートパスをまとめてブロック化し、該ブロック内の分岐条件をブロック入力条件とするルートブロックを定義し、(2) ルートパターンをルートパスと該ルートブロックを用いて特定し、(3) 未実行ルートパス及び未実行ルートブロックの数が最大の未実行ルートパターンを次に試験すべき試験ルートパターンとして決定し、(4) 未実行ルートパス、未実行ルートブロックが存在しなくなるまで試験ルートパターンを順次決定して試験を行う。このようにすれば、ロードモジュールの一部を修正した場合、修正部分と非修正部分の結合を考慮しながら、修正部分の試験を効果的に短時間でおこなうことができる。
【０００８】
本発明によれば、(1) 連続する２つのルートパスを最小ルートパターンと定義し、(2) 未実行ルートパターンの試験実行により該ルートパターンを実行済みとして全ルートパターンの試験実行状況を管理し、かつ、未実行ルートパターンの試験実行により該ルートパターンを特定するルートパスで定義される最小ルートパターンを実行済みとして全最小ルートパターンの実行状況を管理し、かつ、未実行ルートパターンにおける未実行の最小ルートパターン数を管理し、(3) 未実行の最小ルートパターン数が最大の未実行ルートパターンを次に実行すべき試験ルートパターンとして決定し、(4) 未実行の最小ルートパターンが存在しなくなるまで次の試験ルートパターンを決定して試験を行う。このようにすれば、前後の２つのルートパスを組にしてそれらの実行状況を管理できるため、品質の良い試験を実施することができる。
【００１０】
【発明の実施の形態】
（Ａ）第１実施例
図１は本発明の第１実施例のロードモジュール試験システムの構成図である。図中、１１ａ，１１ｂはソースモジュール、１２はコンパイラ及び連係編集プログラムを用いてソースモジュール１１ａ、１１ｂを翻訳及び連係編集して作成されたロードモジュール、１３は試験データや入力条件等を入力するデータ入力部、１４は試験実行トレース情報格納部で、▲１▼ソースモジュールをコンパイルした時に生成される全ての最小分岐条件節（全ルートパス）、▲２▼ロードモジュールの開始から終了までの間に存在する全ルートを特定する全ルートパターン、▲３▼試験ルートの実行により通過したルートパスなどを格納するものである。１５はロードモジュール試験装置で、ルートパターン情報作成部１５ａ、ルートパターン実行状況反映部１５ｂ、ルートパターン情報データベース１５ｃ、試験ルートパターン決定部１５ｄを有している。
【００１１】
ルートパターン情報作成部１５ａは、試験実行トレース情報格納部１４に格納されているデータを用いて図２に示すルートパス情報ＲＰＨやルートパターン情報ＲＰＴを作成してルートパターン情報データベース１５ｃに格納する。ルートパス情報ＲＰＨは、ロードモジュールの全ルートパスと実行フラグの対応を示すものである。初期時ルートパスはまだ試験により通過（実行）してないからその初期値はOFFである。図３はルートパスをエレメントとしたロードモジュールの処理フロー図であり、ａ〜ｊはルートパスで、図２のルートパス名欄にリストされている。ルートパターン情報ＲＰＴは、ロードモジュールに存在する開始から終了までの全ルートを特定するルートパターンと、その実行の有無を示す実行フラグと、ルートパターンに含まれる未実行ルートパスの数などの対応を示すものである。図３のロードモジュールには６個のルート（ルートパターン）
ａｂｄｅｆｈｊ
ａｂｄｅｇｈｊ
ａｂｄｉｊ
ａｃｄｅｆｈｊ
ａｃｄｅｇｈｊ
ａｃｄｉｊ
が存在し、これがが図２のルートパターン名欄にリストされている。
【００１２】
ルートパターン実行状況反映部１５ｂは、所定の試験ルートパターンの試験実行により、試験実行トレース情報格納部１４に格納されている実行ルートパターン名、通過ルートパス名を参照して、試験実行状況をルートパターン情報データベース１５ｃに反映するものである。例えば、ルートパターンａｂｄｅｆｈｊの試験実行により、ルートパス情報ＲＰＨ及びルートパターン情報ＲＰＴは図４に示すようになる。試験ルートパターン決定部１５ｄは、ルートパターン情報ＲＰＴのルートパターンを未実行ルートパス数の大きい順に並び変え、未実行ルートパス数が最大のルートパターンを次の試験ルートパターンとして決定する。例えば、図２の初期時にはルートパターン
ａｂｄｅｆｈｊ，ａｂｄｅｇｈｊ，ａｃｄｅｆｈｉ，ａｃｄｅｇｈｉ
のいずれかを次の試験ルートパターンとして決定する。又、図４の場合には、
ａｃｄｅｇｈｊ，ａｃｄｉｊ
のいずれかを次の試験ルートパターンとして決定する。
【００１３】
図５は第１実施例の試験ルート決定及び実行処理フローである。
ロードモジュールを構成する全ソースモジュールをコンパイルした時に生成される全ルートパス、ルートパスで特定される全ルートパターンを試験実行トレース情報格納部１４に格納する（ステップ１０１）。
ついで、ルートパターン情報作成部１５ａは、試験実行トレース情報格納部１４に格納されているデータを用いて図２に示すルートパス情報ＲＰＨやルートパターン情報ＲＰＴを作成してルートパターン情報データベース１５ｃに格納する（ステップ１０２）。
しかる後、試験ルートパターン決定部１５ｄは、ルートパターン情報ＲＰＴのルートパターンを未実行ルートパス数の大きい順に並び変え、未実行ルートパス数が最大のルートパターンを次の試験ルートパターンとして決定する（ステップ１０３）。
【００１４】
これにより、決定したルートパターンにそってロードモジュールが実行されるように各分岐条件を設定してロードモジュールを起動する。ロードモジュールはルートパターンにそって実行され、通過したルートパスが試験実行トレース情報格納部１４に格納される（ステップ１０４）。
ルートパターン実行状況反映部１５ｂは、試験実行トレース情報格納部１４に格納されている実行ルートパターン名、通過ルートパス名を参照して、試験実行状況をルートパターン情報データベース１５ｃに反映する。すなわち、ルートパターン実行状況反映部１５ｂは、図４に示すように、(1) 実行したルートパターンを実行済み（実行フラグON)にすると共に、(2) 実行ルートパターンを構成する各ルートパスを実行済み(実行フラグON)とし、かつ、(3) 実行したルートパターンの未実行ルートパス数を０にする(ステップ１０５)。
【００１５】
ついで、ルートパターン実行状況反映部１５ｂは、未実行ルートパターンを構成する未実行ルートパスの数を算出してルートパターン情報ＲＰＴの未実行ルートパス数を更新する（ステップ１０６）。
未実行ルートパス数が更新されれば、試験ルートパターン決定部１５ｄは、ルートパターン情報ＲＰＴのルートパターンを未実行ルートパス数の多い順に並び変え、未実行ルートパス数が最大のルートパターンを次の試験ルートパターンとして決定する（ステップ１０７）。
しかる後、試験実行部はルートパス情報ＲＰＨを参照して全ルートパスの実行フラグがONになったかチェックし(ステップ１０８）、すべてオンでなければステップ１０４以降の処理を繰り返し、オンであればロードモジュールの試験を終了する。
第１実施例によれば未実行ルートパス数が最大のルートパターンを次の試験ルートパターンとするから、実行済みルートパスの網羅率を高めることができ効率良く全ルートパスの試験を行うことが可能になる。
【００１６】
（Ｂ）第２実施例
第１実施例では未実行ルートパス数が最大のルートパターンを次の試験ルートパターンとし、未実行ルートパス数が最大のルートパターンが複数存在すれば、任意のルートパターンを次の試験ルートパターンとする。しかし、第２実施例では各ルートパターンにそった命令のステップ数を求め、該ステップ数が最小のルートパターンを次の試験ルートパターンとする。
図６は本発明の第２実施例のロードモジュール試験システムの構成図であり、図１の第１実施例と同一部分には同一符号を付している。図中、１１ａ，１１ｂはソースモジュール、１２はロードモジュール、１３は試験データや入力条件等を入力するデータ入力部、１４は試験実行トレース情報格納部で、▲１▼ソースモジュールをコンパイルした時に生成されるルートパス及びそのステップ数、▲２▼ロードモジュールの開始から終了までの間に存在する全ルートを特定するルートパターン、▲３▼所定のルートパターンにそったロードモジュールの試験実行により通過したルートパス、などを格納するものである。例えば、ロードモジュール１２の処理フロー（ルートパスをエレメントとした処理フロー）が図７に示すものとすれば、各ルートパスのルートパス名ａ〜ｍとそれぞれのステップ数が図８に示すように試験実行トレース情報格納部１４に格納される。
【００１７】
１５はロードモジュール試験装置で、ルートパターン情報作成部１５ａ、ルートパターン実行状況反映部１５ｂ、ルートパターン情報データベース１５ｃ、試験ルートパターン決定部１５ｄを有している。
ルートパターン情報作成部１５ａは、試験実行トレース情報格納部１４に格納されている情報を用いてルートパス情報ＲＰＨやルートパターン情報ＲＰＴを作成してルートパターン情報データベース１５ｃに格納する。ルートパス情報ＲＰＨは、第１実施例と同様にロードモジュールの全ルートパスと実行フラグの対応（図２参照）を示すものである。ルートパターン情報ＲＰＴは、図９（ａ）に示すように▲１▼ロードモジュールに存在する全ルートを特定するルートパターンと、▲２▼その実行の有無を示す実行フラグと、▲３▼ルートパターンを構成する未実行ルートパスの数と、▲４▼ルートパターンの実行ステップ数、などの対応を示すものである。ルートパターン実行ステップ数は、ルートパターンを構成するルートパスのステップ数の総和である。例えば、ルートパターンａｂｄｉｊｍｎ及びａｃｄｉｊｍｎのステップ数は
“ａｂｄｉｊｍｎ”＝500＋600＋700＋300＋600＋600＋200＝3500
“ａｃｄｉｊｍｎ”＝500＋300＋700＋300＋600＋600＋200＝3200
である。
【００１８】
ルートパターン実行状況反映部１５ｂは、所定の試験ルートパターンの試験実行により試験実行トレース情報格納部１４に格納される実行ルートパターン名、通過ルートパス名を参照して、試験実行状況をルートパターン情報データベース１５ｃに反映するものである。例えば、２つのルートパターンａｃｄｅｇｈｊｌｎ及びａｂｄｅｆｈｊｋｎ（図７（ａ）の点線参照）の試験実行により、ルートパターン情報ＲＰＴは図９（ａ）に示すようになる。又、図示しないがルートパス情報ＲＰＨにおけるルートパスａ,ｂ,ｃ,ｄ,ｅ,ｆ,ｇ,ｈ,ｊ,ｋ,ｌ,ｎの実行フラグがONになる。
試験ルートパターン決定部１５ｄは、図９（ｂ）に示すようにルートパターンを未実行ルートパス数の多い順に並び替えるルートパターン入れ替え部２１と、図９（ｃ）に示すように未実行ルートパス数が同数のルートパターンを実行ステップ数の少ない順に並び替える未実行ルートパターン入れ替え部２２を備え、未実行ルートパス数が最大で、かつ、実行ステップ数が最小のルートパターンａｃｄｉｊｍｎ（図７（ｂ）点線）を次の試験ルートパターンとして決定する。
【００１９】
図１０は第２実施例の試験ルート決定及び実行処理フローである。
ロードモジュールを構成する全ソースモジュールをコンパイルした時に生成される全ルートパス及び各ルートステップのステップ数、ルートパスで特定される全ルートパターンを試験実行トレース情報格納部１４に格納する（ステップ２０１）。
ついで、ルートパターン情報作成部１５ａは、試験実行トレース情報格納部１４に格納されている情報を用いてルートパス情報ＲＰＨやルートパターン情報（未実行ルートパス数、実行ステップ数を含む）ＲＰＴを作成してルートパターン情報データベース１５ｃに格納する（ステップ２０２）。
しかる後、試験ルートパターン決定部１５ｄは、ルートパターン情報データベース１５ｃに格納されているルートパターンを未実行ルートパス数の大きい順に並び変えると共に、未実行ルートパス数が同数のルートパターンは実行ステップ数が少ない順に並び替え、未実行ルートパス数が最大で、かつ、実行ステップ数が最小のルートパターンを次の試験ルートパターンとして決定する（ステップ２０３）。
【００２０】
これにより、決定したルートパターンにそってロードモジュールが実行されるように各分岐条件を設定してロードモジュールを起動する。ロードモジュールはルートパターンにそって実行され、通過したルートパスが試験実行トレース情報格納部１４に格納される（ステップ２０４）。
ルートパターン実行状況反映部１５ｂは、試験実行トレース情報格納部１４に格納されている実行ルートパターン名、通過ルートパス名を参照して、試験実行状況をルートパターン情報データベース１５ｃに反映する。すなわち、ルートパターン実行状況反映部１５ｂは、(1) 図９（ａ）に示すように実行したルートパターンを実行済み（実行フラグON)にすると共に、(2) 実行ルートパターンを特定する各ルートパスを実行済み(実行フラグON)とし、かつ、(3) 実行したルートパターンの未実行ルートパス数を０にする(ステップ２０５)。
【００２１】
ついで、ルートパターン実行状況反映部１５ｂは、未実行ルートパターンを構成する未実行ルートパス数を算出してルートパターン情報ＲＰＴの未実行ルートパス数を更新する。しかる後、試験ルートパターン決定部１５ｄはルートパターンを未実行ルートパス数の大きい順に並び変える（ステップ２０６）。
また、試験ルートパターン決定部１５ｄは未実行ルートパス数が同数のルートパターンを実行ステップ数が少ない順に並び替え（ステップ２０７）、未実行ルートパス数が最大で、かつ、実行ステップ数が最小のルートパターンを次の試験ルートパターンとして決定する（ステップ２０８）。
しかる後、試験実行部はルートパス情報ＲＰＨを参照して全ルートパスの実行フラグがONになったかチェックし(ステップ２０９）、すべてオンでなければステップ２０４以降の処理を繰り返し、オンであればロードモジュールの試験を終了する。
第２実施例によれば、未実行ルートパス数が最大で、かつ、実行ステップ数が最小のルートパターンを次の試験ルートパターンとするから、実行済みルートパスの網羅率を高めることができ、しかも、より効率良く全ルートパスの試験を行うことができる。
【００２２】
（Ｂ）第３実施例
サブルーチン（サブプログラム）を作成しておき、メインプログラムにおいて該サブルーチンを呼び出して実行し、サブルーチン実行後、メインプログラムに戻って処理を継続するプログラミング手法は一般的である。図１１はかかるメインプログラムとサブルーチンの関係説明図であり、ＭＰはメインプログラム（モジュールＡ）、ＳＵＢ Ａ，ＳＵＢ Ｂはサブルーチンである。メインプログラムの所定位置にはサブルーチン呼出し命令（ＣＡＬＬ＋サブルーチン名）が挿入され、サブルーチンＳＵＢ Ａ，ＳＵＢ Ｂが呼び出されて実行されるようになっている。各サブルーチンＳＵＢ Ａ，ＳＵＢ Ｂの先頭にはメインプログラムＭＰが使用していたレジスタ類の内容を保存する命令ＳＡＶＥが挿入され、末尾には保存してある元の状態を復元するためのＲＥＴＵＲＮ命令が挿入されている。プログラミングに際しては、メインプログラムＭＰ、各サブルーチンＳＵＢ Ａ，ＳＵＢ Ｂを別個に作成し（ソースモジュール）、各ソースモジュールをコンパイル、連係編集して実行可能なロードモジュールに組み立てる。なお、サブルーチンはＣ言語における関数と同等であり、従って、以下ではサブルーチンを関数と呼ぶことにする。又、メインプログラムを自関数、自関数内の関数を参照先関数という。
【００２３】
関数を呼出して実行する構成を備えたロードモジュールの試験ルートパターン決定に際して、自関数内の未実行ルートパス数だけを参照するのでは不十分であり、参照先関数内の未実行ルートパス数も考慮する必要がある。第３実施例は参照先関数内の未実行ルートパス数も考慮して次の試験ルートパターンを決定して試験する。
図１２は本発明の第３実施例のロードモジュール試験システムの構成図であり、図１の第１実施例と同一部分には同一符号を付している。図中、１１ａ〜１１ｃは関数名func-A, func-B, func-Cのソースモジュール(モジュールＡ〜モジュールＣ）、１２はコンパイラ及び連係編集プログラムを用いてソースモジュールＡ〜Ｃを翻訳及び連係編集して作成されたロードモジュールである。各ソースモジュールＡ〜Ｃは、図１３（ａ）〜（ｃ）に示す処理フローを有している。ソースモジュールＡ（関数func-A)において、A-a〜A-gはルートパスであり、ルートパスA-bは関数func Bを呼び出して実行するもの、ルートパスA-c, A-fはそれぞれ関数func Cを呼び出して実行するものである。ソースモジュールＢ（関数func-B)及びソースモジュールＣ（関数func-C)はソースモジュールＡにより参照されるモジュールであり、B-a〜B-d及びC-a〜C-cはルートパスである。
【００２４】
１３は試験データや入力条件等を入力するデータ入力部、１４は試験実行トレース情報格納部で、▲１▼ソースモジュールをコンパイルした時に生成されるルートパス、▲２▼ルートパスと関数の対応関係、▲３▼ロードモジュールの開始から終了までの間に存在する全ルートを特定するルートパターン、▲４▼ロードモジュールの試験実行により通過したルートパス、などを格納するものである。
１５はロードモジュール試験装置で、ルートパターン情報作成部１５ａ、ルートパターン実行状況反映部１５ｂ、ルートパターン情報データベース１５ｃ、試験ルートパターン決定部１５ｄを有している。
ルートパターン情報作成部１５ａは、試験実行トレース情報格納部１４に格納されている情報を用いてルートパス情報ＲＰＨやルートパターン情報ＲＰＴを作成してルートパターン情報データベース１５ｃに格納する。
【００２５】
ルートパス情報ＲＰＨは、図１４の上段に示すようにロードモジュールの全ルートパスA-a〜A-gと関数呼出しフラグと実行フラグの対応を示す。関数呼出しフラグは、ルートパスが関数を呼び出して実行するルートパスであるか否かを識別するもの、実行フラグはルートパスの未実行/実行を識別するものである。関数を呼び出して実行するルートパスA-b, A-c, A-fについては、実行フラグのオン/オフを記入する必要がなく、その実行／未実行はルートパターン情報ＲＰＴにおいて管理される。ルートパターン情報ＲＰＴは、図１４の下段に示すように、▲１▼ロードモジュールに存在する全ルートパターン、▲２▼自関数内の未実行ルートパス数、▲３▼参照先関数の関数名、▲４▼参照先関数の実行の有無を示す実行フラグ、▲５▼未実行参照先ルートパス数、▲６▼未実行ルートパスの総数など、の対応を示す。図１５は図１３のロードモジュールにおけるルートパターンの組み合わせを示すもので、カッコ内は参照先関数のルートパスを示す。
【００２６】
ルートパターン実行状況反映部１５ｂは、所定のルートパターンにそってロードモジュールの試験が行われた時、試験実行状況をルートパターン情報データベース１５ｃに反映する。すなわち、ルートパターン実行状況反映部１５ｂは、▲１▼ルートパス情報ＲＰＨにおける実行フラグ、▲２▼ルートパターン情報ＲＰＴにおける自関数の未実行ルートパス数、▲３▼参照先関数の実行フラグ、▲４▼未実行参照先ルートパス数、▲５▼自関数及び参照先関数における未実行ルートパスの総数、などを計算して更新する。たとえば、ルートパターン
A-a,A-b, (B-a,B-c,B-d),A-d,A-f, (C-a,C-c),A-g
に沿ってロードモジュールの試験を実行すると、各関数内の未実行ルートパスは図１６に示すようになる。この結果、ルートパターン実行状況反映部１５ｂは、ルートパス情報ＲＰＨ及びルートパターン情報ＲＰＴを図１７に示すように更新する。
【００２７】
試験ルートパターン決定部１５ｄは、ルートパターンを未実行ルートパスの総数の多い順に並び替え、該未実行ルートパス数が最大のルートパターンを次の試験ルートパターンとして決定する。例えば、図１７の場合、
A-a,A-b, (B-a,B-b,B-d),A-d,A-f, (C-a,C-b),A-g
の未実行ルートパス数(=5)が最大になり、次の試験ルートパターンとなる。
【００２８】
図１８は第３実施例の試験ルート決定及び実行処理フローである。
ロードモジュールを構成する全ソースモジュールをコンパイルした時に生成される全ルートパス、ルートパスで特定される全ルートパターン、ルートパスと参照関数の対応、参照関数のルートパターン、などを試験実行トレース情報格納部１４に格納する（ステップ３０１）。
ついで、ルートパターン情報作成部１５ａは、試験実行トレース情報格納部１４に格納されている情報を用いてルートパス情報ＲＰＨやルートパターン情報（図１４参照）ＲＰＴを作成してルートパターン情報データベース１５ｃに格納する（ステップ３０２）。
【００２９】
しかる後、試験ルートパターン決定部１５ｄは、ルートパターン情報ＲＰＴのルートパターンを未実行ルートパスの総数順に並び変え、未実行ルートパス数が最大のルートパターンを次の試験ルートパターンとして決定する（ステップ３０３）。
これにより、決定したルートパターンにそってロードモジュールが実行されるように各分岐条件を設定してロードモジュールを起動する。ロードモジュールはルートパターンにそって実行され、通過したルートパスが試験実行トレース情報格納部１４に格納される（ステップ３０４）。
ルートパターン実行状況反映部１５ｂは、試験実行トレース情報格納部１４に格納されている実行ルートパターン、通過ルートパスを参照して、試験実行状況をルートパターン情報データベース１５ｃに反映する。すなわち、ルートパターン実行状況反映部１５ｂは、(1) 実行ルートパターンを構成するルートパス(関数呼出しルートパスは除く)の実行フラグをonとし、かつ、参照先関数内のルートパスの実行フラグをonにする(ステップ３０５）。
【００３０】
ついで、ルートパターン実行状況反映部１５ｂは、未実行ルートパターンを構成する未実行ルートパスの数、参照先関数内の未実行ルートパスの数、これら未実行ルートパス数の和を計算し、ルートパターン情報ＲＰＴの内容を更新する（ステップ３０６）。
しかる後、試験ルートパターン決定部１５ｄは未実行ルートパスの合計値が大きい順にルートパターンを並び変え、該合計値が最大のルートパターンを次の試験ルートパターンとして決定する（ステップ３０７）。
しかる後、試験実行部はルートパス情報ＲＰＨ及びルートパターン情報ＲＰＴを参照して全ルートパスの実行フラグがONになったかチェックし(ステップ３０８）、すべてオンでなければステップ３０４以降の処理を繰り返し、オンであればロードモジュールの試験を終了する。
第３実施例によれば、サブルーチン（関数）を含めて試験ルートパスを効率的に実行することができる。
【００３１】
（ｄ）第４実施例
以上では、全ルートパスを効率良く実行するように試験ルートパターンを決定するものである。このため、前後の２つのルートパスが密接に関係する場合であっても、個々に試験してよければ問題なしとするものであった。例えば、図１９に示すようなルートにおいてａｂ，ｃｂ，ａｄ，ｃｄの４通の試験を行なう必要がある場合、第１〜第３実施例では例えばａｂ，ａｄのルート試験を行なうだけであった。第４実施例では前後の２つのルートパスを最小ルートパターンとし、全最小ルートパターンを効率良く実行するように試験ルートパターンを決定することにより、試験品質を向上する。
図２０は最小ルートパターンを説明するロードモジュールの処理フローであり、ａ〜ｊはルートパスである。最小ルートパターンは前後に隣接する２つのルートパスよりなるもので、図２０の場合、最小ルートパターンは
a-b,a-c,b-d,c-d,d-e,d-i,e-f,e-g,f-h,g-h,h-j,i-j
である。
【００３２】
図２１は本発明の第４実施例のロードモジュール試験システムの構成図である。図中、１１ａ，１１ｂはソースモジュール、１２はコンパイラ及び連係編集プログラムを用いてソースモジュール１１ａ、１１ｂを翻訳及び連係編集して作成されたロードモジュール、１３は試験データや分岐条件等を入力するデータ入力部、１４は試験実行トレース情報格納部で、▲１▼ソースモジュールをコンパイルした時に生成される全ルートパス、▲２▼前後のルートパスよりなる最小ルートパターン、▲３▼ロードモジュールの開始から終了までの間に存在する全ルートを特定するルートパターン、▲４▼試験ルートの実行により通過したルートパスなどを格納するものである。
１５はロードモジュール試験装置で、ルートパターン情報作成部１５ａ、ルートパターン実行状況反映部１５ｂ、ルートパターン情報データベース１５ｃ、試験ルートパターン決定部１５ｄに加えて、最小ルートパターン情報作成部１６ａ、最小ルートパターン実行状況反映部１６ｂ、最小ルートパターン実行済み情報反映部１７ａを有している。
【００３３】
ルートパターン情報作成部１５ａは、試験実行トレース情報格納部１４に格納されている情報を用いて図２２に示すルートパターン情報ＲＰＴを作成してルートパターン情報データベース１５ｃに格納する。ルートパターン情報ＲＰＴは、ロードモジュールに存在するルートパターンと、その実行の有無を示す実行フラグと、ルートパターンに含まれる未実行の最小ルートパターン数を示すものである。図２０のロードモジュールの場合、６個のルートパターン
ａｂｄｅｆｈｊ
ａｂｄｅｇｈｊ
ａｂｄｉｊ
ａｃｄｅｆｈｊ
ａｃｄｅｇｈｊ
ａｃｄｉｊ
が存在し、これが図２２のルートパターン名欄にリストされている。初期時、ルートパターンの試験は行われていないから全てのルートパターンの実行フラグは0ffになっている。
【００３４】
最小ルートパターン情報作成部１６ａは、試験実行トレース情報格納部１４に格納されている情報を用いて図２２に示す最小ルートパターン情報ＭＲＰＴを作成してルートパターン情報データベース１５ｃに格納する。この最小ルートパターン情報ＭＲＰＴは最小ルートパターンと実行フラグの対応を示すもので、実行フラグの初期値はOFFである。前述のように図２０の場合、最小ルートパターンは
a-b,a-c,b-d,c-d,d-e,d-i,e-f,e-g,f-h,g-h,h-j,i-j
である。
【００３５】
最小ルートパターン実行状況反映部１６ｂは、所定の試験ルートパターンの実行により試験実行状況を最小ルートパターン情報ＭＲＰＴに反映する。例えば、ルートパターンａｂｄｅｆｈｊ（図２０（ｂ）の点線参照）の試験実行により、最小ルートパターン実行状況反映部１６ｂは図２３に示すように最小ルートパターン情報ＭＲＰＴの最小ルートパターン
a-b,b-d,d-e,e-f,f-h,h-j
の実行フラグをONにする。
ルートパターン実行状況反映部１５ｂは、所定の試験ルートパターンの実行により試験実行状況をルートパターン情報ＲＰＴに反映する。すなわち、ルートパターン実行状況反映部１５ｂは、試験実行トレース情報格納部１４に格納されている実行ルートパターンを参照して図２３に示すようにルートパターン情報ＲＰＴにおける試験実行ルートパターンの実行フラグをONにする。又、最小ルートパターン実行済み情報反映部１７ａは、各ルートパターンに含まれる未実行の最小ルートパターン数を計算し、図２３に示すようにルートパターン情報ＲＰＴの未実行数を更新する。
【００３６】
試験ルートパターン決定部１５ｄは、ルートパターン情報ＲＰＴのルートパターンを未実行数（未実行最小ルートパターン数）の大きい順に並び変え（図２３参照）、未実行最小ルートパターン数が最大のルートパターンを次の試験ルートパターンとして決定する。例えば、図２２の初期時にはルートパターン
ａｂｄｅｆｈｊ，ａｂｄｅｇｈｊ，ａｃｄｅｆｈｊ，ａｃｄｅｇｈｊ
のいずれかを次の試験ルートパターンとして決定する。又、図２３の場合には、
ａｃｄｅｇｈｊ，ａｃｄｉｊ
のいずれかを次の試験ルートパターンとして決定する。
【００３７】
図２４は第４実施例の試験ルート決定及び実行処理フローである。
ロードモジュールを構成する全ソースモジュールをコンパイルした時に生成される全ルートパス、全最小ルートパターン、全ルートパターンを試験実行トレース情報格納部１４に格納する（ステップ４０１）。
ついで、ルートパターン情報作成部１５ａ及び最小ルートパターン情報作成部１５ｂは、試験実行トレース情報格納部１４に格納されているデータを用いて図２２に示すルートパターン情報ＲＰＴ及び最小ルートパターン情報ＭＲＰＴをそれぞれ作成してルートパターン情報データベース１５ｃに格納する（ステップ４０２）。
しかる後、試験ルートパターン決定部１５ｄは、ルートパターン情報ＲＰＴのルートパターンを未実行最小ルートパターン数の大きい順に並び変え、最大の未実行最小ルートパターン数を有するルートパターンを次の試験ルートパターンとして決定する（ステップ４０３）。
【００３８】
これにより、決定したルートパターンにそってロードモジュールが実行されるように各分岐条件を設定してロードモジュールを起動する。ロードモジュールはルートパターンにそって実行され、通過したルートパスが試験実行トレース情報格納部１４に格納される（ステップ４０４）。
最小ルートパターン実行状況反映部１６ｂ試験ルートパターンの実行により試験実行状況を最小ルートパターン情報ＭＲＰＴに反映する。すなわち、最小ルートパターン実行状況反映部１６ｂは、実行した最小ルートパターンのの実行フラグをONにする。また、ルートパターン実行状況反映部１５ｂは、試験実行トレース情報格納部１４に格納されている情報を参照して試験実行ルートパターンの実行フラグをONにする（ステップ４０５）。又、最小ルートパターン実行済み情報反映部１７ａは、各ルートパターンに含まれる未実行の最小ルートパターン数を計算して書き替える（ステップ４０６）。
【００３９】
未実行最小ルートパターン数が更新されれば、試験ルートパターン決定部１５ｄは、ルートパターン情報ＲＰＴのルートパターンを未実行最小ルートパターン数の多い順に並び変え、未実行最小ルートパターン数が最大のルートパターンを次の試験ルートパターンとして決定する（ステップ４０７）。
しかる後、試験実行部は最小ルートパターン情報ＭＲＰＴを参照して全最小ルートパターンの実行フラグがONになったかチェックし(ステップ４０８）、すべてオンでなければステップ４０４以降の処理を繰り返し、オンであればロードモジュールの試験を終了する。
第４実施例によれば前後の２つのルートパスを最小ルートパターンとし、全最小ルートパターンを効率良く実行するように試験ルートパターンを決定するから、試験時間を短縮でき、しかも、試験品質を向上することができる。
【００４０】
（ｅ）第５実施例
ロードモジュールを修正した場合、修正によって影響を受けない元のルートパス（非修正部分のルートパス）は厳密な試験を行う必要はなく、修正部分と非修正部分間が問題なく結合されていることを確認するだけでよい。たとえば、第２５（ａ）のような分岐ツリーを持つ試験済みソースモジュールの、ルートパスａ，ｂ，ｃ，ｄのみを修正した場合の試験を考える。ルートパスｅ，ｆ，ｇ，ｈ，ｉ，ｊは既に十分試験されており、ルートパスａ〜ｄに加えた修正がこれらのルートパスｅ〜ｊに影響する可能性は低い。かかる場合、ルートパス群ｅ〜ｊを論理的にブロック化し（点線参照）、その入力条件を設定する。図２５（ａ）では、２つの入力条件を設定し、第１入力条件によってルートブロックＢ１を作成し、第２入力条件によってルートブロックＢ２を作成している。
【００４１】
入力条件は、非修正部分に含まれる分岐条件を考慮して設定される。例えば、図２５（ａ）のロードモジュールにおいて、ルートパスｉへの分岐条件が１≦num＜１０、ルートパスｅへの分岐条件がnum＜１，１０≦num、ルートパスｆへの分岐条件がnum＜１、ルートパスｇへの分岐条件が１０≦numであるとすれば、第１、第２入力条件はそれぞれ
(1) num＜１，１０≦num
(2) １≦num＜１０
となる。これらルートブロックＢ１，Ｂ２を図２５（ａ）に当てはめると、同図（ｂ）に示すようにルートパスａ〜ｄとルートブロックＢ１，Ｂ２で構成された新たな論理的分岐ツリーが得られる。図２５（ｂ）のルートブロックＢ１，Ｂ２をルートパスとみなして第１実施例を適用すれば、修正されたルートパスのみを厳密に試験でき、しかも、修正部分と非修正部分の結合試験を行える。
図２６は新旧ルートパターン情報及びルートブロック情報の説明図、図２７は新旧ルートパス情報の説明図である。
【００４２】
旧ルートパターン情報ＲＰＴ及び旧ルートパス情報ＲＰＨは共に第１実施例のルートパターン情報ＲＰＴ、ルートパス情報ＲＰＨと同一の構成を備えている。すなわち、旧ルートパターン情報ＲＰＴは図２６（ａ）に示すように全ルートパターンについて、▲１▼ルートパターン名、▲２▼実行フラグ、▲３▼未実行ルートパス数を示すようになっている。又、旧ルートパス情報ＲＰＨは、図２７（ａ）に示すように全ルートパスについて、▲１▼ルートパス名、▲２▼実行フラグを示すようになっている。
ルートブロック情報ＲＢＬは図２６（ｂ）に示すように、作成された全ルートブロックＢ１，Ｂ２（図２５（ｂ）参照）について、▲１▼ルートブロック名、▲２▼該ルートブロックに包含されるルートパス、▲３▼ルートブロックへの入力条件を示すようになっている。
【００４３】
新ルートパターン情報ＮＲＰＴは図２６（ｃ）に示すように、図２５（ｂ）のロードモジュールに含まれる全ルートパターンについて、▲１▼ルートパターン名、▲２▼実行フラグ、▲３▼未実行ルートパス数を示すようになっている。又、新ルートパス情報ＮＲＰＨは図２７（ｂ）に示すように、図２５（ｂ）のロードモジュールに含まれる全ルートパスについて、▲１▼ルートパス名、▲２▼実行フラグを示すようになっている。
旧ルートパターン情報ＲＰＴには６つのルートパターンが含まれているが、新ルートパターン情報ＮＲＰＴには４つのルートパターンが含まれるだけである。この結果、ルートパターン数を削減でき、また、それらの未実行ルートパス数も減少できる。これにより、効率的に試験すべきルートパスを重点的に試験するようにルートパターンを抽出できる。
【００４４】
図２８は本発明の第５実施例のロードモジュール試験システムの構成図である。図中、１１ａ，１１ｂはソースモジュール、１２はコンパイラ及び連係編集プログラムを用いてソースモジュール１１ａ、１１ｂを翻訳及び連係編集して作成されたロードモジュール、１３は入力条件を入力するデータ入力部、１４は試験実行トレース情報格納部で、▲１▼ソースモジュールをコンパイルした時に生成される全ルートパス、▲２▼ロードモジュールの開始から終了までの間に存在する全ルートパターン、▲３▼試験ルートの実行により通過したルートパス、ルートブロックなどを格納するものである。１５はロードモジュール試験装置で、ルートパターン情報作成部１５ａ、実行状況反映部１５ｂ′、データベース１５ｃ、試験ルートパターン決定部１５ｄ、ルートブロック情報作成部１８、ルートパターン情報変換部１９を有している。
【００４５】
ルートパターン情報作成部１５ａは、試験実行トレース情報格納部１４に格納されている情報を用いて図２７（ａ）、図２６（ａ）に示す旧ルートパス情報ＲＰＨや旧ルートパターン情報ＲＰＴを作成してデータベース１５ｃに格納する。
ルートブロック情報作成部１８は、試験実行トレース情報格納部１４に格納されている情報及び設定された入力条件を用いて図２６（ｂ）に示すルートブロック情報ＲＢＬを作成してデータベース１５ｃに格納する。
ルートパターン情報変換部１９は、ルートブロック情報ＲＢＬを用いて旧ルートパス情報ＲＰＨ及び旧ルートパターン情報ＲＰＴをそれぞれ図２７（ｂ）、図２６（ｃ）に示す新ルートパス情報ＮＲＰＨ及び新ルートパターン情報ＮＲＰＴに変換する。
【００４６】
実行状況反映部１５ｂ′は、試験ルートパターンの実行により、試験実行トレース情報格納部１４に格納されている情報（実行ルートパターン、通過ルートパス、通過ルートブロック名）を参照して、新ルートパターン情報ＮＲＰＴ及び新ルートパス情報ＮＲＰＨに反映するものである。例えば、ルートパターンａｂｄＢ１の試験実行により、新ルートパス情報ＮＲＰＨ及び新ルートパターン情報ＮＲＰＴは図２９に示すようになる。
試験ルートパターン決定部１５ｄは、新ルートパターン情報ＮＲＰＴにおけるルートパターンを未実行ルートパス数の大きい順に並び変え、最大の未実行ルートパス数のルートパターンを次の試験ルートパターンとして決定する。例えば、図２９の場合、ルートパターンａｃｄＢ２を次の試験ルートパターンとして決定する。
【００４７】
図３０は第５実施例の試験ルートパターン決定及び実行処理フローである。
ロードモジュールを構成するソースモジュールをコンパイルした時に生成される全ルートパス、全ルートパターンを試験実行トレース情報格納部１４に格納する（ステップ５０１）。又、ブロックＢ１，Ｂ２の入力条件を入力する（ステップ５０２）。
ルートパターン情報作成部１５ａは、試験実行トレース情報格納部１４に格納されている情報を用いて旧ルートパス情報ＲＰＨや旧ルートパターン情報ＲＰＴを作成してデータベース１５ｃに格納する（ステップ５０３）。又、ルートブロック情報作成部１８は、試験実行トレース情報格納部１４に格納されている情報及び設定された入力条件を用いてルートブロック情報ＲＢＬを作成してデータベース１５ｃに格納する（ステップ５０４）。
【００４８】
ルートパターン情報変換部１９はルートブロック情報ＲＢＬを用いて旧ルートパス情報ＲＰＨ、旧ルートパターン情報ＲＰＴをそれぞれ新ルートパス情報ＮＲＰＨ（図２７（ｂ））、新ルートパターン情報ＮＲＰＴ（図２６（ｃ））に変換する（ステップ５０５）。
しかる後、試験ルートパターン決定部１５ｄは、新ルートパターン情報ＮＲＰＴのルートパターンを未実行ルートパス数の大きい順に並び替え、未実行ルートパス数が最大のルートパターンを次の試験ルートパターンとして決定する（ステップ５０６）。これにより、決定したルートパターンにそってロードモジュールが実行されるように各分岐条件を設定してロードモジュールを起動する。ロードモジュールはルートパターンにそって実行され、通過したルートパスが試験実行トレース情報格納部１４に格納される（ステップ５０７）。
【００４９】
実行状況反映部１５ｂ′は、試験実行トレース情報格納部１４に格納されている実行ルートパターン、通過ルートパス（通過ルートブロックを含む）を参照して、試験実行状況をデータベース１５ｃに反映する。すなわち、実行状況反映部１５ｂ′は、(1) 実行したルートパターンを実行済み（実行フラグON)にすると共に、(2) 実行ルートパターンを構成する各ルートパスを実行済み(実行フラグ ON)とし、かつ、(3) 実行したルートパターンの未実行ルートパス数を０にする(ステップ５０８)。ついで、実行状況反映部１５ｂ′は、未実行ルートパターンに含まれる未実行ルートパス数（未実行ルートパス及び未実行ルートブロックの数）を算出して新ルートパターン情報ＮＲＰＴの未実行ルートパス数を更新する（ステップ５０９）。
【００５０】
未実行ルートパス数が更新されれば、試験ルートパターン決定部１５ｄは、新ルートパターン情報ＮＲＰＴのルートパターンを未実行ルートパス数の多い順に並び変え、最大の未実行ルートパス数を有するルートパターンを次の試験ルートパターンとして決定する（ステップ５１０）。
しかる後、試験実行部は新ルートパス情報ＮＲＰＨを参照して全ルートパス（ルートブロックを含む）の実行フラグがONになったかチェックし(ステップ５１１）、すべてオンでなければステップ５０７以降の処理を繰り返し、オンであればロードモジュールの試験を終了する。
第５実施例によれば、試験済みのロードモジュールを一部修正した場合、修正したルートパスのみを厳密に試験でき、しかも、修正部分と非修正部分の結合試験を行うことができる。
【００５１】
（ｆ）第６実施例
全ルートパスを実行するように試験ルートパターンを選択すると、いくつかのルートパスは何回も実行され、各ルートパスの実行回数に偏りが出てしまう。未実行ルートパスの実行のために、該ルートパスの前後で実行される既実行ルートパスの選択に偏りが出ないようにルートパターンを選択できれば、分岐網羅率を高め、より品質の良い試験を実施することができる。
そこで、第６実施例では、(1) それまでの試験ルート決定に際して、各分岐点で選択した分岐ルートパスの選択回数を管理し、(2) 次の試験ルート選択に際して、各分岐点で選択回数が最小の分岐ルートパスを選択することにより次の試験ルートを決定し、(3)未選択の分岐ルートパスが存在しなくなるまで試験ルートを決定して試験を行う。
【００５２】
図３１は本発明の第６実施例のロードモジュール試験システムの構成図である。図中、１１ａ，１１ｂはソースモジュール、１２はコンパイラ及び連係編集プログラムを用いてソースモジュール１１ａ、１１ｂを翻訳及び連係編集して作成されたロードモジュール、１３は試験データや入力条件等を入力するデータ入力部、１４は試験実行トレース情報格納部で、▲１▼ソースモジュールをコンパイルした時に生成される全ルートパス、▲２▼分岐点の番号(分岐処理群名)と該分岐点における分岐ルートパス、▲３▼試験ルートの実行により通過したルートパスなどを格納するものである。１５はロードモジュール試験装置で、ルートパターン情報作成部１５ａ、ルートパターン実行状況反映部１５ｂ、ルートパターン情報データベース１５ｃ、試験ルートパターン決定部１５ｄを有している。
ルートパターン情報作成部１５ａは、試験実行トレース情報格納部１４に格納されている情報を用いてルートパターン情報ＢＲＰＴを作成してルートパターン情報データベース１５ｃに格納する。ルートパターン情報ＢＲＰＴは、▲１▼実行回数、▲２▼分岐処理群名、▲３▼各分岐ルートパスの実行回数を示す分岐ルート実行状況などを含んでいる。ルートパターン実行状況反映部１５ｂは試験実行状況を反映したルートパターン情報ＢＲＰＴを作成するもので、試験実行ルートを構成する分岐ルートパスの実行回数を歩進する。試験ルートパターン決定部１５ｄは、各分岐点において選択回数が最小の分岐ルートパスを選択することにより次の試験ルートを決定する。
【００５３】
図３２はＣ言語によるソースモジュールにおけるステップ番号、処理内容、分岐処理群名、ルートパス、分岐ルートパス名の対応を示すものである。ソースモジュールの分岐命令単位に対応して分岐処理群（Ａ１，Ｂ１，Ｂ２，Ｃ１）が明示され、かつ、各分岐処理群を構成する分岐ルートパスが明示されている。ステップ２〜５は分岐処理群Ａ１、ステップ７〜１７は分岐処理群Ｂ１、ステップ９〜１２は分岐処理群Ｂ２、ステップ１９〜２５は分岐処理群Ｃ１を構成する。分岐処理群Ａ１，Ｂ１，Ｃ１にはそれぞれ分岐ルートパスA1-1,A1-2；B1-1,B1-2；C1-1,C1-2,C1-3,C1-4,C1-5があり、更に、分岐ルートパスB1-1内には分岐ルートパスB2-1,B2-2がある。
このソースプログラムの処理フロー図をルートパスを用いて作成すると、図３３に示すようになる。ルートパスａ，ｄ，ｊ，ｐはどのようなルートパターンでも必ず通過するルートパスであり、また、ｄからｅへ分岐した場合、ルートパスｈは、ｆ，ｇいずれに分岐しても必ず通過するルートパスである。
実際にはルートパスを組み合わせてルートパターンを設定するが、分岐網羅のためにはルートパスより分岐ルートパスを用いてルートパターンを選択する方が簡便である。そこで、第６実施例では分岐ルートパスによりルートパターンを選択する。図３４はルートパスによる処理フロー（図３３）を分岐ルートパスで置き換えた場合の処理フロー図である。
【００５４】
ロードモジュールＬＭを実行すると、ルートパターン実行状況反映部１５ｂは該ロードモジュールの各分岐処理群における分岐ルートパスの実行回数をカウントし、ルートパターン情報ＢＲＰＴに反映する。ルートパターン情報ＢＲＰＴにおいて、分岐処理群名及び各ルートパスの通過回数（実行回数）を示す情報は以下の形式
0004190610.tif 000002
を有している。なお、直前の試験で実行された分岐ルートパスの実行回数の末尾に“＋”を付加する。図３２の分岐処理群Ａ１〜Ｃ１に上記形式を適用すると、ルートパターン情報ＢＲＴＰは以下の形式
0004190610.tif 000003
で各分岐処理群の分岐ルートパスの実行回数を管理する。
【００５５】
ルートパターン決定部１５ｄは各分岐点で実行回数が最小の分岐ルートパスを選択して次回の試験ルートを決定するが、その詳細は以下の通りである。すなわち、ルートパターン決定部１５ｄは、以下のルールにより各分岐処理群の中から所定の分岐ルートパスを選択して次回の試験ルートを決定する。
1) 各分岐処理群において、実行回数が最小の分岐ルートパスを選択する。着目している分岐処理群において複数の分岐ルートパスの実行回数が同数ならば次の優先順位へすすむ。
2) 着目している分岐処理群より直前に他の分岐処理群があるかチェックする。直前に他の分岐処理群が存在すれば、該直前の分岐処理群における次回の分岐ルートパスが前回の分岐ルートパスと異なるかチェックする(ただし、初期状態は除く)。異なる場合には着目分岐処理群の分岐ルートパスを前回の分岐ルートパスと同じにする。
一方、直前に他の分岐処理群が存在しなければ、あるいは、直前の分岐処理群における次回の分岐ルートパスが前回の分岐ルートパスと同じであれば(初期状態を含む)は次の優先順位へすすむ。
3) 実行回数の末尾に“＋"がついていないものの中から最も若い番号の分岐ルートパスを選択する。
以上の処理により、試験ルートを決定して試験を行い、全分岐ルートパスが実行されれば、ロードモジュールの試験が終了する。
【００５６】
図３５は以上のルールに従って分岐ルートパスを決定した結果である。図中、実行回数欄５１はロードモジュールを所定の試験パターンに従って先頭から最後尾までを実行した回数であり、分岐ルート実行状況欄５２は各分岐処理群における分岐ルートパスの実行回数を示すものであり、分岐処理群Ａ１においてはA1-1及びA1-2の実行回数を示している（カッコ内数字）。また、数字の末尾に“＋”表示されている分岐ルートパスは、前回に選択・実行されたことを示している。分岐ルートパス欄５３は、次回の試験において各分岐点で選択される分岐ルートパスを示すもので、次回の試験ルートパターンを特定する。
【００５７】
図３６〜図３７は実行ルートパターン説明図であり、図３５における実行回数ｉの実行ルートパターンがそれぞれ太線で示されている。図３５に示すように、分岐ルートパスを決定して試験すると３回目の実行までに分岐ルートパスA1-1, A1-2, B1-1, B1-2, B2-1, B2-2, C21-1〜C1-3はすべて網羅される。このため、残りの分岐ルートパスC1-4, C1-5のルートパス試験を行う際にこれら実行済みの分岐ルートパスは再実行されることになる。かかる場合、第６実施例では分岐ルートパスの組み合わせにバリエーションを持たせることが可能になり、分岐網羅率を向上させ、品質の高い試験結果を得ることができる。
以上、本発明を実施例により説明したが、本発明は請求の範囲に記載した本発明の主旨に従い種々の変形が可能であり、本発明はこれらを排除するものではない。
【００５８】
【発明の効果】
以上本発明によれば、(1) 未実行ルートパターンの試験実行により該ルートパターンを実行済みにして全ルートパターンの試験実行状況を管理し、かつ、未実行ルートパターンの試験実行により該ルートパターンを構成するルートパスを実行済みとして全ルートパスの実行状況を管理し、かつ、未実行ルートパターンを構成する未実行ルートパス数を管理し、(2) 未実行ルートパス数が最大の未実行ルートパターンを次に試験実行すべき試験ルートパターンとして決定して該ルートパターンの試験を実行し、(3) 未実行ルートパスが存在しなくなるまで試験ルートパターンを順次決定して試験を行うようにしたから、未実行ルートパス数が多いルート順に試験を行うため効率良く全ルートパスの試験を行える。
又、本発明によれば、未実行ルートパス数が最大の未実行ルートパターンが複数存在する場合、実行ステップ数が少ない未実行ルートパターンを次に実行すべき試験ルートパターンとして決定するようにしたから、より効率良く全ルートパスの試験を行うことができる。
【００５９】
又、本発明によれば、サブルーチンを呼び出して実行するルートパスを含むルートパターンにおいて、該ルートパスを除いた未実行ルートパス数及び該サブルーチンにおける未実行ルートパス数をそれぞれ管理し、これら未実行パスの和をルートパターンの未実行ルートパス数として求め、未実行ルートパス数が最大のルートパターンを次に実行すべき試験ルートパターンとして決定したから、サブルーチンを呼び出して実行する処理を含むロードモジュールの試験を効率的に実行することができる。
【００６０】
又、本発明によれば、(1) ロードモジュールを修正した場合、修正によって影響を受けないルートパスをまとめてブロック化し、該ブロック内の分岐条件をブロック入力条件としてルートブロックを定義し、(2) ルートパターンをルートパスと該ルートブロックを用いて特定し、(3) 未実行ルートパス及び未実行ルートブロックの数が最大の未実行ルートパターンを次に試験実行すべき試験ルートパターンとして決定し、(4) 未実行ルートパス、未実行ルートブロックが存在しなくなるまで試験ルートパターンを順次決定して試験を行うようにしたから、、ロードモジュールの一部を修正した場合、修正部分と非修正部分の結合を考慮しながら、修正部分の試験を効果的に短時間でおこなうことができる。
【００６１】
又、本発明によれば、(1) 連続する２つのルートパスを最小ルートパターンと定義し、(2) 未実行ルートパターンの試験実行により該ルートパターンを実行済みとして全ルートパターンの試験実行状況を管理し、かつ、未実行ルートパターンの試験実行により該ルートパターンを構成するルートパスで定義される最小ルートパターンを実行済みとして全最小ルートパターンの実行状況を管理し、かつ、未実行ルートパターンにおける未実行の最小ルートパターン数を管理し、(3) 未実行の最小ルートパターン数が最大の未実行ルートパターンを次に実行すべき試験ルートパターンとして決定し、(4) 未実行の最小ルートパターンが存在しなくなるまで次の試験ルートパターンを決定して試験を行うようにしたから、前後の２つのルートパスを組にしてそれらの実行状況を管理できるため、品質の良い試験を実施することができる。
【００６２】
又、本発明によれば、(1) 試験ルートを特定するために各分岐において選択された分岐ルートパスの選択回数を管理し、(2) 各分岐において選択回数が最小の分岐ルートパスを選択することにより次の試験ルートを決定し、(3) 未選択の分岐ルートパスが存在しなくなるまで試験ルートを決定して試験を行うようにしたから、未実行ルートパスの実行のために、該ルートパスの手前で実行される既実行ルートパスの選択に偏りが出ないようにルートパスを自動的に選択し、分岐網羅率を高め、より品質の良い試験を実施できる。
【図面の簡単な説明】
【図１】第１実施例のロードモジュール試験システムの構成図である。
【図２】ルートパターン情報データベースの記憶内容説明図である。
【図３】ロードモジュールの処理フローである。
【図４】所定ルートパターン試験後のデータベースの様子説明図である。
【図５】本発明の第１実施例の試験パターン決定、実行の処理フローである。
【図６】第２実施例のロードモジュール試験システムの構成図である。
【図７】ロードモジュールの処理フローである。
【図８】試験実行トレース情報説明図である。
【図９】ルートパターン情報説明図である。
【図１０】本発明の第２実施例の試験パターン決定、実行の処理フローである。
【図１１】メインプログラムとサブルーチンの関係説明図である。
【図１２】第３実施例のロードモジュール試験システムの構成図である。
【図１３】ロードモジュールを構成するソースモジュール（関数）の組み合わせ例である。
【図１４】ルートパス／ルートパターン情報説明図である。
【図１５】ルートパターン組み合わせ説明図である。
【図１６】各関数内の未実行ルートパス説明図である。
【図１７】試験実行後のルートパス／ルートパターン情報説明図である。
【図１８】本発明の第３実施例の試験パターン決定、実行の処理フローである。
【図１９】最小ルートパターンの必要性説明図である。
【図２０】最小ルートパターン説明図である。
【図２１】第４実施例のロードモジュール試験システムの構成図である。
【図２２】ルートパターン情報及び最小ルートパターン情報説明図である。
【図２３】試験実行後のルートパターン情報及び最小ルートパターン情報説明図である。
【図２４】本発明の第４実施例の試験パターン決定、実行の処理フローである。
【図２５】第５実施例の説明図である。
【図２６】新旧ルートパターン情報及びルートブロック情報説明図である。
【図２７】新旧ルートパス情報説明図である。
【図２８】第５実施例のロードモジュール試験システムの構成図である。
【図２９】所定のルートパターン試験実行後の新ルートパス情報及び新ルートパターン情報説明図である。
【図３０】本発明の第５実施例の試験パターン決定、実行の処理フローである。
【図３１】第６実施例のロードモジュール試験システムの構成図である。
【図３２】ソースモジュールにおける処理内容と分岐処理群、ルートパス、分岐ルートパス等の対応説明図である。
【図３３】ルートパスを用いた処理フローである。
【図３４】分岐ルートパスを用いた処理フローである。
【図３５】第６実施例のルートパターン選択の処理結果説明図である。
【図３６】第６実施例における実行ルートパターン説明図（その１）である。
【図３７】第６実施例における実行ルートパターン説明図（その２）である。
【図３８】モジュール化によるプログラミング説明図である。
【図３９】ロードモジュール作成説明図である。
【符号の説明】
１１ａ，１１ｂ・・ソースモジュール
１２・・ロードモジュール
１３・・データ入力部
１４・・試験実行トレース情報格納部
１５・・ロードモジュール試験装置
１５ａ・・ルートパターン情報作成部
１５ｂ・・ルートパターン実行状況反映部
１５ｃ・・ルートパターン情報データベース
１５ｄ・・試験ルートパターン決定部
ＲＰＴ・・ルートパターン情報
ＲＰＨ・・ルートパス情報
【図１】
0004190610.tif 000004
【図２】
0004190610.tif 000005
【図３】
0004190610.tif 000006
【図４】
0004190610.tif 000007
【図５】
0004190610.tif 000008
【図６】
0004190610.tif 000009
【図７】
0004190610.tif 000010
【図８】
0004190610.tif 000011
【図９】
0004190610.tif 000012
【図１０】
0004190610.tif 000013
【図１１】
0004190610.tif 000014
【図１２】
0004190610.tif 000015
【図１３】
0004190610.tif 000016
【図１４】
0004190610.tif 000017
【図１５】
0004190610.tif 000018
【図１６】
0004190610.tif 000019
【図１７】
0004190610.tif 000020
【図１８】
0004190610.tif 000021
【図１９】
0004190610.tif 000022
【図２０】
0004190610.tif 000023
【図２１】
0004190610.tif 000024
【図２２】
0004190610.tif 000025
【図２３】
0004190610.tif 000026
【図２４】
0004190610.tif 000027
【図２５】
0004190610.tif 000028
【図２６】
0004190610.tif 000029
【図２７】
0004190610.tif 000030
【図２８】
0004190610.tif 000031
【図２９】
0004190610.tif 000032
【図３０】
0004190610.tif 000033
【図３１】
0004190610.tif 000034
【図３２】
0004190610.tif 000035
【図３３】
0004190610.tif 000036
【図３４】
0004190610.tif 000037
【図３５】
0004190610.tif 000038
【図３６】
0004190610.tif 000039
【図３７】
0004190610.tif 000040
【図３８】
0004190610.tif 000041
【図３９】
0004190610.tif 000042