(57)【要約】      （修正有）【課題】ステートメントおよびブランチの粒度でのソースコード変更に対して影響を受けるテスト項目を抽出する装置を提供する。【解決手段】算出部２１は、テスト項目のデータテーブル１１１と変更前ソースコードのデータテーブル１２１をもとに、複数のテスト項目のそれぞれについて、変更前ソースコードに従ってソフトウェアテストを実行した場合に、変更前ソースコードにおけるステートメント及びブランチのそれぞれについて実行されるか否かを示すデータテーブル１４１を算出する。比較部２２は、変更前／後ソースコードのデータテーブルを比較して、変更されたステートメント番号及びブランチ番号のデータテーブルを算出する。テスト項目抽出部２３は、実行ステートメント及びブランチのデータテーブルと、変更されたステートメント番号及びブランチ番号のデータテーブル２２１とに基づいて、ソースコードの変更に対して影響を受けるテスト項目を抽出する。【選択図】図２
2018097785.tif 000002
【特許請求の範囲】
【請求項１】
複数のテスト項目を含む、テスト項目のデータテーブルを記憶するテスト項目記憶部と、
変更前ソースコードのデータテーブルを記憶する変更前ソースコード記憶部と、
変更後ソースコードのデータテーブルを記憶する変更後ソースコード記憶部と、
実行ステートメントおよびブランチのデータテーブルを記憶する実行ステートメントおよびブランチ記憶部と、
前記テスト項目のデータテーブルと前記変更前ソースコードのデータテーブルをもとに、前記複数のテスト項目のそれぞれについて、変更前ソースコードに従ってソフトウェアテストを実行した場合に、変更前ソースコードにおけるステートメントおよびブランチのそれぞれについて実行されるか否かを示す、実行ステートメントおよびブランチのデータテーブルを算出する実行ステートメントおよびブランチ算出部と、
前記変更前ソースコードのデータテーブルと前記変更後ソースコードのデータテーブルとを比較して、変更されたステートメント番号およびブランチ番号のデータテーブルを算出するステートメントおよびブランチ比較部と、
前記実行ステートメントおよびブランチのデータテーブルと、前記変更されたステートメント番号およびブランチ番号のデータテーブルとに基づいて、前記複数のテスト項目からソースコードの変更に対して影響を受けるテスト項目を抽出するテスト項目抽出部と、
ソースコード変更に対して影響を受けるテスト項目を表示するテスト項目表示部とを有するテスト支援装置。
【請求項２】
前記変更前ソースコードのデータテーブルと前記変更後ソースコードのデータテーブルには、ソースコード本文データが１行に複数ステートメントを含んでいる場合に、前処理によって、１行に１ステートメントを含むように行分割されたソースコード本文データが記憶される請求項１記載のテスト支援装置。
【請求項３】
前記実行ステートメントおよびブランチ算出部は、カバレッジ測定により、変更前ソースコードの各文がテストで実行されたかどうか判別する請求項１記載のテスト支援装置。
【請求項４】
コンピュータを、
複数のテスト項目を含む、テスト項目のデータテーブルを記憶するテスト項目記憶部と、
変更前ソースコードのデータテーブルを記憶する変更前ソースコード記憶部と、
変更後ソースコードのデータテーブルを記憶する変更後ソースコード記憶部と、
実行ステートメントおよびブランチのデータテーブルを記憶する実行ステートメントおよびブランチ記憶部と、
前記テスト項目のデータテーブルと前記変更前ソースコードのデータテーブルをもとに、前記複数のテスト項目のそれぞれについて、変更前ソースコードに従ってソフトウェアテストを実行した場合に、変更前ソースコードにおけるステートメントおよびブランチのそれぞれについて実行されるか否かを示す、実行ステートメントおよびブランチのデータテーブルを算出する実行ステートメントおよびブランチ算出部と、
前記変更前ソースコードのデータテーブルと前記変更後ソースコードのデータテーブルとを比較して、変更されたステートメント番号およびブランチ番号のデータテーブルを算出するステートメントおよびブランチ比較部と、
前記実行ステートメントおよびブランチのデータテーブルと、前記変更されたステートメント番号およびブランチ番号のデータテーブルとに基づいて、前記複数のテスト項目からソースコードの変更に対して影響を受けるテスト項目を抽出するテスト項目抽出部と、
ソースコード変更に対して影響を受けるテスト項目を表示するテスト項目表示部として機能させるためのテスト支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア開発等において使用されるテスト支援装置、テスト支援プログラムに関する。
【背景技術】
【０００２】
ソフトウェア開発等においてはテスト支援装置が使用されている。テスト支援装置は、例えば、対象ソフトウェアを構成するソースコードのうちで変更された箇所を解析することにより、実施するテストの内容を示す既存テスト項目のうちからソースコード変更に対して影響を受けるテスト項目を抽出する機能を有する。
【０００３】
従来のテスト支援装置では、例えば特許文献１に記載のように、ソースコード内のステートメント間の依存関係を解析して振る舞いが変わる可能性のある出力を特定し、該当する出力を用いたテスト項目をソースコード変更に対して影響を受けるテスト項目として抽出するものがある。
【０００４】
また、従来のテスト支援装置では、例えば特許文献２に記載のように、ソースコード内のモジュール分割関係を解析して変更されたモジュールを特定し、該当するモジュールに対するテスト項目をソースコード変更に対して影響を受けるテスト項目として抽出するものがある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第４９３９９７３号公報
【特許文献２】特開２０１０−１２２９５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１の従来技術においては、ソースコード内のステートメント間の依存関係を解析する際にステートメントの表現する操作を解析するという動作であったため、多くのプログラミング言語ではステートメントの表現する操作を解析する手段を実装する必要がある、解析する手段を実装したとしても解析に時間がかかる等の問題があった。また、特許文献１の従来技術においては、ソースコード内の変更箇所をユーザが指定する必要があるため、ユーザの作業負担が大きい等の問題もあった。
【０００７】
特許文献２の従来技術においては、ソースコード内のモジュール分割関係を解析して変更されたモジュールを特定し、該当するモジュールに対するテスト項目をソースコード変更に対して影響を受けるテスト項目として抽出するという動作であったため、あるモジュールの一部を変更した場合にも同モジュールに対する既存テスト項目の全件が抽出されてテスト実施効率が悪い等の問題があった。
【０００８】
本発明は上記の課題を解決するためになされたものであり、変更前ソースコードのステートメントおよびブランチのうちで各テスト項目が実行したステートメントおよびブランチおよび変更前ソースコードと変更後ソースコードのステートメントおよびブランチの差分を突合することにより、既存テスト項目のうちからステートメントおよびブランチの粒度でのソースコード変更に対して影響を受けるテスト項目を抽出することを可能とするテスト支援装置、テスト支援プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
実施形態によれば、テスト支援装置は、複数のテスト項目を含むテスト項目のデータテーブルを記憶するテスト項目記憶部と、変更前ソースコードのデータテーブルを記憶する変更前ソースコード記憶部と、変更後ソースコードのデータテーブルを記憶する変更後ソースコード記憶部と、実行ステートメントおよびブランチのデータテーブルを記憶する実行ステートメントおよびブランチ記憶部と、前記テスト項目のデータテーブルと前記変更前ソースコードのデータテーブルをもとに、前記複数のテスト項目のそれぞれについて、変更前ソースコードに従ってソフトウェアテストを実行した場合に、変更前ソースコードにおけるステートメントおよびブランチのそれぞれについて実行されるか否かを示す、実行ステートメントおよびブランチのデータテーブルを算出する実行ステートメントおよびブランチ算出部と、前記変更前ソースコードのデータテーブルと前記変更後ソースコードのデータテーブルとを比較して、変更されたステートメント番号およびブランチ番号のデータテーブルを算出するステートメントおよびブランチ比較部と、前記実行ステートメントおよびブランチのデータテーブルと、前記変更されたステートメント番号およびブランチ番号のデータテーブルとに基づいて、前記複数のテスト項目からソースコードの変更に対して影響を受けるテスト項目を抽出するテスト項目抽出部と、ソースコード変更に対して影響を受けるテスト項目を表示するテスト項目表示部とを有する。
【図面の簡単な説明】
【００１０】
【図１】本実施形態におけるテスト支援装置の構成を示すブロック図。
【図２】本実施形態におけるテスト支援装置において実現される機能構成を示すブロック図。
【図３】本実施形態におけるテスト項目のデータテーブルの一例を示す図。
【図４】本実施形態における変更前ソースコードのデータテーブルの一例を示す図。
【図５】本実施形態における変更後ソースコードのデータテーブルの一例を示す図。
【図６】本実施形態における変更されたステートメント番号およびブランチ番号のデータテーブルの一例を示す図。
【図７】本実施形態における実行ステートメントおよびブランチのデータテーブルの一例を示す図。
【図８】本実施形態における実行ステートメントおよびブランチ算出部の処理を表すフローチャート。
【図９】本実施形態における変更されたステートメント番号およびブランチ番号の算出の具体例を示す図。
【図１０】本実施形態におけるテスト項目抽出部及びテスト項目表示部の処理を表すフローチャート。
【図１１】本実施形態におけるソースコード変更に対して影響を受けるテスト項目の具体例を示す図。
【図１２】本実施形態におけるソースコード変更に対して影響を受けるテスト項目のデータテーブルの一例を示す図。
【発明を実施するための形態】
【００１１】
以下、実施形態について図面を参照して説明する。
図１は、本実施形態におけるテスト支援装置１の構成を示すブロック図である。テスト支援装置１は、例えばパーソナルコンピュータによって実現される。テスト支援装置１は、プロセッサ２、メモリ３、記憶装置４、入力装置５、および表示装置６を有する。
【００１２】
プロセッサ２は、メモリ３に記憶された基本プログラム（ＯＳ）やアプリケーションプログラムを実行して、各種の機能を実現する。例えば、プロセッサ２は、テスト支援プログラムを実行することで、パーソナルコンピュータをテスト支援装置１として動作させる。プロセッサ２は、本実施形態におけるテスト支援プログラムを実行することにより、変更前ソースコードのステートメントおよびブランチのうちで各テスト項目が実行したステートメントおよびブランチおよび変更前ソースコードと変更後ソースコードのステートメントおよびブランチの差分を突合することにより、既存テスト項目のうちからステートメントおよびブランチの粒度でのソースコード変更に対して影響を受けるテスト項目を抽出することができる。
【００１３】
メモリ３は、プロセッサ２により実行されるプログラムや一時的なデータ等が記憶される。例えば、メモリ３には、記憶装置４から読み出されるテスト支援プログラム４Ａなどの各種プログラムの他、各種処理で使用されるデータが記憶される。
【００１４】
記憶装置４は、各種のプログラムや各種データが記憶される。記憶装置４に記憶されるプログラムには、テスト支援プログラム４Ａが含まれる。また、記憶装置４には、テスト支援プログラム４Ａに基づくテスト支援処理で使用されるデータを記憶する記憶部１０が設けられる。
【００１５】
表示装置６は、ＬＣＤ（Liquid Crystal Display）などであり、プロセッサ２の処理に応じた画面を表示させる。入力装置５は、キーボードやポインティングデバイスなどであり、作業者等により操作される。
【００１６】
図２は、本実施形態におけるテスト支援装置１において、プロセッサ２によりテスト支援プログラム４Ａを実行することにより実現される機能構成を示すブロック図である。テスト支援装置１では、テスト支援プログラム４Ａを実行することで、テスト支援処理部２０の機能が実現される。テスト支援処理部２０は、実行ステートメントおよびブランチ算出部２１、ステートメントおよびブランチ比較部２２、テスト項目抽出部２３、およびテスト項目表示部２４が含まれる。また、テスト支援処理部２０によるテスト支援処理で使用されるデータが記憶される記憶部１０には、テスト項目記憶部１１、変更前ソースコード記憶部１２、変更後ソースコード記憶部１３、実行ステートメントおよびブランチ記憶部１４が設けられる。
【００１７】
テスト支援装置１は、テスト支援処理部２０の処理により、変更前ソースコードのステートメントおよびブランチのうちで既存テスト項目のうちの各テスト項目が実行するステートメントおよびブランチを算出し、変更前ソースコードと変更後ソースコードのステートメントおよびブランチの差分を解析し、両者を突合する。これにより、既存テスト項目のうちからステートメントおよびブランチの粒度でのソースコード変更に対して影響を受けるテスト項目を抽出することが可能になる。
【００１８】
テスト項目記憶部１１は、テスト項目のデータテーブル１１１を記憶する。図３は、テスト項目のデータテーブル１１１の一例を示す図である。テスト項目のデータテーブル１１１には、例えば、テスト対象データ、テスト項番データ、テスト入力データ、期待出力データが格納されている。テスト入力データの列数は、テスト対象によって異なる。
【００１９】
図３に示すテスト項目のデータテーブル１１１では、例えば駐車場料金を処理するソフトウェアをテストするためのテスト項目を示すもので、テスト対象データとして「駐車場料金割引時間」が格納され、テスト入力データとして「利用金額」「映画利用（ＴＲＵＥまたはＦＡＬＳＥ）」が格納されている。また、期待出力データとしては「返値」「ログ（なしまたはあり）」が格納されている。
【００２０】
変更前ソースコード記憶部１２は、変更前ソースコードのデータテーブル１２１を記憶する。図４は、変更前ソースコードのデータテーブル１２１の一例を示す図である。変更前ソースコードのデータテーブル１２１には、ステートメント番号およびブランチ番号データ、変更前ソースコード本文データが格納されている。ステートメント番号およびブランチ番号データは、変更前ソースコード本文データから既存のカバレッジ測定ツール（例：ｇｃｏｖ）を利用することで算出できる。
【００２１】
変更前ソースコード本文データが１行に複数ステートメントを含んでいる場合には、該当行の複数ステートメントに一つのステートメント番号が割り振られる場合がある。この場合には、該当の複数ステートメントの一部を実行した際に複数ステートメントの全体が実行されたと測定されるとともに、該当の複数ステートメントの一部を変更した際に複数ステートメントの全体が変更されたと算出され、このため再実行する必要のないテスト項目まで抽出されてしまう。従って、変更前ソースコード本文データが１行に複数ステートメントを含んでいる場合には、前処理によって、１行に１ステートメントを含むように行分割してから、ステートメント番号およびブランチ番号データ、変更前ソースコード本文データを、変更前ソースコードのデータテーブル１２１に格納する。これにより、１ステートメントに一つのステートメント番号が割り振られるようになり、該当の複数ステートメントの一部に対応するテスト項目のみを抽出し、再実行する必要のないテスト項目の抽出を減らすことができる。
【００２２】
なお、変更前ソースコード本文データは、常に全てのソースコードを必要せず、少なくとも変更箇所を含むソースコードがあれ良い。例えば、対象ソフトウェアが複数のモジュールから構成されている場合に、変更箇所を含まない一部モジュールのソースコードが入手できない場合にも、その他のソースコードを変更前ソースコードのデータテーブル１２１に格納することで、テスト支援装置１によるテスト支援処理を実施できる。また、例えば、対象ソフトウェアが複数のモジュールから構成されていて、一部モジュールだけを変更している場合に、変更対象モジュールのソースコードだけを変更前ソースコードのデータテーブル１２１に格納してテスト支援処理を実施するようにしても良い。これにより、変更前ソースコード記憶部１２、変更後ソースコード記憶部１３、実行ステートメントおよびブランチ記憶部１４が利用する記憶容量を節約することができる。
【００２３】
変更後ソースコード記憶部１３は、変更後ソースコードのデータテーブル１３１を記憶する。図５は、変更後ソースコードのデータテーブル１３１の一例を示す図である。変更後ソースコードのデータテーブル１３１には、ステートメント番号およびブランチ番号データ、変更後ソースコード本文データが格納されている。ステートメント番号およびブランチ番号データは、変更後ソースコード本文データから一般的なカバレッジ測定ツール（例：ｇｃｏｖ）を利用することで算出できる。
【００２４】
変更前ソースコードのデータテーブル１２１に格納された変更前ソースコード本文データに対して、前述したように、１行に１ステートメントを含むように行分割の前処理をした場合には、変更後ソースコード本文データも同様に１行に１ステートメントを含むように行分割の前処理をする。
【００２５】
また、変更後ソースコード本文データも、前述した変更前ソースコード本文データと同様に、少なくとも変更箇所を含むソースコードがあればテスト支援装置１によるテスト支援処理を実行することが可能である。
【００２６】
実行ステートメントおよびブランチ算出部２１は、テスト項目記憶部１１からテスト項目のデータテーブル１１１、変更前ソースコード記憶部１２から変更前ソースコードのデータテーブル１２１をそれぞれ取得し、テスト項目のデータテーブル１１１と変更前ソースコードのデータテーブル１２１をもとに、実行ステートメントおよびブランチのデータテーブル１４１（図７参照）を算出して、実行ステートメントおよびブランチ記憶部１４に記憶する。実行ステートメントおよびブランチ算出部２１には、テスト項目の実行部２１１、テスト項目の実行ステートメントおよびブランチ算出部２１２、及びテスト項目の実行ステートメントおよびブランチ記憶部２１３が含まれる。それぞれの詳細については後述する。実行ステートメントおよびブランチのデータテーブル１４１は、テスト項目のデータテーブル１１１に記憶されたテスト項目（テスト対象データ）に対して、変更前ソースコードに従ってソフトウェアテストを実行した場合に、変更前ソースコードにおけるステートメントおよびブランチのそれぞれについて、実行されるか否かを示す実行有無データが記憶される。
【００２７】
ステートメントおよびブランチ比較部２２は、変更前ソースコード記憶部１２から変更前ソースコードのデータテーブル１２１、変更後ソースコード記憶部１３から変更後ソースコードのデータテーブル１３１をそれぞれ取得し、変更前ソースコードと変更後ソースコードとを比較して、変更されたステートメント番号およびブランチ番号のデータテーブル２２１を算出する。図６は、変更されたステートメント番号およびブランチ番号のデータテーブル２２１の一例を示す図である。図６に示す例では、例えばブランチ：３−Ｆ、ステートメント：１１、ステートメント：１４が変更されたことを示している。
【００２８】
実行ステートメントおよびブランチ記憶部１４は、実行ステートメントおよびブランチ算出部２１により算出された、実行ステートメントおよびブランチのデータテーブル１４１を記憶する。図７は、実行ステートメントおよびブランチのデータテーブル１４１の一例を示す図である。実行ステートメントおよびブランチのデータテーブル１４１には、例えば、テスト対象データ、テスト項番データ、ステートメント番号およびブランチ番号データ、テスト項番とステートメント番号およびブランチ番号に対応する実行有無データ（図７では「＋」が実行有りを示す）が格納されている。例えば、テスト項番データ１〜１４に対して、ステートメント：１が全て実行されることを示し、テスト項番データ１〜６に対して、ブランチ：３−Ｔが全て実行され、テスト項番データ７に対して、ブランチ：３−Ｆのみが実行されることを示している。
【００２９】
テスト項目抽出部２３は、実行ステートメントおよびブランチ記憶部１４から実行ステートメントおよびブランチのデータテーブル１４１を取得し、ステートメントおよびブランチ比較部２２により算出された変更されたステートメント番号およびブランチ番号のデータテーブル２２１をもとに、ソースコード変更に対して影響を受けるテスト項目のデータテーブル２３１（図１２参照）を抽出する。
【００３０】
テスト項目表示部２４は、テスト項目抽出部２３により抽出された、ソースコード変更に対して影響を受けるテスト項目のデータテーブル２３１をもとに、ソースコード変更に対して影響を受けるテスト項目を表示する。
【００３１】
次に、本実施形態におけるテスト支援装置１の動作（テスト支援処理）について説明する。
図８は、実行ステートメントおよびブランチ算出部２１の処理を表すフローチャートである。実行ステートメントおよびブランチ算出部２１は、テスト項目記憶部１１からテスト項目のデータテーブル１１１を取得し、テスト項目のデータテーブル１１１からテスト項目のテスト対象データ、テスト項番データ、テスト入力データを取得する。また、実行ステートメントおよびブランチ算出部２１は、変更前ソースコード記憶部１２から変更前ソースコードのデータテーブル１２１を取得する。実行ステートメントおよびブランチ算出部２１は、テスト項目のデータテーブル１１１から取得したテスト項目の全件分について、次に説明する処理を繰り返して実行する（ステップＡ１〜Ａ４）。
【００３２】
すなわち、実行ステートメントおよびブランチ算出部２１のテスト項目の実行部２１１は、テスト項目のデータテーブル１１１から１つのテスト項目のテスト対象データ、テスト項番データ、テスト入力データを取得し、これらのデータを用いた変更前ソースコードに対するソフトウェアテストを実施してカバレッジ測定する。カバレッジ測定により、変更前ソースコードの各文がテストで実行されたかどうかが判別される。
【００３３】
テスト項目の実行ステートメントおよびブランチ算出部２１２は、変更前ソースコード記憶部１２の変更前ソースコードのデータテーブル１２１からステートメント番号およびブランチ番号データ、変更前ソースコード本文データを取得し、テスト項目の実行部２１１のカバレッジ測定結果（実行有無）を合わせて、実行ステートメントおよびブランチを算出する（ステップＡ２）。
【００３４】
テスト項目の実行ステートメントおよびブランチ記憶部２１３は、テスト項目の実行ステートメントおよびブランチ算出部２１２の結果を、図７に示すように、実行ステートメントおよびブランチ記憶部１４の実行ステートメントおよびブランチのデータテーブル１４１に記憶する（ステップＡ３）。
【００３５】
実行ステートメントおよびブランチのデータテーブル１４１のうち、テスト対象データ、テスト項番データは、テスト項目のデータテーブル１１１の値を用いる。実行ステートメントおよびブランチのデータテーブル１４１のうち、ステートメント番号およびブランチ番号データは、変更前ソースコードのデータテーブル１２１の値を用いる。実行ステートメントおよびブランチのデータテーブル１４１のうち、テスト項番とステートメント番号およびブランチ番号に対応する実行有無データは、テスト項目の実行ステートメントおよびブランチ算出部２１２の算出結果を用いる。
【００３６】
ステートメントおよびブランチ比較部２２は、変更前ソースコード記憶部１２の変更前ソースコードのデータテーブル１２１からステートメント番号およびブランチ番号データ、変更前ソースコード本文データを取得し、変更後ソースコード記憶部１３の変更後ソースコードのデータテーブル１３１からステートメント番号およびブランチ番号データ、変更後ソースコード本文データを取得する。そして、ステートメントおよびブランチ比較部２２は、変更前ソースコード本文データと変更後ソースコード本文データとを比較して、図６に示すような、変更されたステートメント番号およびブランチ番号のデータテーブル２２１を取得する。図９は、変更前ソースコード本文データと変更後ソースコード本文データとの比較による、変更されたステートメント番号およびブランチ番号の算出の具体例を示している。変更されたステートメント番号およびブランチ番号のデータテーブル２２１は、一般的な文書比較ツール（例：ｄｉｆｆ, ＷｉｎＭｅｒｇｅ）により算出できる。
【００３７】
図９に示す例では、図４に示す変更前ソースコード本文と図５に示す変更後ソースコード本文との文書（ソースコード）比較により、変更前ステートメント：１４が変更されていることを表している（「ｒｅｔｕｒｎ１８０，」→「ｒｅｔｕｒｎ２１０，」）。また、変更前ブランチ：３−Ｆに変更後ステートメントおよびブランチとして、ステートメント５が挿入され（「ログ（）；」）、変更前ステートメント：１１が削除されている（「ログ（）；」）。この場合、変更されたステートメントおよびブランチとして、ブランチ：３−Ｆ、ステートメント：１１、ステートメント：１４が出力される。
【００３８】
図１０は、テスト項目抽出部２３及びテスト項目表示部２４の処理を表すフローチャートである。
テスト項目抽出部２３は、テスト項目のデータテーブル１１１から取得されるテスト項目のそれぞれについて（ステップＢ１〜Ｂ４）、変更されたステートメント番号およびブランチ番号のデータテーブル２２１が示す、変更されたステートメントまたはブランチ（変更箇所）のそれぞれについて、実行ステートメントおよびブランチのデータテーブル１４１に実行有りを示す実行有無データが格納されているかを突合しながら判別する（ステップＢ２，Ｂ３，Ｂ４）。
【００３９】
テスト項目抽出部２３は、実行有りを示す実行有無データが格納されていると判別されたテスト項目がある場合（実行されていた場合）、該当するテスト項目をソースコード変更に対して影響を受けるテスト項目として、ソースコード変更に対して影響を受けるテスト項目のデータテーブル２３１に格納する。
【００４０】
そして、テスト項目表示部２４は、テスト項目抽出部２３により、実行有りを示す実行有無データが格納されていると判別されたテスト項目がある場合（実行されていた場合）、ソースコード変更に対して影響を受けるテスト項目のデータテーブル２３１に格納されたテスト項目として表示する（ステップＢ６）。
【００４１】
すなわち、テスト項目抽出部２３は、テスト項目記憶部１１のテスト項目のデータテーブル１１１からテスト対象データ、テスト項番データを取得し、ステートメントおよびブランチ比較部２２から、変更されたステートメント番号およびブランチ番号のデータテーブル２２１を取得し、実行ステートメントおよびブランチ記憶部１４の実行ステートメントおよびブランチのデータテーブル１４１からテスト対象データ、テスト項番データ、ステートメント番号およびブランチ番号データ、テスト項番とステートメント番号、およびブランチ番号に対応する実行有無データを取得する。
【００４２】
そして、テスト項目抽出部２３は、テスト項目のデータテーブル１１１のテスト対象データ、テスト項番データと、実行ステートメントおよびブランチのデータテーブル１４１のテスト対象データ、テスト項番データとが一致すると同時に、実行ステートメントおよびブランチのデータテーブル１４１のステートメント番号およびブランチ番号データと、変更されたステートメント番号およびブランチ番号のデータテーブル２２１とが一致する組合せにおいて、実行有りを示す実行有無データが格納されたテスト項目を、ソースコード変更に対して影響を受けるテスト項目として抽出する。
【００４３】
図１１は、ソースコード変更に対して影響を受けるテスト項目の具体例を示す図である。図１１に示す例では、テスト項目のデータテーブル１１１の各テスト項目について、順番に、変更されたステートメント番号およびブランチ番号のデータテーブル２２１が示す、ブランチ：３−Ｆ、ステートメント：１１、ステートメント：１４のそれぞれについて、実行ステートメントおよびブランチのデータテーブル１４１に、実行有りを示す実行有無データが格納されているか判別する。この場合、ブランチ：３−Ｆについて、テスト項番７のテスト項目について、実行有りを示す実行有無データが格納されていることが判別される。テスト項目抽出部２３は、テスト項番７のテスト項目（テスト対象データ）を、ソースコード変更に対して影響を受けるテスト項目のデータテーブル２３１に格納する。
【００４４】
同様にして、ステートメント：１１については、テスト項番１２，１３のテスト項目について、実行有りを示す実行有無データが格納されていることが判別され、ステートメント：１４については、テスト項番１４のテスト項目について、実行有りを示す実行有無データが格納されていることが判別される。この結果、ソースコード変更に対して影響を受けるテスト項目のデータテーブル２３１には、図１２に示すように、テスト対象データとして、駐車場料金割引時間のテスト項番７，１２，１３，１４が格納される。
【００４５】
テスト項目表示部２４は、ソースコード変更に対して影響を受けるテスト項目のデータテーブル２３１に格納されテスト項番７，１２，１３，１４が示すテスト項目を表示する。なお、テスト項目表示部２４によるテスト項目の出力形態としては、画面表示、ファイル出力、パイプ出力（別のプログラム（コマンド）の入力に引き渡す出力）など一般的なものを用いることができる。
【００４６】
このようにして、本実施形態におけるテスト支援装置１では、変更前ソースコードのステートメントおよびブランチのうちで既存テスト項目のうちの各テスト項目が実行するステートメントおよびブランチを算出し、変更前ソースコードと変更後ソースコードのステートメントおよびブランチの差分を解析し、両者を突合する。これにより、既存テスト項目のうちからステートメントおよびブランチの粒度でのソースコード変更に対して影響を受けるテスト項目を抽出することが可能になる。
【００４７】
また、本実施形態におけるテスト支援装置１では、ステートメント間の依存関係を解析せずに、カバレッジ測定をもとに実行ステートメントおよびブランチを算出することにより、ステートメントの表現する操作を解析する手段および時間を必要とせずにソースコード変更に対して影響を受けるテスト項目を抽出することが可能になる。また、ソースコード内の変更箇所をユーザが指定する操作なども必要ないため、ユーザの作業負担を小さくすることが可能になる。
【００４８】
なお、上記の各実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フレキシブルディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤなど）、光磁気ディスク（ＭＯ）、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【００４９】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【００５０】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワークソフト等のＭＷ（ミドルウェア）等が上記実施形態を実現するための各処理の一部を実行しても良い。
【００５１】
さらに、各実施形態における記憶媒体は、コンピュータと独立した媒体に限らず、ＬＡＮやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
【００５２】
また、記憶媒体は１つに限らず、複数の媒体から上記の各実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【００５３】
なお、各実施形態におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記の各実施形態における各処理を実行するものであって、パーソナルコンピュータ等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【００５４】
また、各実施形態におけるコンピュータとは、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【００５５】
なお、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５６】
１…テスト支援装置、２…プロセッサ、３…メモリ、４…記憶装置、４Ａ…テスト支援プログラム、１０…記憶部、１１…テスト項目記憶部、１１１…テスト項目のデータテーブル、１２…変更前ソースコード記憶部、１２１…変更前ソースコードのデータテーブル、１３…変更後ソースコード記憶部、１３１…変更後ソースコードのデータテーブル、１４…実行ステートメントおよびブランチ記憶部、２０…テスト支援処理部、２１…実行ステートメントおよびブランチ算出部、２２…ステートメントおよびブランチ比較部、２２１…変更されたステートメント番号およびブランチ番号のデータテーブル、２３…テスト項目抽出部、２３１…ソースコード変更に対して影響を受けるテスト項目のデータテーブル、２４…テスト項目表示部。
【図１】
2018097785.tif 000003
【図２】
2018097785.tif 000004
【図３】
2018097785.tif 000005
【図４】
2018097785.tif 000006
【図５】
2018097785.tif 000007
【図６】
2018097785.tif 000008
【図７】
2018097785.tif 000009
【図８】
2018097785.tif 000010
【図９】
2018097785.tif 000011
【図１０】
2018097785.tif 000012
【図１１】
2018097785.tif 000013
【図１２】
2018097785.tif 000014