(57)【特許請求の範囲】
【請求項１】
ソフトウエアの開発におけるテストにおけるカバレージ情報取得方法において、
前記ソフトウエアに対して、テストデータを読み込ませることで、テストを実行し、
前記テストの際に、前記ソフトウエアの所定箇所毎に、通過情報であるカバレージ情報を取得し、当該カバレージ情報として、前記テストデータとして用いる変数の名称である通過保持変数名および当該変数名に対応したテストデータとして用いる変数に代入する値である通過時保持変数値を取得し、
取得されたカバレージ情報を、前記所定箇所毎に出力することでどのテストデータを用いて当該所定箇所を通過したかを確認可能であることを特徴とするカバレージ情報取得方法。
【請求項２】
請求項１に記載のカバレージ情報取得方法において、
前記カバレージ情報の取得は、前記ソフトウエアのソースコードに埋め込まれたカバレージ取得機能により実行することで実現することを特徴とするカバレージ情報取得方法。
【請求項３】
請求項１または２のいずれかに記載のカバレージ情報取得方法において、
前記カバレージ情報の出力は、前記所定箇所の内容を示すソースコードと対応付けて出力することを特徴とするカバレージ情報取得方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウエア開発のテストにおいて、カバレージ情報を取得するための技術に関する。
【背景技術】
【０００２】
ソフトウエアの開発においては、開発されたものをテストすることが通常行われている。このテストにおいては、ソフトウエア（プログラム）のテストがどれだけ網羅されているかを示す指標として、カバレージ情報が用いられている。つまり、テストの抜けがないかを、カバレージ情報を用いて把握することが一般的になされている。
【０００３】
このテスト全体の効率化を目的とする従来技術として、特許文献１がある。特許文献１では、マーキングされたソースコードを次のコンパイルにそのまま利用し、テストカバレージ処理の効率向上が可能なテストカバレージマーク技術が開示されている。より詳細には、ソースプログラム１０から、対象プロセッサ２により、通過情報が取得され共有メモリ３に格納され、通過情報読出プロセッサ５により、読み出される通過情報は、クライアント端末器６に転送され、クライアント端末器６により、ファイル名が検出された全ソースコードが外部メモリ７に格納され、行毎に検出された通過情報に対応するソースコード行上のセミコロンが検索され、セミコロンの後に通過回数のデータがマーキングされ、ソースプログラムの加工なしに、テストの実行、デバッグ、テストカバレージ計測を一貫して行い、マーキングされたソースコードを次のコンパイルにそのまま利用し、テストカバレージ計測を効率的に行い、計測状態の履歴累積した適確な把握が可能になる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−９１７９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ここで、ソフトウエアのテストにおいては、単にテストしただけでは不十分であり、その詳細を確認する必要がある。つまり、どのようなテストが行われたかを確認、把握できないと、十分なテストがされているかが不明である。
【課題を解決するための手段】
【０００６】
上記の課題を解決するために、本発明では、テスト対象のソフトウエア（プログラム）について、その通過情報を取得し、その内容を出力するものである。より詳細には、被テストソフトウエア（プログラム）に対して、カバレージ取得機能を埋め込んだソースコードを生成し、テストデータを読み込んでテストを実行する際に、そのカバレージ取得機能を機能させるものである。
【発明の効果】
【０００７】
本発明によれば、テスト対象の通過情報を入手することが可能になる。
【図面の簡単な説明】
【０００８】
【図１】本発明の一実施例における計算機を示す図。
【図２】本発明の一実施例における処理概要を示す図。
【図３】本発明の一実施例で用いるテスト対象プログラム格納ファイルを示す図。
【図４】本発明の一実施例の処理内容を示すフローチャート。
【図５】本発明の一実施例で用いるカバレージ情報蓄積ファイルの内容を示す図。
【図６】本発明の一実施例で用いる取得対象変数格納ファイルの内容を示す図。
【図７】本発明の一実施例で用いるテストデータの内容を示す図。
【図８】本発明の一実施例で用いるテスト対象プログラム格納ファイルに格納されたソースプログラムの内容を示す図。
【図９】本発明の一実施例で用いるカバレージ通過関数とともに格納された変換後ソースの内容を示す図。
【図１０】本発明の一実施例で用いる解析処理を実行した結果生成されたカバレージ情報蓄積ファイルの内容を示す図。
【図１１】本発明の一実施例で用いるカバレージ用データ取得処理を実行した結果としてのカバレージ情報蓄積ファイルの内容を示す図。
【発明を実施するための形態】
【０００９】
以下、本発明の一実施例を図面を用いて、詳細に説明する。
図１は本実施例を実施する計算機の機器構成図であり、ＣＰＵ１０１，メモリ１０２，外部記憶装置１０３，入力装置１０４，表示装置１０５，プリンタ１０６から構成されている。
【００１０】
図２は、本実施例の処理内容の概要図である。２０２は、図３の説明として後述するテスト対象プログラム格納ファイルに格納されている、テスト対象である既存の完成又は半完成プログラムであるソースプログラム２０１を参照し、ソースプログラム２０１の内容を複写する。複写したソースプログラムに対して分析を行い、「命令文」単位に図４にて後述するプログラム行番号を付加し、また図６にて後述する取得対象変数格納ファイルに格納されている変数名を取得・保持し、プログラム行番号ごとに、該コンパイラが解釈できる形式でカバレージ通過関数を生成し、変換後ソース２０３にプログラムの一部として追記する。さらに分析結果として上記処理にて取得できる各情報をカバレージ情報蓄積ファイル２０７に格納する図４にて後述する機能「カバレージ通過情報取得処理」を追記する。このソースプログラムをテストプログラム２０３とする。
【００１１】
そして、この一連の処理２０２を解析処理とする。２０４はオブジェクトモジュール生成手順を示す。ここではテストプログラム２０３を参照して、コンパイラを使ってオブジェクトモジュール２０５を生成している。コンパイラを使用してオブジェクトモジュールを生成する方法は当業者には周知であるため、煩雑をさけるために説明を省略するがここではコンパイル処理と呼ぶ。
【００１２】
２０６は、テスト実行手順である。生成されたオブジェクトモジュール２０５をテストケースに対応する環境とリンクしてオブジェクトモジュール２０５を実行する手順である。テストケースに対応する環境作成は当業者には容易であると考えられるためここでの説明は省略する。
【００１３】
２０６は、変換後ソース２０３に追記された上記及び図９の説明として後述するカバレージ通過関数が実行されることにより、図９の説明として後述するカバレージ通過記号を上記及び図４の説明として後述する該プログラム行番号対応に上記および後述のカバレージ通過記号および通過時保持変数名、通過時保持変数値とカバレージ通過関数の実行結果を関連付けてカバレージ情報蓄積ファイル２０７に記録する処理である。ここでは２０６をカバレージ用データ取得処理と呼ぶことにする。
【００１４】
図３は、ソースプログラムを格納するファイルであるテスト対象プログラム格納ファイルを示す図で、３０１はテスト対象プログラム格納ファイルを示し、３０２は図２の２０１として示したテスト対象である既存の完成または半完成プログラムであるソースプログラムを示す。
【００１５】
図４は、図２の２０２を実施するための処理手順を示すフローチャートであり、以下説明していく。
４０１は、テスト対象プログラム格納ファイルに格納されたソースプログラム２０１を複写し、変換後ソース２０３に格納する処理を示す。この処理方法は当業者に自明である。この処理を命令文複写処理と呼ぶ。
【００１６】
４０２は、変換後ソース２０３に格納された既存の完成又は半完成プログラムから「命令文」の終わりを示す”；”などの記号をキーとして「命令文」単位に取り出し、「命令文」単位にプログラム行番号を付加する処理を示す。この処理をプログラム行番号付加処理と呼ぶ。
４０３は、４０２ステップにおいて「命令文」単位に取り出し、プログラム行番号を付加した「命令文」に対し、図６にて後述する取得対象変数名６０２を用いた「命令文」、つまり「命令文」内に取得対象変数名６０２が含まれているかを判定し、含まれていれば以降のプログラム行番号を付加した「命令文」に対し、４０４にて後述するカバレージ通過関数を生成する際に、図５にて後述する通過時保持変数名５０４及び通過時保持変数値５０５を併せて記録するカバレージ通過関数を生成するためにプログラム行番号と取得対象変数名６０２の情報を内部に保持する。ここで述べた仕様を提示すれば当業者ならば容易に該カバレージ通過関数をプログラムできると考えられる。４０３を取得対象変数判定処理と呼ぶ。
【００１７】
４０４は、変換後ソース２０３に格納された既存の完成又は半完成プログラムに、「命令文」に付加されたプログラム行番号対応に、「該プログラム行番号情報を内部に持ち、実行時に前述のカバレージ情報蓄積ファイル２０７に対し、内部のプログラム行番号対応に一致する、（以下カバレージ通過記号と呼ぶ一つの記号）および前述した取得対象変数判定処理４０３で得た図５にて後述する通過時保持変数名５０４及び通過時保持変数値５０５を併せて記録する機能を持ち、前述のコンパイラ等に解釈可能な形式で存在する」カバレージ通過関数を生成して追記する処理である。ここで述べた仕様を提示すれば当業者ならば容易に該カバレージ通過関数をプログラムできると考えられる。４０４をカバレージ通過関数追記処理と呼ぶ。
【００１８】
４０５は、解析完了判定を行う。テスト対象プログラム格納ファイルに格納されたソースプログラム２０１の数と変換後ソース２０３に格納された既存の完成又は半完成プログラムの数を比較し、数が一致すればすべてのソースプログラム２０１に対して４０１、４０２、４０３、４０４を実施したと判断して終了し、一致していなければ４０１から繰り返し処理を行う。４０５を解析完了判定処理と呼ぶ。
【００１９】
図５に、本実施例のカバレージ情報蓄積ファイル２０７の構造を示す。カバレージ情報蓄積ファイル５０１はプログラム行番号５０２、カバレージ通過記号５０３、通過時保持変数名５０４、通過時保持変数値５０５の４つの項目より構成されている。
プログラム行番号５０２には、変換後ソース２０３に格納された既存の完成又は半完成プログラムにおける、「命令文」単位に対し付加したプログラム行番号を格納する。
カバレージ通過記号５０３には変換後ソース２０３に埋め込まれたカバレージ通過関数がテスト実行時に前述のカバレージ通過記号を記入する。
【００２０】
通過時保持変数名５０４は、プログラム行番号５０２に対応した前述のカバレージ通過関数にて出力される、図６にて後述する取得対象変数名６０２を取得し格納する。
通過時保持変数名５０５は、通過時保持変数名５０４の値（以下、通過時保持変数値と呼ぶ）を格納する。
【００２１】
図６は、通過時保持変数名５０４に格納する取得対象変数名を格納するファイルを示す図で、６０１は取得対象変数格納ファイルを示し、６０２は通過時保持変数名５０４に格納する取得対象変数名を示す。６０２の格納方法については、当業者には自明である。
【００２２】
図７に、変換後ソース２０３を２０６のカバレージ用データ取得処理を行う際に用いるテストデータを示す。変数名７０１はテストデータとして用いる変数の名称が格納されている。テストデータ７０２は、変数名７０１に対応したテストデータとして用いる変数に代入する値である。
【００２３】
図８に、テスト対象プログラム格納ファイルに格納されたソースプログラムの一例を示す。図９に、図８の一例を含んだテスト対象プログラム格納ファイルに格納されたソースプログラムを複写し、カバレージ通過関数とともに格納された変換後ソースの図８に相当する部分の一例を示す。太字になっている部分は、カバレージ通過関数を示す。カバレージ通過関数はプログラム行番号対応に、「該プログラム行番号情報を内部に持ち、実行時に前述のカバレージ情報蓄積ファイル２０７に対し内部のプログラム行番号対応を参照してカバレージ通過記号と呼ぶ１つの記号および通過時保持変数名、通過時保持変数値を記録する機能を持ち、前述のコンパイラ等に解釈可能な形式」で存在している。
【００２４】
図１０は、図８に示したテスト対象プログラム格納ファイルに格納されたソースプログラムの一例に対し、２０２で示した解析処理を実行した結果生成されたカバレージ情報蓄積ファイル２０７の一例である。ここでは１００２プログラム行番号にデータ１，２，３，４，５，６が生成される。カバレージ通過記号１００３、通過時保持変数名１００４、通過時保持変数値１００５には解析処理実施段階ではデータは入力されていない。
図１１は、図７のテストデータを用いて２０６で示したカバレージ用データ取得処理を実行した結果としてのカバレージ情報蓄積ファイル２０７の一例である。
【００２５】
図１１には、２０６で示したテストの実行結果が記録されている。１１０２のプログラム行番号、１１０３のカバレージ通過記号、１１０４の通過時保持変数名、１１０５の通過時保持変数値が格納されている。ここで、プログラム行番号に対応する通過時保持変数名および通過時保持変数値を確認することで、該命令文を通過した際に保持していた変数名およびその変数の値を確認することができる。
【符号の説明】
【００２６】
１０１…ＣＰＵ、１０２…メモリ、１０３…外部記憶装置、１０４…入力装置、１０５…表示装置、１０６…プリンタ
【図１】
0005764521.tif 000002
【図２】
0005764521.tif 000003
【図３】
0005764521.tif 000004
【図４】
0005764521.tif 000005
【図５】
0005764521.tif 000006
【図６】
0005764521.tif 000007
【図７】
0005764521.tif 000008
【図８】
0005764521.tif 000009
【図９】
0005764521.tif 000010
【図１０】
0005764521.tif 000011
【図１１】
0005764521.tif 000012