(57)【要約】【課題】本発明の課題は、システム開発作業のテストデバッグにおいて、テスト工数を削減する為に、該プログラムの全命令文のテスト実行状況チェックを手作業にかえてコンパイラ等で機械的に実施させることにより、テストデバッグの作業工数を削減することによりプログラム開発の生産性の向上を図ることにある。【解決手段】プログラムを命令文単位とプログラム内命令分岐一連番号を付加した「命令文」と「分岐等を含む命令文」は「命令文及びその内部における分岐の単位」に分類して両者を統一する一連番号を付与し、該一連番号に対応する分類結果と、該一連番号に対応する個所の通過を同時に記録する手段を設ける。【選択図】　図２
2004102742.tif 000002
【特許請求の範囲】
【請求項１】
一つのコンパイラ仕様に対応する宣言文と命令文とコメントを少なくとも含む既存の完成又は半完成プログラムを格納するテスト対象プログラム格納ファイルと、
前記テスト対象プログラム格納ファイルの内容を複写して格納するカバレージテストレディープログラムファイルと、
前記カバレージテストレディープログラムファイルに格納された既存の完成又は半完成プログラムを、命令文単位と、分岐等を含む命令文は命令文及びその内部における分岐の単位に分類し、前記命令文と前記分岐等を含む命令文は命令文及びその内部における分岐の単位に該プログラム内でユニークな識別記号であるプログラム内命令分岐一連番号を付加し、前記カバレージ情報蓄積ファイルに、前記命令もしくは命令内部分岐の分類結果を示す記号であるＣ０対象Ｃ１対象分類記号と関連付けて格納する手段を設けたことを特徴とするプログラムテストデバッグ装置。
【請求項２】
請求項１に記載のプログラムテストデバッグ装置において、
前記カバレージテストレディープログラムファイルに格納された既存の完成又は半完成プログラムを、「命令文」単位と「分岐等を含む命令文」は「命令文及びその内部における分岐の単位」に解析し、該「命令文」と「分岐等を含む命令文は命令文及びその内部における分岐の単位」に該プログラム内でユニークな識別記号であるプログラム内命令分岐一連番号と呼ぶを付加し、前記カバレージ情報蓄積ファイルに、命令もしくは命令内部分岐等の分類結果を示す記号であるＣ０対象Ｃ１対象分類記号と対応付けて格納し、
該カバレージテストレディープログラムファイル内にプログラム内命令分岐一連番号ごとにコンパイラが解釈できる形式でカバレージ通過関数を生成してプログラムの一部として埋め込むソース解析・埋め込みプログラムを設け、
前記ソース解析・埋め込みプログラム内命令分岐一連番号対応に該Ｃ０対象Ｃ１対象分類記号と以下のカバレージ通過関数の実行結果を関連付けて記録するカバレージ情報蓄積ファイルとを設け、
前記ソース解析・埋め込みプログラムは、該コンパイラ等に解釈可能な形式で存在し、該プログラム内命令分岐一連番号単位にユニークに生成し、実行された場合に記号であるカバレージ通過記号を該カバレージ情報蓄積ファイルに格納する関数を含むカバレージ通過関数を算出する手段とを設けたことを特徴とするプログラムテストデバッグ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、業務分野で利用されるソフトウエアを含むソフトウェア開発におけるテストに関し、特に、テスト工程の工数を削減することに好適なテストデバッグ方法に関する。
【０００２】
【従来の技術】
従来のテストデバッグ方法もしくは装置は、既存の完成又は半完成プログラムに対し、カバレージ情報蓄積ファイルを設け、このカバレージ情報蓄積ファイルに全命令文別にテスト実行済みの情報を設定したあと、当該プログラムの変更に対しては変更部分のカバレージ情報についてのみテスト未実行状態に設定し、変更部分の命令文のみをテスト対象として実行させることを特徴とする差分テストデバッグ支援方法が知られている（例えば、特開平６−１０３１１３号公報参照）。
【０００３】
しかしながら、当該発明においてはその公知の実施例を含め既存の完成又は半完成プログラムに対し、カバレージ情報を取得するための何らかの処置を施し、カバレージの取得結果を該カバレージ情報蓄積ファイルに格納する方法については明らかにされていない。従来技術によれば、当業者にＣ０メジャー、Ｃ１メジャーとして知られる該カバレージ情報取得作業は、当業者にテストケースとして知られる該プログラムへの引渡し、参照データ群をもとに、机上デバッグ等として知られる人手による該プログラムの全命令文一つ一つに手作業による確認作業が必要であり、テスト作業工数が大きくなるという問題点があった。
【０００４】
【特許文献１】
特開平６―１０３１１３号公報（要約、図２）
【０００５】
【発明が解決しようとする課題】
本発明の課題は、システム開発作業のテストデバッグにおいて、テスト工数を削減する為に、該プログラムの全命令文のテスト実行状況チェックを手作業にかえてコンパイラ等で機械的に実施させることにより、テストデバッグの作業工数を削減することによりプログラム開発の生産性の向上を図ることにある。
【０００６】
【課題を解決するための手段】
上記目的は、
（１）一つのコンパイラ仕様に対応する宣言文と命令文とコメント等から構成される既存の完成又は半完成プログラムを格納するファイル等の手段（ここではテスト対象プログラム格納ファイルと呼ぶ）と、
（２）テスト対象プログラム格納ファイルの内容を複写して格納するファイル等の手段（ここではカバレージテストレディープログラムファイルと呼ぶ）と、
（３）カバレージテストレディープログラムファイルに格納された既存の完成又は半完成プログラムを、「命令文」単位と「分岐等を含む命令文」は「命令文及びその内部における分岐の単位」に解析し、該「命令文」と「分岐等を含む命令文は命令文及びその内部における分岐の単位」に該プログラム内でユニークな識別記号（ここではプログラム内命令分岐一連番号と呼ぶ）を付加し、カバレージ情報蓄積ファイルに、命令もしくは命令内部分岐等の分類結果を示す記号（ここではＣ０対象Ｃ１対象分類記号と呼ぶ）とともに格納（ここではソース解析機能と呼ぶ）すると共に、該カバレージテストレディープログラムファイル内にプログラム内命令分岐一連番号ごとに以下（５）に述べるコンパイラが解釈できる形式でカバレージ通過関数を生成してプログラムの一部として埋め込む手段（ここではソース解析・埋め込みプログラムと呼ぶ）と、
（４）該プログラム内命令分岐一連番号対応に該Ｃ０対象Ｃ１対象分類記号と以下のカバレージ通過関数の実行結果を関連付けて記録するファイル等の手段（ここではカバレージ情報蓄積ファイルと呼ぶ）と、
（５）該コンパイラ等に解釈可能な形式で存在し、該プログラム内命令分岐一連番号単位にユニークに生成され、実行された場合に記号（ここではカバレージ通過記号と呼ぶ）を該カバレージ情報蓄積ファイルに格納する関数等（ここではカバレージ通過関数と呼ぶ）の手段とを設けることにより達成される。
【０００７】
【発明の実施の形態】
以下、本発明を一実施例に基づいて詳細に説明する。
図１は本発明を実施する計算機の機器構成図であり、ＣＰＵ１０１，メモリ１０２，外部記憶装置１０３，入力装置１０４，表示装置１０５，プリンタ１０６とから構成されている。
【０００８】
図２は本実施例の概要図である。２０２は、図３の説明として後述するテスト対象プログラム格納ファイルに格納されている、テスト対象である既存の完成又は半完成プログラムであるソースプログラム２０１を参照し、ソースプログラム２０１の内容を複写して図７の説明として後述するカバレージテストレディープログラムファイル２０３に格納する機能、及び該機能によりカバレージテストレディープログラムファイル２０３に格納された既存の完成又は半完成プログラムであるソースプログラムに対し、図４の説明として後述するように、該既存の完成又は半完成プログラムであるソースプログラムを分析し「命令文」と「分岐等を含む命令文」は「命令文及びその内部における分岐の単位」に後述するプログラム内命令分岐一連番号を付加し、プログラム内命令分岐一連番号ごとに、該コンパイラが解釈できる形式でカバレージ通過関数を生成して、カバレージテストレディープログラムファイル２０３にプログラムの一部として追記するとともに該カバレージテストレディープログラムファイル２０３に格納された既存の完成又は半完成プログラムに対する分析結果としてプログラム内命令分岐一連番号とＣ０対象Ｃ１対象分類記号を図５の説明として後述するカバレージ情報蓄積ファイル２０６に格納する機能を実現するプログラムよりなる。ここで２０２を解析記録プログラムと呼ぶことにする。
【０００９】
２０７は、オブジェクトモジュール生成手順を示す。　ここではカバレージテストレディープログラムファイル２０３を参照して、コンパイラを使ってオブジェクトモジュール２０８を生成している。コンパイラを使用してオブジェクトモジュールを生成する方法は当業者には周知であるため、煩雑をさけるために説明を省略するがここではコンパイル処理と呼ぶ。
【００１０】
２０９は、テスト実行手順である。生成されたオブジェクトモジュール２０８をテストケースに対応する環境とリンクしてオブジェクトモジュール２０８を実行する手順である。テストケースに対応する環境作成は当業者には容易であると考えられるためここでの説明は省略する。
【００１１】
２０９は、カバレージテストレディープログラムファイル２０３に追記された上記及び図７の説明として後述するカバレージ通過関数が実行されることにより、図７の説明として後述するカバレージ通過記号を上記及び図４の説明として後述する該プログラム内命令分岐一連番号対応に上記及び後述のテストケース記号と上記及び後述のＣ０対象Ｃ１対象分類記号とカバレージ通過関数の実行結果を関連付けてカバレージ情報蓄積ファイル２０６に記録する処理である。ここでは２０９をカバレージ用データ取得処理と呼ぶことにする。
【００１２】
図３は、ソースプログラム２０１を格納するファイルであるテスト対象プログラム格納ファイルを示す図で、３０１はテスト対象プログラム格納ファイルを示し、３０２は図２の２０１として示したテスト対象である既存の完成又は半完成プログラムであるソースプログラムを示す。
【００１３】
図４は、図２の２０２を実施するための処理手順を示すフローチャートであり、以下説明していく。
【００１４】
４０１は、テスト対象プログラム格納ファイルに格納されたソースプログラム２０１を複写し、カバレージテストレディープログラムファイル２０３に格納する処理を示す。この処理方法は当業者に自明である。この処理を命令文複写処理と呼ぶ。
【００１５】
４０２は、カバレージテストレディープログラムファイル２０３に格納された既存の完成又は半完成プログラムを、命令文単位に取り出し、「命令文」と「分岐等を含む命令文」は「命令文及びその内部における分岐の単位」に解析し、「命令文」単位と「分岐等を含む命令文は命令文及びその内部における分岐の単位」にプログラム内命令分岐一連番号を付加する処理を示す。ここでは、予め該言語仕様に存在するすべての分岐文種類を網羅するように洗い出して格納しておき、ここで切り出した命令文に対し、格納された該言語仕様に存在するすべての分岐文と一致するかどうかにより識別を行うことで、分岐文である場合はプログラム内命令分岐一連番号上記及び後述のＣ０対象Ｃ１対象分類記号を付加することにより、「命令文」と「分岐等を含む命令文」は「命令文及びその内部における分岐の単位」に解析する処理を行っている。解析結果に対して一連番号を付加する処理は当業者ならば容易に実施できると思われるため、説明煩雑化を避けるため省略する。この処理をプログラム内命令分岐一連番号付加処理と呼ぶ。
【００１６】
４０３は、４０２ステップにおいて命令文単位に取り出し、プログラム内命令分岐一連番号を付加した「命令文」と「分岐等を含む命令文」は「命令文及びその内部における分岐の単位」に対し、Ｃ０対象Ｃ１対象分類記号と命名するデータとして、「命令文」に対しては当業者にＣ０カバレージとして知られるＣ０を意味するＣ０をデータとして割り当て、「命令文の内部における分岐の単位」には当業者にＣ１カバレージとして知られるＣ１をデータとして割り当てる処理と、前述のプログラム内命令分岐一連番号と同時にカバレージ情報蓄積ファイル２０６に格納する処理を実施している。尚、ここでは一つの命令文と一つの分岐をかねる命令文と分岐の単位にはＣ０カバレージとＣ１カバレージの双方の対象になる意味を含めてＣ０Ｃ１なるデータを割り当てている。この処理を実現するプログラムはこの記述さえ読めば当業者ならプログラムを容易に作成できると考えられるためより詳細な作成方法の説明は煩雑を避けるため省略する。４０３の処理をＣ０対象Ｃ１対象分類記号格納処理と呼ぶ。
【００１７】
４０４は、カバレージテストレディープログラムファイル２０３に格納された既存の完成又は半完成プログラムに、「命令文」及び「分岐等を含む命令文は命令文及びその内部における分岐の単位」に付加されたプログラム内命令分岐一連番号対応に、「該プログラム内命令分岐一連番号情報を内部に持ち、実行時に前述のカバレージ情報蓄積ファイル２０６に対し内部のプログラム内命令分岐一連番号対応を参照して（以下カバレージ通過記号と呼ぶ一つの記号）を記録する機能を持ち、前述のコンパイラ等に解釈可能な形式で存在する」カバレージ通過関数を生成して追記する処理である。ここで述べた仕様を提示すれば当業者ならば容易に該カバレージ通過関数をプログラムできると考えられる。４０４をカバレージ通過関数追記処理と呼ぶ。
【００１８】
４０５は、カバレージテストレディープログラムファイル２０３に格納された既存の完成又は半完成プログラムに対し、４０１、４０２、４０３、４０４を全て完了していない命令文が残っているかかどうかを判定し、残っていなければ終了し、残っていれば４０１から繰り返し処理を行っている。４０５を命令文解析完了判定処理と呼ぶ。
【００１９】
図５に、本実施例のカバレージ情報蓄積ファイル２０６の構造を示す。カバレージ情報蓄積ファイル５０５はプログラム内命令分岐一連番号５０１、テストケース記号５０２、Ｃ０対象Ｃ１対象分類記号５０３、カバレージ通過記号５０４の４つの項目より構成されている。
【００２０】
プログラム内命令分岐一連番号５０１には、カバレージテストレディープログラムファイル２０３に格納された既存の完成又は半完成プログラムにおける、「命令文」単位もしくは「分岐等を含む命令文」は「命令文及びその内部における分岐の単位」に対し付加したプログラム内命令分岐一連番号を格納する。
【００２１】
テストケース記号５０２は、ソースプログラム２０１をテストするために当業者の間ではテストケースとして知られ、オブジェクトモジュール２０８を実行する際に必要なテストケースの記号名称を格納している。ここでは一つのテストケース対応にテストケース対応記号を入力する方法は請求項の記述と直接には関係しないため説明を省略する。
【００２２】
Ｃ０対象Ｃ１対象分類記号格納欄５０３は、Ｃ０対象Ｃ１対象分類記号を格納する。
【００２３】
カバレージ通過記号格納欄５０４には、カバレージテストレディープログラムファイル２０３に埋め込まれたカバレージ通過関数がテスト実行時に前述のカバレージ通過記号を記入するためのものである。
【００２４】
図６は、テストケースファイルを示す図である。６０１は全体構成を６０２は前述のテストケース記号を、６０３はテストケースの管理用コメントを記録する。プログラム実行テスト時にテストケース対応に作成するファイル等の作成方法は当業者には自明なためここでは煩雑を避けるため省略する。
【００２５】
図７に、テスト対象プログラム格納ファイルに格納されたソースプログラムの一例を示す。
【００２６】
図８に、図７の一例を含んだテスト対象プログラム格納ファイルに格納されたソースプログラムを複写し、カバレージ通過関数とともに格納されたカバレージテストレディープログラムファイルの図７に相当する部分の一例を示す。網掛けとなっている部分は、カバレージ通過関数を示す。カバレージ通過関数はプログラム内命令分岐一連番号対応に、「該プログラム内命令分岐一連番号情報を内部に持ち、実行時に前述のカバレージ情報蓄積ファイル２０６に対し内部のプログラム内命令分岐一連番号対応を参照してカバレージ通過記号と呼ぶ一つの記号を記録する機能を持ち、前述のコンパイラ等に解釈可能な形式」で存在している。
【００２７】
図９は、図７に示したテスト対象プログラム格納ファイルに格納されたソースプログラムの一例に対し、２０２で示した解析記録プログラムを実行した結果生成されたカバレージ情報蓄積ファイル２０６の一例である。ここでは１１０１プログラム内命令分岐一連番号にデータ１，２，３，４，５，６，７が生成され、１１０２テストケース記号にはデータ２，２，２，２，２，２，２が事前に格納されている。プログラム内命令分岐一連番号に対し、前述の通り解析記録プログラムが１１０３のＣ０対象Ｃ１対象分類記号をＣ０、Ｃ１、Ｃ０Ｃ１として格納している。１１０４のカバレージ通過記号には解析記録プログラム実施段階ではデータは入力されていない。
【００２８】
図１０は、２０９で示したカバレージ用データ取得処理を実行した結果としての情報蓄積ファイル２０６の一例である。
【００２９】
図１０には、２０９で示したテストの実行結果が記録されている。１２０１のプログラム内命令分岐一連番号、１２０２のテストケース記号、１２０３のＣ０対象Ｃ１対象分類記号のデータに加えて１２０４のカバレージ通過記号も格納されている。
【００３０】
ここで、Ｃ０テストカバレージは分子をテスト実行済み命令文数とし分母を全命令文数とする百分率として定義され、Ｃ１テストカバレージの算出は分子をテスト実行済み分岐数とし分母を全分岐数とする百分率により定義されている。従って図１０の要素からＣ０テストカバレージ、Ｃ１テストカバレージは容易に計算できることは当業者には自明である。このためＣ０テストカバレージ及びＣ１テストカバレージを図１０から導くための計算及び表示方法に関する説明は煩雑を避けるため省略する。
【００３１】
以上により、（１）一つのコンパイラ仕様に対応する宣言文と命令文とコメント等から構成される既存の完成又は半完成プログラムを格納するファイル等の手段（ここではテスト対象プログラム格納ファイルと呼ぶ）と、（２）テスト対象プログラム格納ファイルの内容を複写して格納するファイル等の手段（ここではカバレージテストレディープログラムファイルと呼ぶ）と、（３）カバレージテストレディープログラムファイルに格納された既存の完成又は半完成プログラムを、「命令文」単位と「分岐等を含む命令文」は「命令文及びその内部における分岐の単位」に解析し、該「命令文」と「分岐等を含む命令文は命令文及びその内部における分岐の単位」に該プログラム内でユニークな識別記号（ここではプログラム内命令分岐一連番号と呼ぶ）を付加し、カバレージ情報蓄積ファイルに、命令もしくは命令内部分岐等の分類結果を示す記号（ここではＣ０対象Ｃ１対象分類記号と呼ぶ）とともに格納（ここではソース解析機能と呼ぶ）すると共に該カバレージテストレディープログラムファイル内にプログラム内命令分岐一連番号ごとに以下（５）に述べるコンパイラが解釈できる形式でカバレージ通過関数を生成してプログラムの一部として埋め込む手段（ここではソース解析・埋め込みプログラムと呼ぶ）と、（４）該プログラム内命令分岐一連番号対応に該Ｃ０対象Ｃ１対象分類記号と以下のカバレージ通過関数の実行結果を関連付けて記録するファイル等の手段（ここではカバレージ情報蓄積ファイルと呼ぶ）と、（５）該コンパイラ等に解釈可能な形式で存在し、該プログラム内命令分岐一連番号単位にユニークに生成され、実行された場合に記号（ここではカバレージ通過記号と呼ぶ）を該カバレージ情報蓄積ファイルに格納する関数等（ここではカバレージ通過関数と呼ぶ）の手段とを実現している。
【００３２】
本実施形態によれば（１），（２）及び（３）によりカバレージ情報蓄積ファイルに、プログラム内命令分岐一連番号と共にＣ０対象Ｃ１対象分類記号とともに格納（ここではソース解析機能と呼ぶ）するため、テストカバレージ対象を自動的に網羅抽出作表することが可能となる。また（１）、（２）、（３）、（４）、及び（５）によりシステム開発作業のテストデバッグにおいて、Ｃ０カバレージ、Ｃ１カバレージの取得のために対象プログラムのテスト実行状況チェックを手作業にかえてコンパイラ等で機械的に実施させることにより、テストデバッグの作業工数を削減することによりプログラム開発の生産性の向上を図ることができる。
【００３３】
また、テストケース記号単位にカバレージ通過記号を管理することにより、テストケースの良否を判定することもできるという効果もある。
【００３４】
【発明の効果】
本発明によれば、より容易にソフトウエアのデバッグを支援することが可能になる。
【図面の簡単な説明】
【図１】本実施例の機器構成図
【図２】本実施例の概要図
【図３】本実施例のテスト対象プログラム格納ファイル
【図４】本実施例の解析記録プログラム
【図５】本実施例のカバレージ情報蓄積ファイル
【図６】テストケースファイル
【図７】本実施例のテスト対象プログラムの一例
【図８】本実施例のカバレージテストプログラムファイルの一例
【図９】本実施例のカバレージ情報蓄積ファイルの一例（解析記録プログラム実施後）
【図１０】本実施例のカバレージ情報蓄積ファイルの一例欠番（カバレージ用データ取得処理実施後）
【符号の説明】
１０１　ＣＰＵ
１０２　メモリ
１０３　外部記憶装置
１０４　入力装置
１０５　表示装置
１０６　プリンタ
２０１　ソースプログラム
２０２　解析記録プログラム
２０３　カバレージテストレディープログラム格納ファイル
２０６　カバレージ情報蓄積ファイル
２０７　コンパイル処理
２０８　オブジェクトモジュール
２０９　カバレージ用データ取得処理
３０１　テスト対象プログラム格納ファイル
３０２　ソースプログラム
４０１　命令複写処理
４０２　プログラム内命令分岐一連番号付加処理
４０３　Ｃ０対象Ｃ１対象分類記号格納処理
４０４　カバレージ通過関数追記処理
４０５　命令文解析完了判定処理
５０１　プログラム内命令分岐一連番号
５０２　テストケース記号
５０３　Ｃ０対象Ｃ１対象分類記号
５０４　カバレージ通過記号
５０５　カバレージ情報蓄積ファイル
６０１　テストケースファイル
６０２　テストケース記号
６０３　テストケースの管理コメント
１１０１　プログラム内命令分岐一連番号
１１０２　テストケース記号
１１０３　Ｃ０対象Ｃ１対象分類記号
１１０４　カバレージ通過記号
１２０１　プログラム内命令分岐一連番号
１２０２　テストケース記号
１２０３　Ｃ０対象Ｃ１対象分類記号
１２０４　カバレージ通過記号
【図１】
2004102742.tif 000003
【図２】
2004102742.tif 000004
【図３】
2004102742.tif 000005
【図４】
2004102742.tif 000006
【図５】
2004102742.tif 000007
【図６】
2004102742.tif 000008
【図７】
2004102742.tif 000009
【図８】
2004102742.tif 000010
【図９】
2004102742.tif 000011
【図１０】
2004102742.tif 000012