(57)【要約】【課題】本発明は、プログラムに修正を加えた場合、その修正の影響範囲とテストの実行範囲を抽出できる技術を提供する。【解決手段】分析装置は、ソースファイルの修正部分の分類を判定する分類判定処理部と、前記修正部分の前記分類に基づいて、前記ソースファイルにおける前記修正部分による影響範囲を示す第１のスコープを出力する第１の抽出処理部と、前記修正部分の前記分類に基づいて、前記ソースファイルにおけるテストの確認範囲を示す第２のスコープを出力する第２の抽出処理部とを備える。【選択図】図１
2017204092.tif 000002
【特許請求の範囲】
【請求項１】
ソースファイルの修正部分の分類を判定する分類判定処理部と、
前記修正部分の前記分類に基づいて、前記ソースファイルにおける前記修正部分による影響範囲を示す第１のスコープを出力する第１の抽出処理部と、
前記修正部分の前記分類に基づいて、前記ソースファイルにおけるテストの確認範囲を示す第２のスコープを出力する第２の抽出処理部と
を備える分析装置。
【請求項２】
請求項１に記載の分析装置において、
前記第１の抽出処理部は、（i）前記修正部分の論理が関数内で独立しているかどうか、（ii）前記修正部分に分岐又は終了命令が含まれるかどうか、（iii）前記修正部分が関数内の他の部分と従属関係があるかどうか、（iv）前記修正部分が削除の修正であるか、の少なくとも１つの分類に基づいて前記第１のスコープを抽出し、
前記第２の抽出処理部は、前記（i）〜（iv）の少なくとも１つの分類に基づいて前記第２のスコープを抽出することを特徴とする分析装置。
【請求項３】
請求項１に記載の分析装置において、
前記分類判定処理部が、前記修正部分の分類を特定できない場合、
前記第１の抽出処理部は、前記修正部分が含まれる関数の先頭から前記修正部分までの範囲を前記第１のスコープとして出力し、
前記第２の抽出処理部は、前記修正部分から前記関数の終端までの範囲を前記第２のスコープとして出力することを特徴とする分析装置。
【請求項４】
請求項１に記載の分析装置において、
修正の分類と、前記分類ごとの前記第１のスコープの抽出ルールと、前記分類ごとの前記第２のスコープの抽出ルールとが関連付けて格納されているルールデータベースをさらに備え、
前記第１の抽出処理部は、前記分類に対応する前記第１のスコープの抽出ルールを前記ルールデータベースから取得し、前記第１のスコープの前記抽出ルールに従って前記第１のスコープを抽出し、
前記第２の抽出処理部は、前記分類に対応する前記第２のスコープの抽出ルールを前記ルールデータベースから取得し、前記第２のスコープの前記抽出ルールに従って前記第２のスコープを抽出することを特徴とする分析装置。
【請求項５】
プロセッサ及び記憶部を用いた、ソースファイルの分析方法であって、
前記プロセッサが、ソースファイルの修正部分の分類を判定する分類判定ステップと、
前記プロセッサが、前記修正部分の前記分類に基づいて、前記修正部分による影響範囲を示す第１のスコープを出力する第１の抽出ステップと、
前記プロセッサが、前記修正部分の前記分類に基づいて、テストの確認範囲を示す第２のスコープを出力する第２の抽出ステップと
を含む分析方法。
【請求項６】
請求項５に記載の分析方法において、
前記第１の抽出ステップは、（i）前記修正部分の論理が関数内で独立しているかどうか、（ii）前記修正部分に分岐又は終了命令が含まれるかどうか、（iii）前記修正部分が関数内の他の部分と従属関係があるかどうか、（iv）前記修正部分が削除の修正であるか、の少なくとも１つの分類に基づいて前記第１のスコープを抽出することを含み、
前記第２の抽出ステップは、前記（i）〜（iv）の少なくとも１つの分類に基づいて前記第２のスコープを抽出することを含むことを特徴とする分析方法。
【請求項７】
請求項５に記載の分析方法において、
前記分類判定ステップにおいて前記修正部分の分類を特定できない場合、
前記第１の抽出ステップは、前記修正部分が含まれる関数の先頭から前記修正部分までの範囲を前記第１のスコープとして出力し、
前記第２の抽出ステップは、前記修正部分から前記関数の終端までの範囲を前記第２のスコープとして出力することを特徴とする分析方法。
【請求項８】
請求項５に記載の分析方法において、
前記記憶部が、修正の分類と、前記分類ごとの前記第１のスコープの抽出ルールと、前記分類ごとの前記第２のスコープの抽出ルールとが関連付けて格納されているルールデータベースを格納しており、
前記第１の抽出ステップは、前記分類に対応する前記第１のスコープの抽出ルールを前記ルールデータベースから取得し、前記第１のスコープの前記抽出ルールに従って前記第１のスコープを抽出することを含み、
前記第２の抽出ステップは、前記分類に対応する前記第２のスコープの抽出ルールを前記ルールデータベースから取得し、前記第２のスコープの前記抽出ルールに従って前記第２のスコープを抽出することを含むことを特徴とする分析方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの修正部分の影響範囲及びユニットテストの実施範囲を分析する装置及び方法に関する。
【背景技術】
【０００２】
既存のプログラムに新たな機能を追加していく開発においては、新規にモジュールを作成していくことに加え、既存のモジュールに修正を加えていくことが往々に発生する。モジュールは関数に細分化できるが、それら既存の関数に修正を加えた場合、その関数の動作を保証するには、その関数に関連する全ての部分のユニットテスト（ＵＴ）を行うことが考えられる。しかし、現実問題として超大な関数に部分的に修正を加えた場合などに、その関数に関連する全ての部分のユニットテストをやり直す工数を確保することは、開発期間の短縮などの理由から難しい。
【０００３】
そのため、部分的なユニットテストを実施してモジュールの動作を保証する必要がある。従来では、ユニットテストの実施範囲はテスト担当者に委ねている場合が多い。その場合、テスト担当者の技量差によりユニットテストの実施範囲が不十分なケースが生じ、不具合を見逃してしまうことが発生していた。
【０００４】
なお、プログラムのテスト支援に関する従来技術として、特許文献１に記載された技術が知られている。特許文献１には、テスト対象のソースのうち所望の部分だけをテストすることができる技術が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−１９３５８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１の技術では、テスト対象のソースのうち指定した範囲について、テストを行うために必要となる変数の設定や検証の手間を削減できる。しかし、特許文献１では、テストすべき範囲の抽出方法について何ら言及されていない。したがって、テスト担当者の技量差によりユニットテストの実施範囲が不十分なケースが生じ、不具合を見逃してしまう可能性がある。
【０００７】
そこで、本発明は、上記課題を解決するためになされたものであり、プログラムに修正を加えた場合、その修正の影響範囲とテストの実行範囲を抽出できる技術を提供する。
【課題を解決するための手段】
【０００８】
例えば、上記課題を解決するために、特許請求の範囲に記載の構成を採用する。本願は上記課題を解決する手段を複数含んでいるが、その一例をあげるならば、ソースファイルの修正部分の分類を判定する分類判定処理部と、前記修正部分の前記分類に基づいて、前記ソースファイルにおける前記修正部分による影響範囲を示す第１のスコープを出力する第１の抽出処理部と、前記修正部分の前記分類に基づいて、前記ソースファイルにおけるテストの確認範囲を示す第２のスコープを出力する第２の抽出処理部とを備える分析装置が提供される。
【０００９】
他の例によれば、プロセッサ及び記憶部を用いた、ソースファイルの分析方法であって、前記プロセッサが、ソースファイルの修正部分の分類を判定する分類判定ステップと、前記プロセッサが、前記修正部分の前記分類に基づいて、前記修正部分による影響範囲を示す第１のスコープを出力する第１の抽出ステップと、前記プロセッサが、前記修正部分の前記分類に基づいて、テストの確認範囲を示す第２のスコープを出力する第２の抽出ステップとを含む分析方法が提供される。
【発明の効果】
【００１０】
本発明によれば、プログラムに修正を加えた場合、その修正の影響範囲とテストの実行範囲を抽出できる。本発明に関連する更なる特徴は、本明細書の記述、添付図面から明らかになるものである。また、上記した以外の、課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１１】
【図１】プログラムの修正部分の影響範囲及びユニットテストの実施範囲を分析する分析装置の概略構成図である。
【図２】修正の第１の分類に関するＵＴチェック条件スコープ及びＵＴ確認スコープを説明する図である。
【図３】修正の第２の分類に関するＵＴチェック条件スコープ及びＵＴ確認スコープを説明する図である。
【図４】修正の第３の分類に関するＵＴチェック条件スコープ及びＵＴ確認スコープを説明する図である。
【図５】修正の第４の分類に関するＵＴチェック条件スコープ及びＵＴ確認スコープを説明する図である。
【図６】修正の第５の分類に関するＵＴチェック条件スコープ及びＵＴ確認スコープを説明する図である。
【図７】第１〜第５の分類に該当しない場合のＵＴチェック条件スコープ及びＵＴ確認スコープを説明する図である。
【図８】分析装置の動作を示すフローチャートである。
【図９】ＵＴチェック条件スコープ及びＵＴ確認スコープの出力結果の出力イメージである。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照して本発明の実施例について説明する。添付図面は本発明の原理に則った具体的な実施例を示しているが、これらは本発明の理解のためのものであり、決して本発明を限定的に解釈するために用いられるものではない。
【００１３】
以下の実施例は、ユニットテスト（ＵＴ）を支援するプログラム及び方法に関し、特に、プログラムに部分的な修正を加えた場合の影響調査が必要な範囲とユニットテストの実施範囲とを抽出するプログラム及び方法に関する。
【００１４】
上記の課題を解決するために、以下の実施例に係るシステムは、修正前ソースファイル１０１と修正後ソースファイル１０２を入力情報として受け取り、以下の３つのステップを実行する。本システムの使用者は、出力結果として、ＵＴチェック条件スコープ１３２及びＵＴ確認スコープ１３３を含む出力結果１４０を取得することができる。これにより、プログラムの修正による影響範囲、及び、ユニットテストの必要な実施範囲を一定レベルで抽出することができる。
【００１５】
（ステップ１）
システムは、修正前ソースファイル１０１と修正後ソースファイル１０２とを比較し、差分リスト１３１を出力する。差分リスト１３１によって、修正部分が特定される。次に、システムは、修正部分の分類を判定する。
（ステップ２）
システムは、修正部分が含まれる関数において修正部分がその関数の挙動に影響を与える範囲を抽出する。ここで抽出される範囲を、ＵＴチェック条件スコープ１３２と呼ぶ。ＵＴチェック条件スコープ１３２は、修正の分類に応じて異なる。一例として、ＵＴチェック条件スコープ１３２は、関数の先頭から修正部分の終端までの範囲となる場合がある。
（ステップ３）
システムは、ユニットテストにおいて挙動を確認する範囲を抽出する。ここで抽出される範囲を、ＵＴ確認スコープ１３３と呼ぶ。ＵＴ確認スコープ１３３は、修正の分類に応じて異なる。基本的には、修正が関数に影響を及ぼす範囲は、修正部分以降である。したがって、一例として、ＵＴ確認スコープ１３３は、修正部分の先頭から関数の終端までの範囲となる場合がある。
【００１６】
なお、ユニットテストのチェック条件としては、例えば、修正により更新された変数等に関連する値を入力する。また、ユニットテストの評価としては、ブラックボックス的な観点で関数の出力結果の値が妥当かどうかを検証する。
【００１７】
図１は、プログラムの修正部分の影響範囲及びユニットテストの実施範囲を分析する分析装置の概略構成図である。分析システム１１０は、少なくとも１つの汎用のコンピュータによって実現される。分析システム１１０の各構成要素は、１つのコンピュータ上で実現されてもよいし、複数のコンピュータに分散して実現されてもよい。
【００１８】
コンピュータは、ＣＰＵ（Central Processing Unit）などのプロセッサと、記憶部（メモリ、ハードディスクなど）とを少なくとも備える。以下で説明する処理は、それらの処理に対応するプログラムコードがメモリに格納され、プロセッサが各プログラムコードを実行することによって実現される。なお、コンピュータは、マウス及びキーボードなどの入力装置、及び、ディスプレイなどの表示装置を備えてもよい。
【００１９】
分析システム１１０は、修正前ソースファイル１０１と修正後ソースファイル１０２とを入力情報として受け取り、ＵＴチェック条件スコープ及びＵＴ確認スコープの出力結果１４０を出力する。そのために、分析システム１１０は、分析プログラム１２０と、分析プログラム１２０に使用されるデータ及び分析プログラム１２０の処理途中の中間生成ファイルを格納する記憶部１３０とを備える。
【００２０】
分析プログラム１２０は、差分抽出処理部１２１と、分類判定処理部１２２と、ＵＴチェック条件スコープ抽出処理部１２３と、ＵＴ確認スコープ抽出処理部１２４と、抽出結果マージ処理部１２５とを備える。
【００２１】
記憶部１３０には、各スコープ１３２、１３３を抽出するためのルール情報を格納したルールデータベース（ＤＢ）１５０が格納されている。ルールＤＢ１５０は、修正の分類と、分類ごとの満たすべき条件と、分類ごとのＵＴチェック条件スコープ１３２の抽出ルールと、分類ごとのＵＴ確認スコープ１３３の抽出ルールとが関連付けて格納されている。分類の種類と、各分類に対応するスコープ１３２、１３３の抽出ルールの詳細については後述する。
【００２２】
また、分析プログラム１２０の処理途中において、記憶部１３０には、中間生成ファイルである差分リスト１３１、ＵＴチェック条件スコープ１３２、及び、ＵＴ確認スコープ１３３が格納される。
【００２３】
図８は、分析システム１１０の動作を示すフローチャートである。
【００２４】
（ステップ８０１）
差分抽出処理部１２１は、修正前ソースファイル１０１と修正後ソースファイル１０２から、修正前ソースファイル１０１を基準とした修正内容を示す差分リスト１３１を生成する。差分抽出処理部１２１は、差分リスト１３１を記憶部１３０に格納する。差分リスト１３１は、修正前ソースファイル１０１と修正後ソースファイル１０２の修正部分が特定できる情報であればよく、修正部分のソースの行番号の情報や、修正部分のソース自体でもよい。
【００２５】
（ステップ８０２）
差分抽出処理部１２１は、差分リスト１３１をもとに、修正後ソースファイル１０２の中の抽出対象範囲を特定する。例えば、差分抽出処理部１２１は、修正部分が含まれる関数の先頭から終端までの範囲を抽出対象範囲として特定する。ここでは、抽出対象範囲を、修正部分が含まれる１つの関数として説明するが、これに限定されず、修正部分が影響する範囲によって、抽出対象範囲を広くしてもよい。
【００２６】
以下のステップ８０３〜８０５の処理をステップ８０２において特定された修正箇所の数だけ繰り返し実行する。
【００２７】
（ステップ８０３）
分類判定処理部１２２は、差分リスト１３１をもとに、ソースの修正部分がルールＤＢ１５０に定義されている分類に該当するかを判定する。ソースの修正部分が、１つの分類だけなく、２つ以上の分類に該当する場合もある。分析システム１１０は、以下のステップ８０４〜８０５の処理を該当した分類の数だけ繰り返す。なお、図７を用いて後述するが、修正部分がルールＤＢ１５０に定義されている分類に該当しない場合でも、ステップ８０４及びステップ８０５を実行することが可能である。
【００２８】
（ステップ８０４）
ＵＴチェック条件スコープ抽出処理部１２３は、ルールＤＢ１５０を参照し、分類に対応するＵＴチェック条件スコープの抽出ルールを取得する。ＵＴチェック条件スコープ抽出処理部１２３は、当該抽出ルールに従って、修正後ソースファイル１０２からＵＴチェック条件スコープを抽出し、抽出したスコープをＵＴチェック条件スコープ１３２として記憶部１３０に格納する。なお、ＵＴチェック条件スコープ抽出処理部１２３は、抽出対象範囲内（例えば、１つの関数内）でＵＴチェック条件スコープ抽出処理を実行する。
【００２９】
（ステップ８０５）
ＵＴ確認スコープ抽出処理部１２４は、ルールＤＢ１５０を参照し、分類に対応するＵＴ確認スコープの抽出ルールを取得する。ＵＴ確認スコープ抽出処理部１２４は、当該抽出ルールに従って、修正後ソースファイル１０２からＵＴ確認スコープを抽出し、抽出したスコープをＵＴ確認スコープ１３３として記憶部１３０に格納する。なお、ＵＴ確認スコープ抽出処理部１２４は、抽出対象範囲内（例えば、１つの関数内）でＵＴ確認スコープ抽出処理を実行する。
【００３０】
（ステップ８０６）
抽出結果マージ処理部１２５は、複数のＵＴチェック条件スコープ１３２をマージし、複数のＵＴ確認スコープ１３３をマージする。抽出結果マージ処理部１２５は、マージしたそれぞれのデータを出力結果１４０として出力する。このマージ処理によって、ユーザは、複数のＵＴチェック条件スコープ１３２及び複数のＵＴ確認スコープ１３３を、それぞれ統合された形で確認することが可能となる。
【００３１】
以下では、修正の分類と、各分類に対応するＵＴチェック条件スコープ１３２及びＵＴ確認スコープ１３３について説明する。
【００３２】
ＵＴチェック条件スコープ抽出処理部１２３は、（i）修正部分の論理が関数内で独立しているかどうか、（ii）修正部分に分岐又は終了命令が含まれるかどうか、（iii）修正部分が関数内の他の部分と従属関係があるかどうか、（iv）修正部分が削除の修正であるかの少なくとも１つの分類に基づいてＵＴチェック条件スコープ１３２を抽出する。同様に、ＵＴ確認スコープ抽出処理部１２４は、上記（i）〜（iv）の少なくとも１つの分類に基づいてＵＴ確認スコープ１３３を抽出する。ここで、分岐又は終了命令には、ｉｆ文などの条件文や、ｇｏｔｏ文、関数の呼び出し元に戻るｒｅｔｕｒｎ文などが含まれる。以下では、図２〜図７を用いて、上記（i）〜（iv）の分類の詳細について説明する。
【００３３】
図２は、修正の第１の分類に関するＵＴチェック条件スコープ及びＵＴ確認スコープを示す。分類判定処理部１２２は、修正部分がルールＤＢ１５０に定義されている第１の分類に該当するかを判定する。ここで、「第１の分類に該当する」とは、参照を伴う修正が行われており、修正部分で更新している変数が修正部分以外にないという条件を満たす場合を言う。
【００３４】
参照を伴う修正を加えた場合、使用している変数が新規であれば、修正論理は完全独立と考える。したがって、当該第１の分類に対応するＵＴチェック条件スコープ１３２は、その修正部分が含まれる関数の先頭から修正部分の終端までの範囲とし、当該第１の分類に対応するＵＴ確認スコープ１３３は、修正部分のみとする。これらの抽出ルールは、ルールＤＢ１５０に定義されている。なお、修正部分に含まれる変数が、関数の他の部分で使用されている場合、ＵＴ確認スコープ１３３を、その使用されている箇所まで広げてもよい。
【００３５】
図２の例の場合、ＵＴチェック条件スコープ抽出処理部１２３は、その修正部分が含まれる関数の先頭から修正部分の終端までの範囲をＵＴチェック条件スコープ１３２として出力する。また、ＵＴ確認スコープ抽出処理部１２４は、修正部分のみをＵＴ確認スコープ１３３として出力する。
【００３６】
図３は、修正の第２の分類に関するＵＴチェック条件スコープ及びＵＴ確認スコープを示す。分類判定処理部１２２は、修正部分がルールＤＢ１５０に定義されている第２の分類に該当するかを判定する。ここで、「第２の分類に該当する」とは、修正部分に条件文が含まれるという条件を満たす場合を言う。
【００３７】
図３の例では、条件文の中に更なる条件が追加されている。この場合、当該第２の分類に対応するＵＴチェック条件スコープ１３２は、その修正部分が含まれる関数の先頭から修正部分の終端までの範囲とし、当該第２の分類に対応するＵＴ確認スコープ１３３は、条件文の節とする。これらの抽出ルールは、ルールＤＢ１５０に定義されている。
【００３８】
図３の例の場合、ＵＴチェック条件スコープ抽出処理部１２３は、その修正部分が含まれる関数の先頭から修正部分の終端までの範囲をＵＴチェック条件スコープ１３２として出力する。また、ＵＴ確認スコープ抽出処理部１２４は、修正部分（ここでは、条件文の節）をＵＴ確認スコープ１３３として出力する。
【００３９】
図４は、修正の第３の分類に関するＵＴチェック条件スコープ及びＵＴ確認スコープを示す。分類判定処理部１２２は、修正部分がルールＤＢ１５０に定義されている第３の分類に該当するかを判定する。ここで、「第３の分類に該当する」とは、修正部分にｒｅｔｕｒｎ文又はｇｏｔｏ文が含まれるという条件を満たす場合を言う。
【００４０】
図４の例では、条件文及びｒｅｔｕｒｎ文が追加されている。この場合、当該第３の分類に対応するＵＴチェック条件スコープ１３２は、その修正部分が含まれる関数の先頭から修正部分の終端までの範囲とする。なお、別の例として、当該第３の分類に対応するＵＴ確認スコープ１３３には、修正部分よりも後段において修正部分で更新している変数を使用している部分が追加されてもよい。また、その修正により通過しなくなる論理が存在する可能性があるため、当該第３の分類に対応するＵＴ確認スコープ１３３は、修正部分の先頭から関数の終端までの範囲とする。これらの抽出ルールは、ルールＤＢ１５０に定義されている。
【００４１】
図４の例では、ＵＴチェック条件スコープ抽出処理部１２３は、その修正部分が含まれる関数の先頭から修正部分の終端までの範囲をＵＴチェック条件スコープ１３２として出力する。また、ＵＴ確認スコープ抽出処理部１２４は、修正部分の先頭から関数の終端までの範囲をＵＴ確認スコープ１３３として出力する。この例の場合、ユニットテストにおいて、関数の戻り値、出力値が正しいかを確実に確認する。
【００４２】
図５は、修正の第４の分類に関するＵＴチェック条件スコープ及びＵＴ確認スコープを示す。分類判定処理部１２２は、修正部分がルールＤＢ１５０に定義されている第４の分類に該当するかを判定する。ここで、「第４の分類に該当する」とは、関数内にいくつかの論理的なブロックが存在し、そのブロックの一部に修正を加えたという条件を満たす場合を言う。
【００４３】
図５の例では、関数内に２つの論理的なブロックＡ、Ｂが存在し、ブロック単位は従属関係がないとする。この関数において、ブロックＡの一部に修正が加えられている。この場合、当該第４の分類に対応するＵＴチェック条件スコープ１３２は、その修正部分が含まれるブロック全体とする。当該第４の分類に対応するＵＴ確認スコープ１３３は、修正部分の先頭から当該ブロックの終端までの範囲としてもよい。また、別の例として、当該第４の分類に対応するＵＴ確認スコープ１３３は、その修正部分が含まれるブロック全体としてもよい。なお、この例では、ブロックＡ、Ｂは従属関係がないと仮定したが、これらのブロックに従属関係が存在している場合、ブロックＢをＵＴチェック条件スコープ１３２及びＵＴ確認スコープ１３３に含めてもよい。これらの抽出ルールは、ルールＤＢ１５０に定義されている。
【００４４】
図５の例では、ＵＴチェック条件スコープ抽出処理部１２３は、その修正部分が含まれるブロックＡの先頭からブロックＡの終端までの範囲をＵＴチェック条件スコープ１３２として出力する。また、ＵＴ確認スコープ抽出処理部１２４は、修正部分の先頭からブロックＡの終端までの範囲をＵＴ確認スコープ１３３として出力する。
【００４５】
図６は、修正の第５の分類に関するＵＴチェック条件スコープ及びＵＴ確認スコープを示す。分類判定処理部１２２は、修正部分がルールＤＢ１５０に定義されている第５の分類に該当するかを判定する。ここで、「第５の分類に該当する」とは、削除の修正が行われたという条件を満たす場合を言う。
【００４６】
この場合、当該第５の分類に対応するＵＴチェック条件スコープ１３２は、その削除部分が含まれる関数の先頭から削除部分までの範囲とし、当該第５の分類に対応するＵＴ確認スコープ１３３は、その削除部分から関数の終端までの範囲とする。これらの抽出ルールは、ルールＤＢ１５０に定義されている。
【００４７】
一例として、ＵＴチェック条件スコープ抽出処理部１２３は、その削除部分が含まれる関数の先頭から削除部分までの範囲をＵＴチェック条件スコープ１３２として出力する。また、ＵＴ確認スコープ抽出処理部１２４は、削除部分から関数の終端までの範囲をＵＴ確認スコープ１３３として出力する。
【００４８】
図７は、上記の第１〜第５の分類に該当しない場合のＵＴチェック条件スコープ及びＵＴ確認スコープを示す。修正部分が上記の第１〜第５の分類に該当しない場合、ＵＴチェック条件スコープ１３２は、その修正部分が含まれる関数の先頭から修正部分の終端までの範囲とし、ＵＴ確認スコープ１３３は、修正部分の先頭から関数の終端までの範囲とする。
【００４９】
ＵＴチェック条件スコープ抽出処理部１２３は、その修正部分が含まれる関数の先頭から修正部分の終端までの範囲をＵＴチェック条件スコープ１３２として出力する。また、ＵＴ確認スコープ抽出処理部１２４は、修正部分の先頭から関数の終端までの範囲をＵＴ確認スコープ１３３として出力する。この構成によれば、修正部分がルールＤＢの分類に該当しない場合でも、プログラムの修正による影響範囲、及び、ユニットテストの必要な実施範囲を一定レベルで抽出することができる。
【００５０】
図９は、ＵＴチェック条件スコープ及びＵＴ確認スコープの出力結果１４０の出力イメージである。ユーザは、分析システム１１０に対して、修正前ソースファイル１０１と修正後ソースファイル１０２を入力する。分析システム１１０が、図８のフローを実行する。図９は、出力結果１４０をディスプレイなどの表示装置に出力した画面の例である。
【００５１】
画面９００には、修正前ソースファイルの内容９０１と、修正後ソースファイルの内容９０２とが表示される。また、画面９００には、差分リスト１３１に基づく差分情報９０３が、修正後ソースファイルの内容９０２上に表示される。また、修正後ソースファイルの内容９０２の横に、ＵＴチェック条件スコープ９０４及びＵＴ確認スコープ９０５が表示される。なお、表示形式は、この例に限定されず、多様な表示形式が可能である。例えば、ＵＴチェック条件スコープ９０４及びＵＴ確認スコープ９０５が色分けされた形式で表示されてもよい。また、修正がどの分類に該当するかを示す分類情報が画面９００に表示されてもよい。また、修正が複数の分類に該当する場合、マージされたスコープ１３２、１３３だけでなく、分類ごとのスコープ１３２、１３３が表示されてもよい。
【００５２】
上記の実施例によれば、プログラムに部分修正を加えた場合、ＵＴチェック条件スコープ１３２及びＵＴ確認スコープ１３３を出力できる。ＵＴチェック条件スコープ１３２は、修正が行われたソースファイルにおける、その修正による影響範囲を示し、ＵＴ確認スコープ１３３は、修正が行われたソースファイルにおけるユニットテストの確認範囲（評価範囲）を示す。この構成によれば、修正の影響範囲及びユニットテストの実施範囲を絞り込んだ形で抽出でき、また、ユニットテストの必要な実施範囲を一定レベルで抽出することができる。その結果、ユニットテストの作業工数を小さくすることができる。
【００５３】
本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。上記実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることもできる。また、ある実施例の構成に他の実施例の構成を加えることもできる。また、各実施例の構成の一部について、他の構成を追加・削除・置換することもできる。
【００５４】
例えば、上記の例では、１つの関数内においてＵＴチェック条件スコープ１３２及びＵＴ確認スコープ１３３を抽出したが、修正部分が他の関数にまで影響がある場合、他の関数までＵＴチェック条件スコープ１３２及びＵＴ確認スコープ１３３の範囲を広げてもよい。したがって、本発明は、１つの関数内でのテスト、複数の関数にまたがるテストなど各種のテストに適用可能である。
【００５５】
上記の各構成、機能などは、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、ファイルなどの情報は、メモリや、ハードディスク、ＳＳＤ（Solid State Drive）などの記録装置、又は、ＩＣカード、ＳＤカード、ＤＶＤなどの記録媒体に置くことができる。また、上記の各構成などは、それらの一部又は全部を、例えば集積回路で設計するなどによりハードウェアで実現してもよい。
【００５６】
上述の実施例において、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【符号の説明】
【００５７】
１０１…修正前ソースファイル
１０２…修正後ソースファイル
１１０…分析システム
１２０…分析プログラム
１２１…差分抽出処理部
１２２…分類判定処理部
１２３…ＵＴチェック条件スコープ抽出処理部（第１の抽出処理部）
１２４…ＵＴ確認スコープ抽出処理部（第２の抽出処理部）
１２５…抽出結果マージ処理部
１３０…記憶部
１３１…差分リスト
１３２…ＵＴチェック条件スコープ（第１のスコープ）
１３３…ＵＴ確認スコープ（第２のスコープ）
１４０…出力結果
１５０…ルールデータベース（ＤＢ）
【図１】
2017204092.tif 000003
【図２】
2017204092.tif 000004
【図３】
2017204092.tif 000005
【図４】
2017204092.tif 000006
【図５】
2017204092.tif 000007
【図６】
2017204092.tif 000008
【図７】
2017204092.tif 000009
【図８】
2017204092.tif 000010
【図９】
2017204092.tif 000011