(57)【要約】【課題】  本発明の目的は、カバレージを取得したプログラムに修正を加えた際、取得したカバレージ結果と修正後のプログラムの内容を比較し、修正を加えた箇所、及び修正を加えた箇所以降に実行する命令部分のみのカバレージをクリアする事である。【解決手段】  図１において、実行部１０１がディスプレイおよびキーボード１０２から設定された名称の被テストプログラム１０３を入力し、実行する事でカバレージ結果１０４を出力する。被テストプログラム１０３に修正を加えて再度実行する際、カバレージ結果１０４と修正後の被テストプログラム１０４を比較し、修正を加えた箇所、及び修正を加えた箇所以降に実行する命令部分のみのカバレージをクリアする。【選択図】図１
2006178799.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの実行時に実施するカバレージ取得作業において、これまでの実行で蓄積されたカバレージを持つプログラムに対して修正を加える場合、修正を加えた命令および修正を加えた命令より後に実行する命令についてのみカバレージ情報をクリアするカバレージ取得方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラムのカバレージ取得に関し、一旦カバレージを取得したプログラムに修正を加え、再度カバレージを取得する作業に関する。
【背景技術】
【０００２】
近年カバレージ取得をサポートしたソフトウェアは多数リリースされている。その中で、カバレージを一旦取得したプログラムに対して修正を加えた場合のカバレージ取得方式は大きく２つの方式を採用している。まず１つは、修正を加えた関数(あるいはメソッド)全体のカバレージをクリアするというものである。例えば、Ａ、Ｂ、Ｃという関数のカバレージを取得した後、関数Ａに修正を加えた場合、関数Ａのカバレージは０％にクリアされるという方式である。もう１つは一旦カバレージを取得したプログラムに修正を加える場合、それまでに取得したカバレージは保持した上で、新たに追加、変更を加えた命令行のみを対象にカバレージを取得する、というものである。例えば、１００命令を記述してあるプログラムのカバレージを一旦取得した後で、新たに１０命令を追記した場合、元々記述されていた１００命令に対するカバレージ結果はそのまま保持する事とし、新たに追加した１０命令を対象にカバレージを再取得する、という考えである。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
修正を加えたプログラムのカバレージを全てクリアして、再度カバレージを０％の状態から１００％になるまでカバレージを取得し直す作業方法では、プログラムを修正する度に、カバレージが０％の状態からカバレージ取得を実施し直す必要があり、カバレージ取得工数が増加してしまう。また、一度実行した命令行について、その後どのような修正を加えてもカバレージを保持するという考え方は、追加、修正を加えた命令行が、その後に実行する命令にどのような影響を与えるかが分からないのに、“カバレージ取得済であり品質は確保されている”と見なしている為、品質面で問題が残る。これに対し本発明は以下２点を目的としている。まず第１点目は、一旦カバレージを取得したプログラムに修正を加えた場合でも、修正を加えたプログラムのカバレージを0%にクリアする事を避け、プログラム修正した後のカバレージ再取得工数を極力抑える事である。第２点目は、一旦カバレージを取得したプログラムに対して修正を加えた場合、修正した箇所および修正した箇所以降に実行する部分のみのカバレージをクリアすることで、テスト未実行部分を開発者に明示し、未実行部分を実行するよう開発者に促す。これにより品質を確保したプログラムの開発を可能とする事である。
【課題を解決するための手段】
【０００４】
第１および第２の目的を達成する為の手段を以下に記述する。プログラムの実行時にカバレージを取得する際、カバレージ結果を格納するワークエリアおよびファイル（以下：カバレージ結果）を用意する。被テストプログラムを設定する際に、カバレージ結果にソースプログラム中の実行命令行を出力する。続いて、被テストプログラムの実行を行った際、カバレージ結果に格納されている命令行において、実行した命令行には通過情報を格納する。プログラムに修正を加えて、再度実行する場合は、修正を加えたプログラムを再度実行する際、修正後のプログラムと、カバレージ結果を先頭から比較する。この比較の結果、内容が異なる命令が存在した場合、修正が加えられたと見なし、修正が加えられた行、およびその後に実行される命令行のカバレージをクリアする。
【発明の効果】
【０００５】
本発明によれば、以下２点の効果が期待出来る。まず第１点目は、修正を加えたプログラムのカバレージを０％にクリアする事を避ける事で、カバレージを再度取得する工数を極力抑える事である。第２点目は、プログラムに対して修正を加えた場合、修正した箇所および修正した箇所以降に実行する部分のみのカバレージをクリアすることで、テスト未実行部分を開発者に明示し、未実行部分を実行するよう開発者に促す事が出来る。これにより品質を確保したプログラムの開発が可能となる事である。
【発明を実施するための最良の形態】
【０００６】
カバレージを取得したプログラムと、カバレージを取得した後に修正を加えたプログラムの間で、記述内容の差分を抽出できるように、カバレージ結果を用意する。カバレージ結果の中にプログラムの各命令行および各命令行に対する通過情報を記録しておく。
【０００７】
以下、本発明の実施例を図面を用いて説明する。図１は本発明の実施例を示すシステム構成図であり、図２は本発明の実施例を実施するための処理フローである。図１において、ディスプレイおよびキーボード１０２は、処理結果を画面表示したりユーザ入力を受け付けたりする。実行部１０１はＣＰＵを有し、図２の処理フローを実行する。被テストプログラム１０３は実行を行い、カバレージ取得の対象となるプログラムである。カバレージ結果１０４は被テストプログラム１０３を実行した結果、取得したカバレージ結果を格納するファイルであり、被テストプログラムに記述された関数名、命令行、命令行の通過情報を保持する。図２の処理フローに基づき、実施例の処理を説明する。まず今回カバレージを取得する被テストプログラムの設定を行う（ステップ２０１）。図９に示す被テストプログラム名称入力画面を表示する事で、ユーザはこれからカバレージを取得する被テストプログラムの名称を設定出来る。被テストプログラム名入力エリア９０１に設定した被テストプログラム名称に間違いがなく、実行およびカバレージ取得を実施する場合は、名称設定ボタン９０２を選択する。実行およびカバレージ取得を中止または終了したい場合は、終了ボタン９０４を選択する。
【０００８】
ユーザが名称設定ボタン９０２を選択した場合、実行部１０１は被テストプログラム１０３を入力する。被テストプログラム１０３はソースプログラムであり、プログラム名、実行する命令などが記述されている。まず実行部１０１は修正前の被テストプログラム１０３を入力する。修正前に被テストプログラムの内容を図３に示す。実行部１０１が修正前の被テストプログラム１０３を入力した後、実行部１０１はカバレージ結果１０４が存在するか確認を行う（ステップ２０２）。被テストプログラムはこの段階ではまだ実行していない為、カバレージ結果１０４は存在しない。カバレージ結果１０４が存在しない場合、新規にカバレージ結果１０４を作成する（ステップ２０５）。カバレージ結果１０４の内容を図５に示す。カバレージ結果１０４の内容は、図５に示す通りプログラム中の命令５０２と各命令の実行／未実行状態を示す通過情報５０１から構成される。通過情報５０１は実行済の命令行に対して“＊”を出力するが、この段階ではまだプログラムを実行していないので、通過情報５０１はすべて空欄のままである。実行部１０１は、カバレージ結果１０４の内容を読み込み、カバレージ結果画面として、ディスプレイ１０２に表示する（ステップ２０６）。被テストプログラムの実行前のカバレージ結果画面の例を図１０に示す。図１０のカバレージ結果画面は、プログラム名１００１、総行数１００２、通過行数１００３、カバレージ(％)１００４、通過情報１００５、命令行１００６から構成されている。この段階ではまだ被テストプログラムを実行していないので、通過情報１００５は全て未通過を意味する“−”となっている。従って、総行数１００２が６行に対して、通過行数１００３が０行の為、カバレージ（％）１００４は、０／６＊１００＝０（％）となる。
【０００９】
図９においてユーザが実行ボタン９０３を選択すると、実行部１０１は被テストプログラム１０３を実行し（ステップ２０７）、カバレージ結果１０４の内容を更新する（ステップ２０８）。更新されたカバレージ結果１０４の内容を図６に示す。被テストプログラムを実行した後のため、通過情報６０１が更新している（通過済の命令行に“＊”を出力する）。
【００１０】
実行部１０１は、被テストプログラムの実行が終了した後、カバレージ結果１０４の内容を読み込み、カバレージ結果画面として、ディスプレイ１０２に表示する（ステップ２０９）。被テストプログラムの実行後のカバレージ結果画面の例を図１１に示す。図１１のカバレージ結果画面は、プログラム名１１０１、総行数１１０２、通過行数１１０３、カバレージ(％)１１０４、通過情報１１０５、命令行１１０６から構成されている。被テストプログラムを実行させた後なので、通過情報１１０５は全て通過を意味する“○”となる。
【００１１】
総行数１１０２が６行に対して、通過行数１１０３が６行の為、カバレージ（％）１１０４は、６／６＊１００＝１００（％）となる。
【００１２】
続いて、被テストプログラムに修正を加えた後に再度実行してカバレージを取得する例を図２の処理フローに基づいて説明する。まず修正後の被テストプログラム１０３を用意する。修正後の被テストプログラムの内容を図４に示す（図４に示す修正後の被テストプログラムは、図３に示す修正前の被テストプログラムに比べて、“k = 3”という命令行が、“k = 10”に変更されている）。
【００１３】
修正前の被テストプログラムの実行およびカバレージ取得と同様、図９に示す被テストプログラム名称入力画面に対し、ユーザは修正後の被テストプログラムの名称を設定する。被テストプログラム名入力エリア９０１に設定した被テストプログラム名称に間違いがなく、実行およびカバレージ取得を実施する場合は、名称設定ボタン９０２を選択する（ステップ２０１）。
【００１４】
ユーザが名称設定ボタン９０２を選択した場合、実行部１０１は修正後の被テストプログラム１０３を入力する。実行部１０１が修正後の被テストプログラム１０３を入力した後、実行部１０１はカバレージ結果１０４が存在するかの確認を行う（ステップ２０２）。被テストプログラム１０３は既に実行済であり、カバレージ結果１０４は既に作成されているので、修正後の被テストプログラム１０３とカバレージ結果１０４を比較する（ステップ２０３）。図４に示す修正後の被テストプログラム１０３と、図６に示すカバレージ結果１０４の内容を比較すると、命令行の先頭から３行目において、図４に示す修正後の被テストプログラム１０３は“k = 10”に対して、図６に示すカバレージ結果１０４は“k = 3”であり内容が異なる。図４に示す修正後の被テストプログラム１０３とカバレージ結果１０４の内容が異なる場合は、図４に示す修正後の被テストプログラム１０３に記述された命令行をカバレージ結果１０４に出力する（ステップ２０４−１）。図４に示す修正後の被テストプログラムの内容をカバレージ結果に出力した例を図７に示す。図７に示すよう、“k = 3”という命令行を“k = 10”に更新する。また、通過情報７０１に関して、“k = 10”および“k = 10”以降の命令行の通過情報７０１（“＊”）をクリアする（ステップ２０４−２）。
【００１５】
実行部１０１は、カバレージ結果１０４の内容を読み込み、カバレージ結果画面として、ディスプレイ１０２に表示する（ステップ２０６）。修正後の被テストプログラム１０３の実行前のカバレージ結果画面の例を図１２に示す。図１２のカバレージ結果画面は、プログラム名１２０１、総行数１２０２、通過行数１２０３、カバレージ(％)１２０４、通過情報１２０５、命令行１２０６から構成されている。図７に示すカバレージ結果１０４の内容に従い、命令行１２０６における３行目は“k = 10”となる。また、通過情報１２０５に関して、“k = 10”および“k = 10”以降の命令行は全て未通過を意味する“−”となる。総行数１２０２が６行に対して、通過行数１２０３が２行となった為、カバレージ（％）１２０４は、２／６＊１００＝３３（％）となる。
【００１６】
図９において、ユーザが実行ボタン９０３を選択すると、実行部１０１は修正後の被テストプログラム１０３を実行し（ステップ２０７）、カバレージ結果１０４の内容を更新する（ステップ２０８）。更新されたカバレージ結果１０４の内容を図８に示す。修正後の被テストプログラム１０３を実行した後のため、通過情報８０１が更新している（通過済の命令行に“＊”を出力する）。
【００１７】
実行部１０１は、修正後の被テストプログラム１０３の実行が終了した後、カバレージ結果１０４の内容を読み込み、カバレージ結果画面として、ディスプレイ１０２に表示する（ステップ２０９）。修正後の被テストプログラムを実行した後のカバレージ結果画面の例を図１３に示す。図１３のカバレージ結果画面は、プログラム名１３０１、総行数１３０２、通過行数１３０３、カバレージ(％)１３０４、通過情報１３０５、命令行１３０６から構成されている。図８に示すカバレージ結果１０４の内容に従い、通過情報１３０５は全て通過を意味する“○”となる。総行数１３０２が６行に対して、通過行数１３０３が６行の為、カバレージ（％）１３０４は、６／６＊１００＝１００（％）となる。
【産業上の利用可能性】
【００１８】
本発明はソフトウェアの品質を確保する為のカバレージ取得作業に関する。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施例を示すシステム構成図である。
【図２】本発明の実施例を示す処理フローである。
【図３】被テストプログラム（修正前）の例である。
【図４】被テストプログラム（修正後）の例である。
【図５】カバレージ結果（被テストプログラム修正前、テスト実行前）の例である。
【図６】カバレージ結果（被テストプログラム修正前、テスト実行後）の例である。
【図７】カバレージ結果（被テストプログラム修正後、テスト実行前）の例である。
【図８】カバレージ結果（被テストプログラム修正後、テスト実行後）の例である。
【図９】被テストプログラム名入力画面の例である。
【図１０】カバレージ結果画面（被テストプログラム修正前、テスト実行前）の例である。
【図１１】カバレージ結果画面（被テストプログラム修正前、テスト実行後）の例である。
【図１２】カバレージ結果画面（被テストプログラム修正後、テスト実行前）の例である。
【図１３】カバレージ結果画面（被テストプログラム修正後、テスト実行後）の例である。
【符号の説明】
【００２０】
１０１…実行部、１０２…ディスプレイおよびキーボード、１０３…被テストプログラム、１０４…カバレージ結果。
【図１】
2006178799.tif 000003
【図２】
2006178799.tif 000004
【図３】
2006178799.tif 000005
【図４】
2006178799.tif 000006
【図５】
2006178799.tif 000007
【図６】
2006178799.tif 000008
【図７】
2006178799.tif 000009
【図８】
2006178799.tif 000010
【図９】
2006178799.tif 000011
【図１０】
2006178799.tif 000012
【図１１】
2006178799.tif 000013
【図１２】
2006178799.tif 000014
【図１３】
2006178799.tif 000015