(57)【要約】  【課題】  プログラムのテスト方法において、テスト対象プログラムに含まれる頻出経路の繰り返しの計測を抑止し、無用なオーバーヘッドを回避する。  【解決手段】  情報処理装置１のカバレジ計測制御プログラム１６は、計測対象プログラム１２の実行によって通過した各命令あるいは少なくとも分岐命令の通過回数がその測定上限回数に達したか否か判定する。カバレジ計測プログラム１５は、その命令が測定回数に達していない場合に呼び出され、その命令の通過回数を更新する。【選択図】  図１
2005339204.tif 000002
【特許請求の範囲】
【請求項１】
テストされる対象プログラムに含まれる分岐命令について前記分岐命令の実行により各条件判定種別を通過したか否かをテストする方法において、
前記分岐命令の直前に前記対象プログラムに割り込んで前記条件判定種別を示す条件判定結果を取得するステップと、
前記分岐命令の前記条件判定種別ごとに通過したか否かを記録する計測記録テーブルを参照して前記条件判定結果に該当する条件判定種別をすでに通過したか否かを判定するステップと、
前記条件判定結果に該当する条件判定種別を通過していない場合には前記計測記録テーブルの該当する条件判定種別に対応して通過を記録し、すでに通過した場合には該当する条件判定種別についての記録を抑止するよう制御するステップとを有することを特徴とするプログラムのテスト方法。
【請求項２】
テストされる対象プログラムの実行により前記対象プログラムに含まれる各命令の通過回数を計測するプログラムのテスト方法において、
各々の前記命令の実行をトレースするステップと、
前記命令ごとに記憶装置に設定される測定上限回数を参照して実行がトレースされた前記命令の実際の通過回数が最初に設定された前記測定上限回数に達しているか否かを判定するステップと、
実行がトレースされた前記命令の前記通過回数が最初に設定された前記測定上限回数に達していない場合には、当該命令に対応する実際の前記通過回数を１増加させるための回数の更新を行い、前記通過回数が最初に設定された前記測定上限回数に達した場合には前記通過回数の更新を抑止するよう制御するステップとを有することを特徴とするプログラムのテスト方法。
【請求項３】
テストされる対象プログラムの実行により前記対象プログラムに含まれる分岐命令の各条件判定種別ごとの通過回数を計測するプログラムのテスト方法において、
前記分岐命令の直前に前記対象プログラムに割り込んで前記条件判定種別を示す条件判定結果を取得するステップと、
前記分岐命令の前記条件判定種別ごとに記憶装置に設定される測定上限回数を参照して前記条件判定結果に該当する条件判定種別の実際の通過回数が最初に設定された前記測定上限回数に達しているか否かを判定するステップと、
前記条件判定結果に該当する条件判定種別の前記通過回数が最初に設定された前記測定上限回数に達していない場合には、当該条件判定種別に対応する実際の前記通過回数を１増加させるための回数の更新を行い、前記通過回数が最初に設定された前記測定上限回数に達した場合には、前記通過回数の更新を抑止するよう制御するステップとを有することを特徴とするプログラムのテスト方法。
【請求項４】
前記条件判定結果を取得するステップは、前記条件判定結果とともに前記分岐命令の戻りアドレスを取得し、前記戻りアドレスが前記分岐命令のロケーションであることを確認するステップを有することを特徴とする請求項３のプログラムのテスト方法。
【請求項５】
テストされる対象プログラムに含まれる分岐命令について前記分岐命令の実行により各条件判定種別を通過したか否かをテストするためのプログラムであって、情報処理装置に、
前記分岐命令の直前に前記対象プログラムに割り込んで前記条件判定種別を示す条件判定結果を取得する機能、
前記分岐命令の前記条件判定種別ごとに通過したか否かを記録する計測記録テーブルを参照して前記条件判定結果に該当する条件判定種別をすでに通過したか否かを判定する機能、および
前記条件判定結果に該当する条件判定種別を通過していない場合には前記計測記録テーブルの該当する条件判定種別に対応して通過を記録し、すでに通過した場合には該当する条件判定種別についての記録を抑止するよう制御する機能を実現させるためのプログラム。
【請求項６】
テストされる対象プログラムの実行により前記対象プログラムに含まれる分岐命令の各条件判定種別ごとの通過回数を計測するプログラムテストのためのプログラムであって、情報処理装置に、
前記分岐命令の直前に前記対象プログラムに割り込んで前記条件判定種別を示す条件判定結果を取得する機能、
前記分岐命令の前記条件判定種別ごとに記憶装置に設定される測定上限回数を参照して前記条件判定結果に該当する条件判定種別の実際の通過回数が最初に設定された前記測定上限回数に達しているか否かを判定する機能、および
前記条件判定結果に該当する条件判定種別の前記通過回数が最初に設定された前記測定上限回数に達していない場合には、当該条件判定種別に対応する実際の前記通過回数を１増加させるための回数の更新を行い、前記通過回数が最初に設定された前記測定上限回数に達した場合には、前記通過回数の更新を抑止するよう制御する機能を実現させるためのプログラム。
【請求項７】
前記条件判定結果を取得する機能は、前記条件判定結果とともに前記分岐命令の戻りアドレスを取得し、前記戻りアドレスが前記分岐命令のロケーションであることを確認する機能を含むことを特徴とする請求項６のプログラム。
【請求項８】
ＣＰＵとメモリを備え、テストされる対象プログラムの実行により前記対象プログラムに含まれる分岐命令の各条件判定種別ごとの通過回数を計測する情報処理装置において、前記情報処理装置は、
前記分岐命令の直前に前記対象プログラムに割り込んで前記条件判定種別を示す条件判定結果を取得し、前記分岐命令の前記条件判定種別ごとに記憶装置に設定される測定上限回数を参照して前記条件判定結果に該当する条件判定種別の実際の通過回数が最初に設定された前記測定上限回数に達しているか否かを判定するカバレジ計測制御部と、
前記条件判定結果に該当する条件判定種別の前記通過回数が最初に設定された前記測定上限回数に達していない場合に前記カバレジ計測制御部によって呼び出され、当該条件判定種別に対応する実際の前記通過回数を１増加させるための回数の更新を行うカバレジ計測部とを有し、
前記カバレジ計測制御部および前記カバレジ計測部は、前記メモリに格納され、前記ＣＰＵによって実行されるプログラムであることを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置によって実行されるプログラムのテスト技術に関する。
【背景技術】
【０００２】
ソフトウェアによる事故を未然に防止するためにソフトウェアの品質を向上させるためのツールとして、カバレッジ計測ツールが活用されている。カバレッジ計測ツールに関する従来の技術として、特許文献１，２，３が存在する。
【０００３】
以下これら特許文献に開示される従来のカバレッジ計測技術について説明する。カバレッジ計測ツールをカバレッジ・アナライザと呼称する文献もあるが、以下、カバレッジ計測ツールと呼ぶことにする。
【０００４】
カバレッジ計測ツールは、完成したソフトウェアの品質チェックをするためのツールとして使用されてきた。カバレッジ計測ツールにはＣ０カバレッジと呼ばれ、テストプログラムによってメモリがアクセスされたかどうかをチェックする機能と、Ｃ１カバレッジと呼ばれてテストプログラムの条件分岐をどの条件で実行したかをチェックする機能がある。
【０００５】
カバレジの算出には、各命令実行行の実行回数（通過回数）を求めておき、プログラム実行終了後に実行された行の全数と実行された行（カウンタが０でない）の数を求めることが必要になる。その上で次のように算出する。
【０００６】
［実行された行数］／［実行されるべき行の全数］×１００
として、Ｃ０カバレッジ率を算出する。
【０００７】
［実行された分岐数］／［実行されるべき分岐数の全数］×１００
として、Ｃ１ガバレッジ率を算出する。
【０００８】
Ｃ０カバレッジ計測においては、図３に示すように、条件分岐が含まれるプログラムフローにおいて条件分岐の条件が不成立（偽）で実行されると、成立（真）の場合のチェックが行われないことになる。このことは、プログラムのテスト動作時に条件成立（真）／不成立（偽）のどちらか一方の場合しか実行されない可能性を残している。一方でＣ１カバレッジでは、プログラム中の条件分岐命令の条件成立（真）／不成立（偽）両方の実行が網羅的にチェックできる。
【０００９】
次にＣ１カバレッジを例にカバレジ計測の実現方法の一例を示す。図３に示すプログラムフローにおいて条件分岐命令（図３の命令コード４）が存在した場合に、これを計測対象とするＣ１カバレッジテストを行うために、ソースプログラムのコンパイラ／アセンブラ等で、直前にカバレジ計測に分岐するための分岐命令（ソフトウェアによる割り込み命令なども可能）を挿入したコードを生成する（図４の命令コード３が挿入したコードである）。そして図４の状態でプログラムを実行させて命令コード３の実行によってカバレジ計測用の分岐先で分岐元の実行アドレスとＣＰＵフラグの状態を調べ、命令コード３の直後の命令コード４が真／偽どちらの条件で実行されるかの経路を判断してその通過経路の記録を行い、分岐元のプログラムに戻る。
【００１０】
通過経路の記録は、図５に示すようなテーブルに行う。命令コード４による真の分岐ルートの通過回数が１回増えるという情報を残すためには、記録されている数値を１加算して１７１０の欄を上書きする。またＣＰＵフラグが偽を示している場合には、同様に偽ルートの通過回数が１回増えたことを示す情報を１７１１の欄に記録する。なおこのようなテーブルは、コンパイラ／アセンブラ等が命令コード３を挿入する際にあわせて生成されることが多い。
【００１１】
実行停止後、上記記録をもとにテストプログラムを処理し結果を出力する。計測対象プログラムの個々の命令コードがコンパイラなどの言語処理系を通じて高級言語から生成されたものである場合、テスト効率向上のために、高級言語上の各処理記述と通過記録との対応づけを示す情報を出力する機能をあわせて有するカバレジ計測ツールも存在する。
【００１２】
テスト後、挿入したカバレジ計測用の分岐命令（命令コード３）を削除したコード（図３の状態）に戻してソフトウェア製品を出荷する。
【００１３】
【特許文献１】特開平５−３３４１２６号公報
【００１４】
【特許文献２】特開平５−３２４４０２号公報
【特許文献３】特開平１０−３２０１９０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
上記のようなカバレッジを測定する方法の問題点としては、計測対象となる条件分岐命令の直前にカバレッジ調査のための分岐命令を挿入してカバレッジ調査のための分岐実行を伴うために、ＣＰＵオーバーヘッドが生じる点である。このオーバーヘッドの存在が著しく実行速度の低下をもたらし、実時間処理の要求されるプログラムでのチェックが困難でもありテスト効果も薄くなる。この事情はＣ０カバレジの計測でも同様に見られる。
【００１６】
さらに従来のカバレジ計測ツールにおいては、頻繁に通る同一経路（頻出経路）についても繰り返しカバレジ計測（通過回数の記録）が行われる。このような頻出経路の繰り返しの計測は無駄であることが多い。何故ならば、上記のＣ０カバレジやＣ１カバレジの算出には通過回数が０か非０か（一回でも通過したか否か）の情報のみが必要であることから、同一計測点に対する２回以上の回数のカウントは不要なことが多いためである。頻出経路の繰り返しの計測を排除できれば計測の時間短縮が実現でき、デバッグ作業の効率向上を期待できる。
【００１７】
なお特許文献１、特許文献２、特許文献３はいずれもカバレジ計測の時間短縮に寄与する提案となっているが、上記の頻出経路の繰り返しの計測を排除したいという要望に対しては、いずれも問題を有する。
【００１８】
本発明の目的は、頻出経路の繰り返しの計測を抑止し、無用なオーバーヘッドを回避することにある。
【課題を解決するための手段】
【００１９】
本発明は、テストされる対象プログラムに含まれる各命令あるいは少なくとも分岐命令の通過回数を計測し、所定の回数だけ通過した命令について以下計測を抑止する技術を特徴とする。
【発明の効果】
【００２０】
本発明によれば、頻出経路の計測を必要な通過回数に応じて抑止するので、無用なオーバーヘッドを回避することができる。
【発明を実施するための最良の形態】
【００２１】
本発明の実施形態について、図面を参照しながら説明する。
【実施例１】
【００２２】
図１は、本発明の一実施形態のシステム構成図を示す。図１において、情報処置装置１は、計測対象プログラム１２を実行するプログラム実行装置１１を備える。計測対象プログラム１２は、カバレジ計測の対象となるプログラムである。
【００２３】
プログラム実行装置１１は、ＣＰＵとメモリを備え、メモリに格納されるＯＳ、インタプリタ実行系のプログラム、および他のプログラムを実行する。
【００２４】
図１において、情報処置装置１は、さらに外部記憶装置１３とワークメモリ１４を備える。外部記憶装置１３は、ディスク装置、メモリカード、磁気テープなどプログラムやデータを記録可能な各種装置に相当するものであり、各種プログラムやデータを保存する格納場所としての役割を担う。本実施形態において、外部記憶装置１３への格納対象としては、計測対象プログラム１２、後述するカバレジ計測プログラム１５、カバレジ計測制御プログラム１６、計測点設定プログラム２０、および計測記録テーブル１７、計測条件設定テーブル１８が含まれる。
【００２５】
ワークメモリ１４は、プログラム実行装置１１が、これらプログラムを実行する際に上記の各種プログラムや各種データを外部記憶装置１３からコピーして格納する場所としての役割を担う。ワークメモリ１４は、プログラム実行装置１１内のＤＲＡＭメモリの一部などアクセス速度の比較的大きい記憶媒体が一般的であるが、低速なディスク装置、メモリカード、磁気テープなど各種記録装置上に置かれてもよい。
【００２６】
カバレジ計測プログラム１５は、カバレジ計測を行うプログラムである。実行命令の通過回数の記録や網羅率を算出する機能を有するものであり、公知のカバレジ計測ツールと同等の機能を有するものである。
【００２７】
カバレジ計測制御プログラム１６は、カバレジ計測プログラム１５の起動を計測点ごとに制御する役割を担うプログラムである。このカバレジ計測制御プログラム１６、および後述する計測条件設定テーブル１８は、本発明に特徴的な構成要素である。そして本発明の実施形態において特徴的な動作は、カバレジ計測プログラム１５が常にカバレジ計測制御プログラム１６経由で起動されること、そして計測条件設定テーブル１８に許可された計測条件下においてのみ起動されることにある。
【００２８】
カバレジ計測制御プログラム１６は、カバレジ計測プログラム１５の起動の要否を判定する機能を有する。またカバレジ計測制御プログラム１６は、必要な場合には、カバレジ計測プログラム１５を起動する機能を有する。カバレジ計測制御プログラム１６は、カバレジ計測プログラム１５を起動するか否かの判定において、後述する計測記録テーブル１７、計測条件設定テーブル１８および後述する条件判定結果表示部１９１のデータを用いる。
【００２９】
そしてこの判定結果により、カバレジ計測制御プログラム１６の動作は、次の２通りに分かれる。
（ａ）カバレジ計測を行わせるためにカバレジ計測プログラム１５を起動し、その後に終了する。
（ｂ）何もせずに終了する。カバレジ計測プログラム１５を起動せずに終了するのでカバレジ計測は行われない。
【００３０】
計測記録テーブル１７は、カバレジ計測制御プログラム１６によって計測対象プログラム１２のカバレジ情報が記録されるテーブルである。計測条件設定テーブル１８は、計測対象プログラム１２のカバレジ情報の計測を行う条件が記録されるテーブルである。カバレジ計測制御プログラム１６は、カバレジ計測プログラム１５の起動の要否判定の際に、計測記録テーブル１７および計測条件設定テーブル１８の記載内容を参照する。
【００３１】
プログラム実行装置１１は、さらに処理結果表示部１９を備える。処理結果表示部１９は、図１には記載がないが、条件判定結果表示部１９１および戻りアドレス表示部１９２から成る。
【００３２】
条件判定結果表示部１９１は、条件判定種別を示すために条件判定の結果を表示するフリップフロップ、レジスタまたは記憶領域である。プログラム実行装置１１は、この判定結果を参照して条件分岐処理などを実施する。本実施形態において条件判定結果表示部１９の表示内容は、条件分岐命令が実行されるまでは保持され、条件分岐命令の実行によってはじめて初期状態にリセットされる。戻りアドレス表示部１９２は、関数コールなどからの戻りアドレスの保存のために存在するレジスタまたは記憶領域である。
【００３３】
プログラム実行装置１１は、さらにそのメモリに計測点設定プログラム２０を格納し実行する。計測点設定プログラム２０は、計測対象プログラム１１について本発明に特徴的なカバレジ計測を可能にするための加工を施す機能を有する。
【００３４】
情報処置装置１は、そのほか一般的な情報処理装置と同様な装置を備える。図１に示したものとしては、Ｉ／Ｏ制御部３１や表示制御部３２を備え、これらが制御するキーボード３１０、マウス３１１、フレームメモリ３２０および表示装置３２１を備える。そして情報処理装置１１が備える各装置は、バスブリッジ・インターフェースコントローラ３０によって相互に接続されてデータを交換する構成となっている。
【００３５】
図２は、本実施形態の計測対象プログラム１２の構成を示す図である。図３は、計測用の加工を施さない計測対象プログラム１２のオリジナル構成であり、図４は、公知の計測における計測対象プログラム１２の構成である。
【００３６】
計測対象プログラム１１は、複数の命令コードで構成される。この命令コードは特定の言語実装系の記述に限定されるものではない。たとえば命令コードとしては、機械語、インタプリタ実行系の場合の中間語、などが該当する。あるいは以下の説明の趣旨を逸脱しないので、個々の命令コードが、Ｃ言語のような高級言語とされる処理記述の１単位に相当する、と見なしてもよい。
【００３７】
図２において、命令コード４は、条件判定の結果が真であるときのみ分岐する命令であり、命令コード４の処理の際には、プログラム実行装置１１が条件判定結果表示部１９１を参照して、分岐の有無を決める。
【００３８】
また図２の命令コード３は、カバレジ計測制御プログラム１６に分岐するための命令である。命令コード３の実行によって、直後の条件分岐命令（命令コード４）が条件成立（真）／不成立（偽）のどちらで実行されるかを記録するためにカバレジ計測制御プログラム１６が起動されることになる。命令コード３は、図３のようなオリジナルのプログラムの命令コード４の条件分岐を計測するために追加されたものである。ソフトウェアによる割り込み命令なども可能であるが、ここでは命令コード３をリンク付の分岐命令とみなして説明する。リンク付分岐命令とは、分岐時に復帰アドレスを保存してから分岐する命令であり、関数などからの復帰の際に保存された復帰アドレスをプログラムカウンタ（ＰＣ）に転送することによって実行される。
【００３９】
本実施形態においては、戻りアドレス表示部１９２がその戻りアドレスの保存のために存在する。図２のプログラムについて、プログラム実行装置１１が命令コード３を実行すると、戻りアドレス表示部１９２に命令コード４のロケーションを保存する。戻りアドレス表示部１９２の内容は、命令コード４のアドレスとなり、カバレジ計測対象を示すアドレスにも等しくなる。
【００４０】
カバレジ計測制御プログラム１６は、戻りアドレス表示部１９２の内容がカバレジ計測対象を示すアドレスと等しいことから、戻りアドレス表示部１９２を参照することによって計測対象が命令コード４であると識別する。そして分岐するか否かは条件判定結果表示部１９１の表示内容（真/偽）に従うので、これを参照して命令コード４の分岐有無を知り、命令コード４の分岐記録を残す。
【００４１】
カバレジ計測制御プログラム１６による命令コード４についての記録を終了すると、戻りアドレス表示部１９２が示すアドレス、すなわち命令コード４に戻りプログラム実行装置１１が命令コード４を実行する。
【００４２】
なお図２の計測対象プログラム１２は、計測点設定プログラム２０によって、図３のオリジナルの計測対象プログラム１２が加工された後の構成を示している。
【００４３】
公知のカバレジ計測の一例は、コンパイル時やアセンブル時に生成される図３のオリジナルの計測対象プログラム１２から、命令コード３としてカバレジ計測プログラム１５への分岐命令が置かれ、プログラム実行装置１１が図４の計測対象プログラム１２を実行することによって計測を行う。
【００４４】
本実施形態では、計測点設定プログラム２０がこの図４の状態の計測対象プログラム１２を加工することによって、命令コード３がカバレジ計測制御プログラム１６への分岐命令に置き換わる。命令コード３がカバレジ計測制御プログラム１６への分岐命令となっていることが、本実施形態において特徴的である。したがって公知のカバレジ計測システムにおいては、命令コード３が実行されると、直接、カバレジ計測プログラム１５が呼び出されるのに対して、本実施形態においては、カバレジ計測制御プログラム１６が呼び出されることになる。
【００４５】
図５に本実施形態における計測記録テーブル１７の構成を示す。これは公知のカバレジ計測ツールで使用されるものと同等である。計測記録テーブル１７は、カバレジ計測プログラム１５が実行命令の通過回数の記録に用いるものであり、図５は、図２の命令コード４が計測点番号１として登録されている様子を示している。
【００４６】
計測点が命令コード４のように条件分岐命令の場合には、図５のように計測記録テーブル１７は、通過回数１７１を計測点の条件分岐の真偽（分岐/非分岐）ごとに記録できる構成を有しており、計測点番号１７２、アドレス１７３、命令コード番号１７４、および条件判定種別１７５を有する。ここでアドレス１７３は、当該計測点番号１７２の命令コード１７４の所在位置を示している。図５の例では、図２の命令コード４が00010000Hに存在する命令であることを示している。なお通過回数１７１が少なくとも１回通過したことだけを示せばよい場合には、回数の代わりに有無を示す記号を記録してもよい。
【００４７】
カバレジ計測プログラム１５は、計測点番号１に関する通過回数欄１７１０および１７１１の更新を次のように行う。条件判定結果表示部１９１が真を示しており、かつ戻りアドレス表示部１９２が命令コード４のアドレスを示している場合には、カバレジ計測プログラム１５は、命令コード４による真の分岐ルートの通過回数が１回増えるという情報を残すために、記録されている数値を１加算して１７１０の欄を上書きする。また条件判定結果表示部１９１が偽を示している場合には、同様に偽（非分岐ルート）の通過回数が１回増えたことを示す情報をテーブル１７１１に記録する。いずれも通過回数１７１が通過の有無を示せばよい場合には、有を示す記号を上書きする。
【００４８】
図５の計測記録テーブル１７の状態は、命令コード４が真の分岐として実行された通過回数＝１、同じく偽の非分岐としての通過回数＝０、である結果を示しており、この計測記録テーブル１７の記録結果から、計測対象プログラム１２の図２で示されている範囲のカバレジが次のように計算できる。
【００４９】
通過していない命令コードは命令コード５のみ（計１箇所）で、通過した命令コードが命令コード１、命令コード２、命令コード４、命令コード６（計４箇所）なので、
C0カバレジ＝通過した命令コード数/全命令コード数＝（５−１）/５  ＝８０％、
C１カバレジ＝５０％
となる。
【００５０】
別の通過記録結果として、欄１７１０＝０かつ欄１７１１＞０を仮定した場合には、
通過していない命令コードは（計0箇所）なので、同様に計算すると
C0カバレジ＝（５−0）/５  ＝１００％、
C１カバレジ＝５０％
となる。
【００５１】
なお計測点記録テーブル１７の作成は、コンパイラ／アセンブラ等によって計測対象プログラム１２が図３から図４の状態に変換される際に合わせて生成されるのが典型的な例であり、本実施形態においてもこれを踏襲する。
【００５２】
図６に本実施形態における計測条件設定テーブル１８の構成を示す。このテーブルは、カバレジ計測制御プログラム１６によって、カバレジ計測の要否判定の際に参照される。
【００５３】
計測点が命令コード４のように条件分岐命令の場合には、計測条件設定テーブル１８は、図６に示すように測定上限回数１８１を計測点の条件分岐の真偽（分岐/非分岐）ごとに設定できる構成を有しており、計測点番号１７２、アドレス１７３、命令コード番号１７４、および条件判定種別１７５を有する。ここでアドレス１７３は、当該計測点番号１７２の命令コード番号１７４の所在位置を示している。図６の例では、図２の命令コード４が00010000Hに存在する命令であることを示している。
【００５４】
測定上限回数１８１の欄は、測定点ごとに測定回数の上限値が記載される。図６の場合は、真偽双方の場合において上限回数１が設定されている。測定回数に上限を設けない場合は、測定上限回数１８１に上限なしを意味する値（たとえば−１）を設定しておくことによって、識別可能であるものとする。
【００５５】
全点常時計測フラグ１８６は、すべての計測点を常時計測対象とし続ける場合に設定される。このフラグがＯＮに設定されている場合、公知のカバレジ計測ツールと等価な計測動作を示すことになる。
【００５６】
なお計測対象プログラム１２に含まれるすべての命令の測定上限回数１８１が「１」でよい場合には、測定上限回数１８１が不要になり、従って計測条件設定テーブル１８自体が不要になる。
【００５７】
以下、図１〜図６で示した構成によって実施される本実施形態の処理動作について説明する。
【００５８】
最初に計測上限回数の制限を設けない場合の動作について説明する。これは計測条件設定テーブル１８の全点常時計測フラグ１８６がＯＮに設定されている状態であり、プログラム実行装置が命令コード３を実行する動作に相当する。この動作は、公知のカバレジ計測に相当する動作である。
【００５９】
プログラム実行装置１１が図２の命令コード３を実行すると、カバレジ計測制御プログラム１６に制御が渡る。カバレジ計測制御プログラム１６は、計測条件設定テーブル１８の全点常時計測フラグ１８６を参照する。全点常時計測フラグ１８６がＯＮに設定されているので、カバレジ計測制御プログラム１６は、即座にカバレジ計測プログラム１５を起動する。起動されたカバレジ計測プログラム１５は、公知である所定のカバレジ計測のための処理を実施する。
【００６０】
所定のカバレジ計測のための処理の一例としては、最初に通過回数を記録していく。すなわちカバレジ計測プログラム１５は、計測記録テーブル１７の通過回数１７１欄の更新（カウントアップ）を行なう。たとえば条件判定結果表示部１９１が真を示しており、かつ戻りアドレス表示部１９２が命令コード４のアドレスを示している場合には、カバレジ計測プログラム１５は、命令コード４による真の分岐ルートの通過回数が１回増えるという情報を残すために、記録されている数値を１加算して欄１７１０の欄を上書きする。また条件判定結果表示部１９１が偽を示している場合には、同様に偽の非分岐ルートの通過回数が１回増えたことを示す情報をテーブルの欄１７１１に記録する。あるいはいずれも通過回数１７１が通過の有無を示せばよい場合には有を示す記号を上書きする。
【００６１】
そしてカバレジ計測プログラム１５は、これら通過回数の記録からカバレジを算出して終了する。カバレジは次の例のように求まる。
【００６２】
たとえば欄１７１０＞０かつ欄１７１１＝０のとき
通過していない命令コードは命令コード５のみ（計１箇所）で、通過した命令コードが命令コード１、命令コード２、命令コード４、命令コード６（計４箇所）なので、
C0カバレジ＝通過した命令コード数/全命令コード数＝（５−１）/５  ＝８０％、
C１カバレジ＝５０％
たとえば欄１７１０＝０かつ欄１７１１＞０のとき
通過していない命令コードは（計０箇所）なので、同様に計算すると
C0カバレジ＝（５−0）/５  ＝１００％、
C１カバレジ＝５０％
カバレジ計測プログラム１５の処理が終了するとカバレジ計測制御プログラム１６に制御が戻る。そしてカバレジ計測制御プログラム１６は、即座に終了する。この一連の手順で実現される結果は、公知のカバレジ計測手順によるものと同等である。
【００６３】
次に各計測点に対して計測回数制限を設ける場合の動作について図７とともに説明する。図７は、本実施形態において特徴的なカバレジ計測を制御する手順を示す例である。
【００６４】
カバレジ計測制御プログラム１６は、計測条件設定テーブル１８の全点常時計測フラグ１８６を参照し、全点常時計測フラグ１８６がＯＦＦに設定されていると判定する（ステップ７０１）。カバレジ計測制御プログラム１６は、公知のカバレジ計測手順と異なり、即座にカバレジ計測プログラム１５を起動せずに、計測回数に制限を設けるための以下の処理を行う。ここからの手順は、戻り番地アドレス表示部１９２が00010000Hを示しており、これが計測する条件分岐命令である命令コード４の存在位置に等しいものとして以下説明する。
【００６５】
カバレジ計測制御プログラム１６は、最初に条件判定結果表示部１９１の判定結果と戻り番地アドレス表示部１９２のアドレスを取得する（ステップ７０２）。戻り番地アドレスが00010000Hであると判定するとともに、条件判定結果が真か偽かを判定する（ステップ７０３）。
【００６６】
条件判定結果が真を示す場合には、カバレジ計測制御プログラム１６は、計測点記録テーブル１７および計測条件設定テーブル１８の双方を参照し、当該アドレスを有する計測点の真への分岐の通過回数１７１０と真への分岐の測定上限回数１８１０を読み出す（ステップ７０４および７０５）。そしてこれら測定上限回数と通過回数の大小比較を行う（ステップ７０６）。あるいは通過回数１７１０に通過が記録されているか否か判定する。あるいは測定上限回数を１ずつ減算する場合には、測定上限回数が０に達したか否か判定する。
【００６７】
測定上限回数＜＝通過回数の場合、あるいはすでに通過が記録されている場合、この計測点における真の分岐の計測が不要であるので計測を行わない。そのためにカバレジ計測制御プログラム１６は、カバレジ計測プログラム１５を呼び出さずになにもせずに即座に終了する（ステップ７１１）。
【００６８】
測定上限回数＞通過回数の場合、あるいはまだ通過が記録されていない場合、この計測点で真の分岐の計測が必要であるので計測を行う。そのためにカバレジ計測制御プログラム１６は、カバレジ計測プログラム１５を呼び出してから終了する（ステップ７１０、ステップ７１１）。
【００６９】
ステップ７０３で条件判定結果表示部１９１の判定結果が偽の場合にも、真の場合と同様に処理を行う。カバレジ計測制御プログラム１６は、計測点記録テーブル１７および計測条件設定テーブル１８の双方を参照し、当該アドレスを有する計測点の偽（非分岐のルート）の通過回数１７１１と偽（非分岐のルート）の測定上限回数１８１１を読み出す（ステップ７０７および７０８）。そしてこれら測定上限回数と通過回数の大小比較を行う（ステップ７０９）。あるいは通過回数１７１１に通過が記録されているか否か判定する。あるいは測定上限回数を１ずつ減算する場合には、測定上限回数が０に達したか否か判定する。
【００７０】
測定上限回数＜＝通過回数の場合、あるいはすでに通過が記録されている場合、この計測点における偽（非分岐のルート）の計測が不要であるので計測を行わない。そのためにカバレジ計測制御プログラム１６は、カバレジ計測プログラム１５を呼び出さずになにもせずに即座に終了する（ステップ７１１）。
【００７１】
測定上限回数＞通過回数の場合、あるいはまだ通過が記録されていない場合、この計測点で偽（非分岐のルート）の計測が必要であるので計測を行う。そのためにカバレジ計測制御プログラム１６は、カバレジ計測プログラム１５を呼び出してから終了する（ステップ７１０、ステップ７１１）。
【００７２】
なおインタプリタ実行系のプログラムが図２の命令コード１，２，４，５，６のトレースを行なう場合には、各命令コードごとにカバレジ計測制御プログラム１６を呼び出し、ステップ７０１，７０６の判定により必要に応じてカバレジ計測プログラム１５を呼び出してもよい。その場合のカバレジ計測制御プログラム１６は、命令コード１，２，５，６が分岐命令でないので、ステップ７０２，７０３をスキップし、目的の命令コードについてステップ７０４，７０５，７０６，７１０を実行する。その場合には計測対象プログラム１２に命令コード３を挿入してもよいし、挿入しなくてもよい。
【００７３】
以上により、設定された測定上限回数を超える通過回数が計測されなくなるので、不要な計測が回避されて、計測のオーバーヘッドが削減されることになる。
【００７４】
なお本実施形態においては既存のカバレジ計測プログラム１５の機能を最大限活用するように実施できるため、通過回数測定後のカバレジの計算や高級言語上の各処理記述への通過記録の対応づけといった処理を、公知のカバレジ計測プログラム１５の機能に委ねることが可能である。
【００７５】
すなわちカバレジの算出については、以上の動作の結果で得られた通過回数の記録を用いて、前述したカバレジ計測プログラム１５による公知のカバレジ算出処理と同等に実施される。
【００７６】
また計測対象プログラム１２の個々の命令コードがコンパイラなどの言語処理系を通じて高級言語から生成されたものである場合、高級言語上の各処理記述と通過記録との対応づけを示す情報生成を、公知のカバレジ計測プログラム１５が有する場合には、カバレジの算出とともに、カバレジ計測プログラム１５に実施させてもよい。
【００７７】
結果として、本実施形態に特徴的なカバレジ計測制御プログラム１６を、コンパクトな処理で実施すること、およびその構築コストを抑えて実施することが可能になる。
【００７８】
上記の実施形態においては、計測記録テーブル１７は、カバレジ計測プログラム１５とカバレジ計測制御プログラム１６で共通にアクセスされるものとして示したが、カバレジ計測プログラム１５のものとは別に、カバレジ計測制御プログラム１６のみがアクセスする計測記録テーブル１７相当のテーブルを備えているものとしてもよい。
【００７９】
また上記の実施形態においては、計測記録テーブル１７と計測条件設定テーブル１８を別個のテーブルとして示したが、双方が有する情報の同一箇所をまとめてひとつのテーブルに統合する構成としてもよい。また通過回数１７１を設けずに命令通過ごとに測定上限回数１８１から１減算する場合には、計測記録テーブル１７を設けなくてよい。あるいはすべての命令の測定上限回数１８１が「１」でよい場合には、計測条件設定テーブル１８を設けなくてよい。
【００８０】
また上記実施形態では、プログラム実行装置１１がハードディスク等の外部記憶装置１３に格納された諸構成要素をメモリ又はワークメモリ１４に転送して参照されたり実行されたりするものとして示した。しかしこのような諸手段はＣＤ−ＲＯＭやフレキシブルディスク等の外部記憶媒体、あるいはフラッシュＥＥＰＲＯＭ等の半導体メモリを含む記憶媒体に格納されているものを読み出して使用するものとしてもよい。またデータ通信によって外部から伝送されてきたものをなんらかの記憶媒体に格納するものとしてもよい。その他、本発明は上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲内で種々変形して実施することが可能である。
【産業上の利用可能性】
【００８１】
本発明は、あらゆるソフトウェアを搭載した製品に対して、開発の効率向上および精度向上を目的に、利用可能である。
【図面の簡単な説明】
【００８２】
【図１】実施形態の情報処理装置の構成を示す図である。
【図２】計測対象プログラムの構成例を示す図である。
【図３】計測対象プログラムのオリジナル構成例を示す図である。
【図４】従来の計測対象プログラムの構成例を示す図である。
【図５】実施形態の計測記録テーブルの構成を示す図である。
【図６】実施形態の計測条件設定テーブルの構成を示す図である。
【図７】実施形態のカバレジ計測制御プログラムの処理手順を示す図である。
【符号の説明】
【００８３】
１…情報処置装置、１２…計測対象プログラム、１５…カバレジ計測プログラム、１６…カバレジ計測制御プログラム、１７…計測記録テーブル、１８…計測条件設定テーブル、１９…処理結果表示部
【図１】
2005339204.tif 000003
【図２】
2005339204.tif 000004
【図３】
2005339204.tif 000005
【図４】
2005339204.tif 000006
【図５】
2005339204.tif 000007
【図６】
2005339204.tif 000008
【図７】
2005339204.tif 000009