(57)【要約】【課題】１つの側面では、テスト対象プログラムの変更箇所に応じて実施対象の個別テストを特定して、テスト内容を特定する。【解決手段】テスト装置１０では、テスト実施部１６により、複数の関数を含むテスト対象プログラムに対して複数の関数の各々に関連付けられるテストを実施する。関係図作成部１２は、テストの実施結果に基づいて、複数のテストの間の相互関係を示す共起情報を得て、記憶部２０に記憶させる。個別テスト特定部１８は、特定のテストを実施した結果がエラーである場合、テスト間の相互関係に基づき、特定のテストと相互関係を有するテストを、実行対象のテストとして設定する。これによって、テスト対象プログラムに含まれる関数に対応するテストについて、テスト間の相互関係を用いて実施対象のテストを設定でき、効率的にテスト内容を特定できる。【選択図】図１
2015026222.tif 000002
【特許請求の範囲】
【請求項１】
複数のモジュールを含むテスト対象プログラムのテストを、前記複数のモジュールの各々に関連付けられる個別テストの実行により行うときに、前記複数のモジュールの各々に関連付けられる個別テストの間の関係を示す情報を、前記複数のモジュールの相互関係を示す情報に基づいて生成し、
特定の前記個別テストを実行したときに所定の実行結果である場合に、前記個別テストの間の関係を示す情報に基づいて、前記所定の実行結果に対応して追加して実行する前記個別テストを特定する
ことを含む処理をコンピュータに実行させるためのテストプログラム。
【請求項２】
前記複数の個別テストの間の関係を示す情報は、前記テスト対象プログラムに対して実行された前記個別テストの各々のテスト結果に基づいて更新される
請求項１に記載のテストプログラム。
【請求項３】
前記モジュールに関連付けられる個別テストは、複数の小テストを含み、
前記複数の個別テストの間の関係を示す情報は、前記個別テストに含まれる前記小テストの間の関係を示す情報を、前記複数のモジュールの相互関係を示す情報に基づいて生成する
請求項１または請求項２に記載のテストプログラム。
【請求項４】
前記モジュールに関連付けられる個別テストは、複数の小テストを含み、
前記個別テストの間の関係を示す情報を優先度情報として、前記優先度情報に基づいて前記特定される個別テストに含まれる複数の小テストの実行順序を決定する
請求項１〜請求項３の何れか１項に記載のテストプログラム。
【請求項５】
コンピュータが、
複数のモジュールを含むテスト対象プログラムのテストを、前記複数のモジュールの各々に関連付けられる個別テストの実行により行うときに、前記複数のモジュールの各々に関連付けられる個別テストの間の関係を示す情報を、前記複数のモジュールの相互関係を示す情報に基づいて生成し、
特定の前記個別テストを実行したときに所定の実行結果である場合に、前記個別テストの間の関係を示す情報に基づいて、前記所定の実行結果に対応して追加して実行する前記個別テストを特定する
ことを含むテスト方法。
【請求項６】
複数のモジュールを含むテスト対象プログラムのテストを、前記複数のモジュールの各々に関連付けられる個別テストの実行により行うときに、前記複数のモジュールの各々に関連付けられる個別テストの間の関係を示す情報を、前記複数のモジュールの相互関係を示す情報に基づいて生成する関係図作成部と、
特定の前記個別テストを実行したときに所定の実行結果である場合に、前記個別テストの間の関係を示す情報に基づいて、前記所定の実行結果に対応して追加して実行する前記個別テストを特定する個別テスト特定部と、
を備えたテスト装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テストプログラム、テスト方法及びテスト装置に関する。
【背景技術】
【０００２】
近年、プログラムの開発に求められる期間は、短くなってきている。一方、求められるプログラムは、機能が増加し動作が複雑になってきているため、機能及び動作の確認のためのテストに要する工数が増大してきている。このような二律相反することに対して、効率的にプログラムのテストを実行する各種の技術が提案されている。
【０００３】
例えば、テストを実行する対象となるプログラム（以下、テスト対象プログラムという）に対する複数のテストの中から不具合検出率が高いテストを選択して実行する技術が知られている。この技術では、複数のテストの中から効率的にテストを選別するために、影響の大きい不具合がより多く存在する箇所を重点的にテストするという観点に立ち、テスト対象プログラムが有する機能にテストの優先度を付与している。テストの優先度は、機能に対する優先度付与するための評価観点及び評価値の重みづけを予め定めておき、評価観点及び評価値の重みづけを用いて、各機能毎にテストの優先度を決定する。決定されたテストの優先度を用いてテストを実行することで、不具合の検出率を向上させている。
【０００４】
また、テスト対象プログラムの変更された箇所に応じてテストすべき部分を予め抽出してプログラムのテストを実行する技術が知られている。この技術では、テスト対象プログラムの各行（例えばステイトメント）毎に依存関係を予め抽出し、変更された行と依存関係を有する行に対応するテストを実行する。また、この技術では、依存関係の強さを表す指標として大きい値になるに従って依存関係が低くなることを表す優先度を用いている。優先度は、予め、テスト対象プログラムを解析した解析結果から求まる依存関係により求めている。このようにテスト対象プログラムの変更された箇所と依存関係が強いテストを、予め解析により求めて実行することで、テストを効率化している。
【０００５】
さらに、テスト対象プログラムに対し、予め定められたテストの重要度と平均実行時間に基づいて、テストを選択する技術が知られている。この技術では、テストの重要度として、テストの実行可否を判断するための値が、予めユーザにより手動で設定される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−２０４４０５号公報
【特許文献２】特開２０１０−１３４６４３号公報
【非特許文献】
【０００７】
【非特許文献１】平山雅之、山本徹也、岡安二郎、水野修、菊野亨：機能モジュールに対する優先度に基づいた 選択的ソフトウェアテスト手法の提案、電子情報通信学会技術研究報告. SS, ソフトウェアサイエンス 101(98), 1-8, 2001-05-22
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ところで、近年のソフトウェア利用の拡大に伴って、プログラムの開発には、限られた時間内で、プログラムのテストを実行してリリースすることが求められている。例えば、プログラムの開発に、ＤｅｖＯｐｓ(a portmanteau of development and operations)と呼ばれる手法が導入される場合がある。ＤｅｖＯｐｓは、リリースごとのプログラムの修正内容を細かくし、リリース間隔を短くする手法であり、プログラムのテストを実行してリリースするまでの期間がより短期間になってきている。つまり、プログラムに対する一度の修正量は少量であるが、テストに要求される時間は短時間に制約される。従って、テスト対象プログラムに対し、さらなるテストの効率化が求められている。
【０００９】
しかしながら、複数のテストの中から不具合検出率が高いテストを選択して実行する技術では、予め定めた評価観点及び評価値の重みづけを用いて決定された機能毎のテストの優先度に応じてテストを実行する。優先度は、予め定めた評価観点及び評価値の重みづけを用いて決定されるので、一度の修正量が少量なテスト対象プログラムであっても抽出されるテストは決定された優先度により特定される。このため、変更箇所に関係が希薄なテストが抽出される場合があり、テスト対象プログラムに対するテストを実行する時間が大幅に増加する場合がある。また、予め定めた評価観点等による優先度に基づいてテストを選別することでは、修正されたテスト対象プログラムのテスト結果に応じて次に実行するテストを特定することができない。
【００１０】
また、テスト対象プログラムの変更箇所に応じてテストすべき部分を抽出してプログラムのテストを実行する技術では、テスト対象プログラムの各行毎の依存関係を予め抽出しておき、変更された行と依存関係を有する行に対応するテストを実行する。ところが、この技術では、優先度の値に応じて変更箇所と依存関係が強い部分に対するテストが全て抽出されるので、変更箇所に関係が希薄なテストが抽出される場合がある。
【００１１】
さらに、予め定められたテストの重要度と平均実行時間に基づいてテストを選択する技術では、テストの実行可否を判断するための値が予めユーザにより手動で設定されるので、テスト対象プログラムで使用頻度が高い機能が選択されない場合がある。
【００１２】
１つの側面では、テスト対象プログラムの変更箇所に応じて実施対象の個別テストを特定して、テスト内容を特定することを目的とする。
【課題を解決するための手段】
【００１３】
１つの態様では、複数のモジュールを含むテスト対象プログラムのテストを、複数のモジュールの各々に関連付けられる個別テストの実行により行う。開示の技術は、複数のモジュールの各々に関連付けられる個別テストの間の関係を示す情報を、複数のモジュールの相互関係を示す情報に基づいて生成する。また、特定の個別テストを実行したときに所定の実行結果である場合に、個別テストの間の関係を示す情報に基づいて、所定の実行結果に対応して追加して実行する個別テストを特定する。このように、特定の個別テストが所定の実行結果である場合に、追加して実行する個別テストを特定することで、テスト内容を特定することができる。
【発明の効果】
【００１４】
１つの側面では、テスト対象プログラムの変更箇所に応じて実施対象の個別テストを特定して、テスト内容を特定できる、という効果を有する。
【図面の簡単な説明】
【００１５】
【図１】テスト装置の概略構成の一例を示すブロック図である。
【図２】コンピュータで実現するテスト装置の一例を示すブロック図である。
【図３】テスト装置におけるテスト処理の流れの一例を示すフローチャートである。
【図４】テスト対象プログラムのソースコードの一例を示すイメージ図である。
【図５】ソース情報におけるモジュールの関係の一例を示すイメージ図である。
【図６】テスト対象プログラムのプログラム依存グラフの一例を示すイメージ図である。
【図７】プログラム依存グラフにおける依存元に対するテストの関係を示すイメージ図である。
【図８】関数に関連付けられるテストのテーブルを示すイメージ図である。
【図９】テスト関係図の一例を示すイメージ図である。
【図１０】共起関係を示す共起テーブルの一例を示すイメージ図である。
【図１１】変更箇所リストの一例を示すイメージ図である。
【図１２】影響箇所リストの一例を示すイメージ図である。
【図１３】優先度に基づいて実行順序を決定することの説明図ある。
【図１４】共起関係を示す共起テーブルの一例を示すイメージ図である。
【図１５】コンピュータシステムで実現するテスト装置の一例を示すブロック図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照して開示の技術の実施形態の一例を詳細に説明する。本実施形態は、複数のモジュールを含むテスト対象プログラムに対してテストを実行する場合の一例として、回帰テスト（リグレッションテスト）を実行する場合に、開示の技術を適用したものである。
【００１７】
（第１実施形態）
図１に、本実施形態に係るテスト対象プログラムのテスト装置の一例を示す。テスト装置１０は、関係図作成部１２、変更箇所特定部１４、テスト実施部１６及び個別テスト特定部１８を備えている。個別テスト特定部１８は、優先度判定部として機能する場合がある（詳細は後述）。テスト装置１０には、記憶部２０が接続されている。記憶部２０には、テスト対象プログラムを示す情報２２、テスト対象プログラムに対して実行される複数のテスト間の相互関係を示す情報２４、及びテスト対象プログラムに対して実行される複数のテストの各々を示す情報２６が記憶されている。
【００１８】
テスト対象プログラムを示す情報２２の一例としてテスト対象プログラムのソースコードがある。テスト対象プログラムを示す情報２２は、１つのテスト対象プログラムの変更履歴を示す情報を含めることができる。また、テスト対象プログラムを示す情報２２は、１つのテスト対象プログラムについて、変更を施した後のテスト対象プログラム及び変更を施す前のテスト対象プログラムの各々を示す情報を含めることができる。また、複数の各テストを示す情報２６の一例として各テストを実行するために用いるプログラムのソースコード及びテスト実行時のパラメータを示す情報がある。
【００１９】
テスト対象プログラムは、複数のモジュールを含み、複数のモジュールの各々は、１以上の所定関数を含むことができる。テストは、テスト対象プログラムに含まれる複数のモジュールの各々の機能及び動作を確認するための処理である。つまり、テストは、テスト対象プログラムに含まれる複数のモジュールの各々に関連付けられる。また、複数のテスト間の相互関係を示す情報２４の一例として、モジュールの各々に対するテストの間の相互関係を示す情報がある。テスト対象プログラムに対するテストを実施したとき、テストが完了せずにエラーが発生したり不具合が生じたり（ｆａｉｌ）する所定の実行結果に至る場合がある。特定のテストが所定の実行結果に至る場合、モジュール間の関係により他のテストが所定の実行結果に至るときがある。これらの特定のテストと共起関係にあるテストとの相互関係を示す情報２４が記憶部２０に記憶される。
【００２０】
なお、テスト装置１０は開示の技術におけるテスト装置の一例であり、関係図作成部１２は開示の技術における関係図作成部の一例である。また、変更箇所特定部１４は開示の技術における変更箇所特定部の一例であり、テスト実施部１６は開示の技術におけるテスト実施部の一例であり、個別テスト特定部１８は開示の技術における個別テスト特定部の一例である。また、本実施形態におけるテストは、開示の技術における個別テストに対応する。
【００２１】
テスト装置１０の関係図作成部１２は、テスト対象プログラムに含まれる複数のモジュールの依存関係を示す情報、及びテストの間の相互関係を示す情報を作成し、記憶部２０に記憶する。つまり、関係図作成部１２は、複数のモジュールの各々に関連付けられるテストの間の関係を示す情報を、複数のモジュール相互の関係（依存関係）を示す情報に基づいて生成し記憶部２０に記憶する。変更箇所特定部１４は、ソースコード等のテスト対象プログラムを示す情報２２の変更履歴を示す情報等に基づいて、テスト対象プログラムにおける変更箇所を特定する。テスト実施部１６は、変更箇所特定部１４により特定されたテスト対象プログラムにおける変更箇所に該当する所定関数等のモジュールに関連付けられるテストを実施する。
【００２２】
個別テスト特定部１８は、テスト対象プログラムの変更箇所に該当するモジュールに関係するテストを特定する。つまり、修正されたテスト対象プログラムは変更箇所を有しており、個別テスト特定部１８は、テスト対象プログラムの変更箇所に対応する特定のモジュールに対するテストのテスト結果に応じて、次に追加して実行するテストを特定する。例えば、テスト対象プログラムの変更箇所に該当するモジュールに関連付けられるテストは、他のモジュールに関連付けられるテストとの間に関係を有する場合がある。つまり、テストの実行により、エラー等の所定の実行結果に至るとき、テスト対象プログラムのモジュール間の関係（依存関係）により、他のモジュールに関連付けられるテストが共起してエラー等の所定の実行結果に至る場合がある。そこで、個別テスト特定部１８は、相互関係を示す情報２４を用いて、テスト対象プログラムの変更箇所に該当するモジュールのテストと共起関係にあるテスト、例えば上位関数を含む上位モジュールのテストを実行対象のテストとして特定する。個別テスト特定部１８は、特定した実行対象のテストをテスト実施部１６に実行させる。従って、テスト実施部１６は、テスト対象プログラムの変更箇所に該当するモジュールの個別テストの実施に加えて、共起関係にあるテスト、例えば上位関数を含む上位モジュールのテストを追加して実行する。これによって、テスト対象プログラムに対するテストについて、例えば、プログラム修正などの変更に伴うリグレッションテストの実行範囲を抑制でき、またテストの処理時間を短縮することができる。
【００２３】
図２に、テスト装置１０をコンピュータ３０で実現する一例を示す。コンピュータ３０はＣＰＵ３２、メモリ３４、不揮発性の格納部３６及び蓄積部３８を備えている。ＣＰＵ３２、メモリ３４、格納部３６及び蓄積部３８は、バス４８を介して互いに接続されている。また、コンピュータ３０は、ディスプレイ等の表示装置４０、キーボード及びマウス等の入力装置４２を備え、表示装置４０及び入力装置４２はバス４８に接続されている。また、コンピュータ３０は、記録媒体４６が挿入され、挿入された記録媒体４６に対して読み書きするための装置（ＩＯ装置）４４がバス４８に接続されている。なお、格納部３６及び蓄積部３８はＨＤＤ(Hard Disk Drive)やフラッシュメモリ等によって実現できる。また、コンピュータ３０はコンピュータネットワーク等に接続するためのインタフェースを備えることができる。
【００２４】
格納部３６には、ＯＳ（Operating System）６０及びコンピュータ３０をテスト装置１０として機能させるためのテストプログラム５０が記憶されている。テストプログラム５０は、関係図作成プロセス５２、変更箇所特定プロセス５４、テスト実施プロセス５６及び優先度判定プロセス５８を含んでいる。ＣＰＵ３２がテストプログラム５０を格納部３６から読み出してメモリ３４に展開し、テストプログラム５０が有する各プロセスを実行することで、コンピュータ３０は図１に示すテスト装置１０として動作する。また、ＣＰＵ３２が関係図作成プロセス５２を実行することで、コンピュータ３０は図１に示す関係図作成部１２として動作し、ＣＰＵ３２が変更箇所特定プロセス５４を実行することで、コンピュータ３０は図１に示す変更箇所特定部１４として動作する。また、ＣＰＵ３２がテスト実施プロセス５６を実行することで、コンピュータ３０は図１に示すテスト実施部１６として動作し、ＣＰＵ３２が優先度判定プロセス５８を実行することで、コンピュータ３０は図１に示す個別テスト特定部１８として動作する。
【００２５】
蓄積部３８には、ソース情報６２、依存図情報６４，関係図情報６６，テーブル情報６８，及びテスト情報７０が蓄積されている。ソース情報６２は、テスト対象プログラムのソースコードを示す。依存図情報６４は、テスト対象プログラムのソースコードにおける関数を含むモジュールの依存関係を示す。関係図情報６６は、テスト対象プログラムのソースコードにおける関数を含むモジュールに関係づけられる個別のテストの間の相互関係を示す。テーブル情報６８は、各種テーブルを示す。テスト情報７０は、複数の個別のテストの各々のソースコード等の情報を示す。蓄積部３８は、図１に示す記憶部２０に対応する。ソース情報６２は、図１に示すテスト対象プログラムを示す情報２２に対応する。依存図情報６４、関係図情報６６及びテーブル情報６８は、図１に示す相互関係を示す情報２４に対応する。テスト情報７０は、図１に示すテストを示す情報２６に対応する。
【００２６】
なお、テスト対象プログラムのソースコードにおける関数の依存関係を表す技術の一例として、プログラム依存グラフがある。プログラム依存グラフに関する技術の一例として、次の文献が知られている。
Ottenstein , K. and Ottenstein , L. The program dependence graph in a software development environment. In Prodeedings of the ACM SIGSOFT/SIGPLAN Software Engineering Symposium on Practical Software Development Environments, pp. 177-184. SIGPLAN, 1984。
【００２７】
また、テスト装置１０はコンピュータネットワークに接続することを可能としてもよい。つまり、テスト装置１０はコンピュータネットワークに接続することまたは非接続にすることに限定さない。開示の技術におけるテスト装置１０の一例のように、コンピュータ３０のみで実現してもよく、複数のコンピュータによりテスト装置１０を実現してもよい。
【００２８】
次に、本実施形態の作用を説明する。
テスト対象プログラムのテスト（例えば、リグレッションテスト）を実行する場合、テスト対象プログラムにおける変更内容を特定し、変更内容によって影響を受ける箇所を特定することが、効率的なテストの実行に寄与する。つまり、テスト対象プログラムのモジュールに対して関連付けられている複数のテストのうち、変更内容に応じたテストに絞り込むことが好ましい。なお、テスト対象プログラムにおける変更内容の一例として、定数の修正等の単純なソースコードの差異を示す修正箇所ではなく、テスト対象プログラムにおける関数を含むモジュールの関係に起因して他の関数を含むモジュールに影響を及ぼす変更箇所がある。
【００２９】
例えば、複数のテストの中から、ソースコードの修正箇所に対応するテストに絞り込むとき、変更箇所によって影響を受ける他のモジュールのテストが考慮されない場合がある。また、特定のテストを実行してエラーが発生したときに、モジュール間に相互の関係を有する他のモジュールのテストにおいてエラーが発生する場合があり、エラーが発生したテスト間は、相互に関係を有する共起関係にあると考えられる。従って、特定モジュールのテストを実行した結果、エラーが発生する場合、共起関係にある他のモジュールのテストを追加して実行することが好ましい。さらに、特定のテストと共起関係にあるテストは、共起関係にないテストに比べ、エラーが発生する確率が高いと考えられる。
【００３０】
そこで、本実施形態では、エラーが発生したテスト間を、相互に関係を有した共起関係があるテストとして関係づけ、関係づけたテスト間の情報を用いて実行すべきテストを特定する。なお、本実施形態では、共起関係にあるテスト間を関係づけた情報を取得するためにテスト関係図を示す関係図情報６６を使用する。
【００３１】
図３に、テスト装置１０におけるテスト対象プログラムのテストの流れの一例を示す。図３に示すテストの流れは、開示の技術のテストプログラムの一例として実行されるテストプログラム５０による処理である。なお、以下の説明では、入力１を示す情報を、テスト対象プログラムの変更前のソースコードを示す情報として説明する。また、入力２を示す情報を、テスト対象プログラムの変更前のソースコードに対応するテスト関係図を示す情報として説明する。また、入力３を示す情報を、テスト対象プログラムの変更後のソースコードを示す情報、及びテスト対象プログラムの変更後のソースコードに対応するテストを示す情報として説明する。
【００３２】
まず、ＣＰＵ３２は、テストプログラム５０に含まれる各プロセスの実行を開始する。具体的には、ＣＰＵ３２は、ステップ１００において、蓄積部３８からソース情報６２を取得することにより、テスト対象プログラムを読み取る。次に、ＣＰＵ３２は、ステップ１０２において、入力３を示す情報を用いて、テスト関係図の作成処理を実行する。
【００３３】
ここで、ＣＰＵ３２がステップ１００で実行するテスト関係図の作成処理を説明する。テスト関係図の作成処理では、テスト対象プログラムのソース情報６２を解析してテスト対象プログラムのプログラム依存グラフが作成される。また、テスト関係図の作成処理では、作成されたテスト対象プログラムのプログラム依存グラフに対して、テストの実行結果に基づいて各テストが関係づけられるテスト関係図が作成される。
【００３４】
図４に、テスト対象プログラムのソース情報６２の一例を示し、図５に、ソース情報６２におけるモジュールの関係を示す情報の一例を示す。また、図６に、テスト対象プログラムのプログラム依存グラフ７４の一例を示す。なお、以下の説明では、関数がモジュールに対応される一例を説明する。テスト対象プログラムのソース情報６２は、関数単位のソースコード６２Ａ，６２Ｂ，６２Ｃ，６２Ｄ，６２Ｅに分類され、分類されたソースコード６２Ａ〜６２Ｅの各々がコマンド等の実行内容により関係している。図４では、ソースコード６２Ａが関数ａ，ソースコード６２Ｂが関数ｂ，ソースコード６２Ｃが関数ｃ，ソースコード６２Ｄが関数ｄ，及びソースコード６２Ｅが関数ｅに対応される。関数単位のソースコード６２Ａ〜６２Ｅの各々は、自ソースコードから、自己以外のソースコード及びデバイスの少なくとも一つに対して依存関係を有する起点と考えられる。依存関係の一例として、制御依存関係またはデータ依存関係がある。また、デバイスの一例として、データを格納したストレージがある。
【００３５】
従って、図５に示すように、ソース情報６２の解析によって、依存関係の依存元、依存関係の依存先、及び依存関係の内容の各々を示す情報を得ることができる。図５には、関数ａ〜ｅを依存関係の依存元、依存関係の依存先、及び依存関係の内容の各々を示す情報のテーブル７２が示されている。テーブル７２を示す情報は、テスト対象プログラムのソース情報６２に対応付けられて、プログラム依存グラフ７４を示す依存図情報６４として蓄積部３８（図２）に記憶される。テーブル７２を示す情報は、テーブル情報６８に含めて蓄積部３８（図２）に記憶してもよい。また、図６では、図５に示すテーブル７２により作成されるテスト対象プログラムのプログラム依存グラフ７４として、関数ａ〜ｅが節点７６として表されている。また、図６に示すテスト対象プログラムのプログラム依存グラフ７４では、節点またはデバイスの間を有向線７８で接続した場合が示されている。なお、有向線７８は、節点７６である関数の内容が変更されたときに影響を及ぼす関係を関数間または関数とデバイスの間の関連づける接続関係として表すものでもある。
【００３６】
次に、テスト対象プログラムのプログラム依存グラフ７４において節点７６となる関数ａ〜ｅの各々に対して、テストが関係づけられる処理を説明する。テスト情報７０に含まれる１または複数のテストは、適用対象のテスト対象プログラムが予め定められている。また、１または複数のテストは、適用対象のテスト対象プログラムの全ての関数に適用されるものではない。そこで、本実施形態では、テスト対象プログラムに対するテストの実行により、対象となるテスト対象プログラムに含まれる関数を検出することにより、関数ａ〜ｅの各々に対してテストを関係づけている。
【００３７】
まず、テスト対象プログラムに対するテスト用の各テストをＣＰＵ３２に実行させ、テスト対象プログラムにおいて通過した関数を検出する。テストの実行により通過された関数は、実行されたテストに関連しており、通過された関数のうちプログラム依存グラフ７４における最上位の関数が起点の関数であると考えられる。従って、起点の関数が、実行したテストに関連付けられる。
【００３８】
図７に、プログラム依存グラフ７４における依存元（テスト対象プログラムに含まれる関数及びデバイス）と、テストとの関係を関数通過テーブル８０として示す。図７では、テストの実行により通過された関数が丸記号で示されている。また、図７では、関数ａ〜ｅ、及びｓｔｏｒａｇｅの順位で上位から下位に至る一例である。図７に示されように、テストａ_１〜ａ_６が最上位の関数ａに対応され、テストｂ_１〜ｂ_６が最上位の関数ｂに対応される。同様に、テストｃ_１〜ｃ_４が最上位の関数ｃに対応され、テストｄ_１、ｄ_２が最上位の関数ｄに対応され、テストｅ_１、ｅ_２が最上位の関数ｅに対応される。図８に、テスト対象プログラムに対してテストを実施した結果で、関数に関連付けられるテストを示す関数テストテーブル８２を示す。図８に示す関数テストテーブル８２を示す情報は、テーブル情報６８に含めて蓄積部３８（図２）に記憶される。
【００３９】
次に、プログラム依存グラフ７４（図６）と関数テストテーブル８２（図８）とからテスト関係図８４が作成される。作成されるテスト関係図８４は、テスト対象プログラムのプログラム依存グラフ７４における節点７６に、各関数に対応付けられる１以上のテストであるテストセット８６を関連付けたものである。図９に、テスト関係図８４の一例を示す。なお、以下の説明では、関数に対応付けられる１以上のテストをテストセット８６という。テストセット８６を関数ごとに区別する場合、関数を示す記号を付す。図９に示すテスト関係図８４では、関数ａに関連づけられるテストａ_１〜ａ_６をテストセット８６ａ、関数ｂに関連づけられるテストｂ_１〜ｂ_６をテストセット８６ｂと表記している。同様に、テストｃ_１〜ｃ_４をテストセット８６ｃ、テストｄ_１、ｄ_２をテストセット８６ｄ、テストｅ_１、ｅ_２をテストセット８６ｅと表記している。
【００４０】
また、テスト関係図８４は、共起関係も示すことができる。共起関係は、テスト対象プログラムに対してテストを実行したときに、エラーが発生した複数のテストの関係である。すなわち、共起関係は、テスト対象プログラムに対してテストセット８６に含まれるテストを、節点に対して順次実施した結果、エラーが発生した複数のテストについて、自節点のテストと他節点のテストの間の関係をいう。本実施形態では、エラーが発生した特定節点のテストと、特定節点と依存関係が上位の節点のテストとの相互関係を共起関係として説明する。なお、共起関係は、共起関係係数Ｋにより共起関係の度合いが示される。共起関係係数Ｋの一例として、共起関係が生じた累積回数、及び確率がある。
【００４１】
図９に示すテスト関係図８４では、説明のための一例として、共起線８８により接続されたテストａ_２とテストｂ_１に共起関係が生じた場合が示されている。また、図９に示すテスト関係図８４では、共起線８８付近に共起関係係数Ｋが「（１）」で表記されている。図１０に、テスト対象プログラムに対してテストを実施した結果により生じた共起関係を示す共起テーブル９０の一例を示す。図１０は、共起されたテストａ_２とテストｂ_１の合致セルに、共起関係係数Ｋが格納されたことを示すものである。図１０に示す共起テーブル９０を示す情報は、テーブル情報６８に含めて蓄積部３８（図２）に記憶される。なお、テスト関係図８４における共起関係すなわち共起線８８及び共起関係係数Ｋは、テストが実施される毎に更新される。
【００４２】
次に、ＣＰＵ３２は、ステップ１０２において、入力１を示す情報が有るか否かを判断する。つまり、ＣＰＵ３２は、蓄積部３８に蓄積されているソース情報６２に、テスト対象プログラムの変更前のソースコードを示すソース情報６２が存在するか否かを判断する。ＣＰＵ３２は、ステップ１０２で否定判断するとステップ１１６へ処理を移行し、ステップ１０２で肯定判断すると、ステップ１０４へ処理を移行する。ステップ１０４では、ＣＰＵ３２は、入力２を示す情報が有るか否かを判断する。つまり、ＣＰＵ３２は、蓄積部３８に蓄積されている関係図情報６６に、テスト対象プログラムの変更前のソースコードに対応するテスト関係図を示す関係図情報６６が存在するか否かを判断する。
【００４３】
ＣＰＵ３２は、ステップ１０４で否定判断すると、ステップ１０６において、入力１を示す情報、つまりテスト対象プログラムの変更前のソースコードを用いてプログラム依存グラフ７４を作成し、ステップ１１０へ処理を移行する。一方、ＣＰＵ３２は、ステップ１０４で肯定判断すると、ステップ１０８において、入力２を示す情報テスト対象プログラムの変更前のソースコードに対応するテスト関係図を用いて、ステップ１００で作成したテスト関係図８４に関係係数（共起関係係数Ｋ。詳細は後述。）を反映し、ステップ１１０へ処理を移行する。
【００４４】
次に、ＣＰＵ３２は、ステップ１１０において、テスト対象プログラムの変更箇所を特定した後に変更箇所リスト９２（図１１）を作成する。
【００４５】
変更箇所を特定する処理では、テスト対象プログラムの単なる修正箇所ではなく、プログラム依存グラフ７４における節点７６であるモジュールの一例である関数が特定される。つまり、ＣＰＵ３２は、変更前後のテスト対象プログラムの各ソース情報６２から修正箇所を抽出し、抽出した修正箇所に対応するプログラム依存グラフ７４における節点７６である関数を特定する。ＣＰＵ３２は、特定した変更箇所の関数を示す情報を変更箇所リスト９２として作成する。作成された変更箇所リスト９２を示す情報は、テーブル情報６８に含めて蓄積部３８（図２）に記憶される。なお、変更箇所リスト９２は、メモリ３４に一時的に記憶してもよい。
【００４６】
また、変更箇所を特定する処理では、特定された変更箇所により影響を受ける箇所も特定される。つまり、ＣＰＵ３２は、特定した変更箇所である関数の修正により影響を受ける箇所を特定する。具体的には、特定した変更箇所である関数の節点７６から、プログラム依存グラフ７４における有向線７８の依存元の関数を抽出することを繰り返す。例えば、関数ｃに修正が施された場合、プログラム依存グラフ７４における有向線７８の依存元の関数が、関数ｂ及び関数ａの順に抽出される。ＣＰＵ３２は、特定した変更箇所の関数、及び抽出した関数を示す情報を影響箇所リスト９４として、変更箇所毎に作成する。作成された影響箇所リスト９４を示す情報は、テーブル情報６８に含めて蓄積部３８（図２）に記憶される。なお、影響箇所リスト９４は、メモリ３４に一時的に記憶してもよい。
【００４７】
図１１に、変更箇所リスト９２の一例を示し、図１２に、影響箇所リスト９４の一例を示す。図１１に示す変更箇所リスト９２は、特定された変更箇所の関数が関数ｃと関数ｅである場合を示している。図１２に示す影響箇所リスト９４は、特定された変更箇所の関数が関数ｃであり、関数ｃの変更により影響を受ける関数として関数ｂ及び関数ａが抽出された場合を示している。
【００４８】
次に、ＣＰＵ３２は、ステップ１１２において、ステップ１１０で作成した変更箇所リスト９２から１つの変更箇所を選択する。なお、ＣＰＵ３２は、ステップ１１０で、変更箇所リスト９２における順位に従って選択する。また、ＣＰＵ３２は、ステップ１１２において、選択した変更箇所の節点である関数に関連付けられているテストセット８６を取得する。次に、ＣＰＵ３２は、ステップ１１４において、ステップ１１２で選択したテストセット８６が既に実施済みのテストセット８６であるか否かを判断する。ステップ１１２で選択したテストセット８６が既に実施済みのテストセット８６であるとき、ＣＰＵ３２はステップ１１４で肯定判断し、ステップ１１２へ戻る。なお、ステップ１１２で選択したテストセット８６が変更箇所リスト９２の最後の変更箇所であるときに、ＣＰＵ３２がステップ１１４で肯定判断した場合、本処理ルーチンを終了することができる。
【００４９】
一方、ステップ１１２で選択したテストセット８６が未実施のテストセット８６であるとき、ＣＰＵ３２は、ステップ１１４で否定判断し、ステップ１１６へ処理を移行する。ステップ１１６では、ＣＰＵ３２は、ステップ１１２で取得したテストセット８６を実行し、次のステップ１１８で、テストセット８６の実行結果をテスト関係図８４に反映する。
【００５０】
次に、ＣＰＵ３２は、ステップ１２０において、テストセット８６を実施した関数の上位にテストセット８６が関連付けられた関数が有るか否かを判断する。つまり、ＣＰＵ３２は、プログラム依存グラフ７４でテストセット８６を実施した関数に対応する節点について、上位階層に節点、つまり依存関係を有する関数が有るか否かを判断する。具体的には、ＣＰＵ３２は、ステップ１１２で選択された変更箇所に対応する影響箇所リスト９４を参照し、現在処理中の節点の上位に節点（関数）が有るか否かを判断する。ステップ１１６で実施したテストセット８６が最上位の場合、ＣＰＵ３２は、ステップ１２０で否定判断し、ステップ１２４において変更箇所リスト９２にテストセット８６を実施していない残存する変更箇所があるか否かを判断する。変更箇所リスト９２に登録された変更箇所の全てについてテストセット８６を実施した場合には、ＣＰＵ３２はステップ１２４で否定判断し、本処理ルーチンを終了する。変更箇所リスト９２にテストセット８６を実施していない変更箇所が存在する場合には、ＣＰＵ３２は、ステップ１２４で肯定判断し、ステップ１１２の処理に戻り、残存する変更箇所に対する処理を実行する。
【００５１】
ステップ１１６で実施したテストセット８６の上位に関数がある場合、ＣＰＵ３２は、ステップ１２０で肯定判断し、ステップ１２２において、エラーが発生したテストと共起関係にあるテストを、追加して実行するテストとして抽出する。ＣＰＵ３２は、ステップ１２２で、抽出したテスト、つまり上位のテストセット８６に含まれるテストの実行順序を決定した後に、ステップ１１６の処理へ戻り実行する。なお、ステップ１１６で実施したテストセット８６でエラーが生じなかった場合、ＣＰＵ３２は、上位のテストセット８６に含まれる全てのテストを実施してもよい。また、ＣＰＵ３２は、テスト関係図８４に反映されている、変更箇所に対応するテストで過去にエラーが発生した共起関係にあるテストの実施順位を用いてテストを特定してもよい。
【００５２】
ステップ１２２では、テストセット８６の優先度に基づいて実行順序が決定される。詳細には、まず、エラーが発生したテストと共起関係にある上位関数のテストセット８６に含まれるテストの優先度ＴＰを次の数式により示される優先度判定式により求める。優先度判定式は、各テストセット８６の優先度ＴＰ（TestPriority）を下位のテストセット８６の共起関係の重み(relation_value)の和から求めるものである。なお、共起関係の重み（reration_value）は、共起関係係数Ｋである。また、テストは(Test)、下位のテストセット８６は（LowerTestCase）として表記している。なお、共起関係にない下位のテストセット８６に含まれるテストでは共起関係の重み（共起関係係数Ｋ）が０になる。次に、求めた優先度ＴＰが高い順序でテストの実施順位を決定し、決定された順位によるテストを、上位のテストセット８６におけるテストの実行順序として決定する。
【数１】
2015026222.tif 000003
【００５３】
なお、ステップ１１６で実施したテストセット８６の上位に複数の関数が存在する場合がある。この場合、複数の関数の各々に対応付けられるテストセット８６に含まれるテストの各々の優先度ＴＰの総和を求め、求めた総和に基づいて、例えば優先度が高い序列で実行順序を決定すればよい。
【００５４】
具体的には、図１１に示す変更箇所リスト９２の場合、まず、変更箇所リスト９２を参照し変更箇所として関数ｃを選択して、関数ｃに関するテストセット８６ｃが実施される。関数ｃに関するテストセット８６ｃに含まれるテストでエラーがない場合は上位の階層の関数ｂのテストセット８６ｂ、次に関数ａのテストセット８６ａが実施される。一方、関数ｃに関するテストセット８６ｃでエラーが発生した場合、上位階層のテストセット８６ｂで共起関係にあるテストを抽出し、各テストの優先度ＴＰつまり共起関係の重みの和の順にテストが実施される。
【００５５】
図１３に、テストセット８６の優先度に基づいて実行順序を決定することを説明するためのテスト関係図８４の一例を示す。図１３の例は、関数ｃを修正後、関数ｃのテストセット８６ｃを実施した結果、テストｃ_１、テストｃ_３でエラーが発生したときを示している。また、図１４に、共起関係を示す共起テーブル９０の一例を示す。図１４では、共起関係にあるテストｃ_２とテストｂ_２の合致セルに、共起関係係数Ｋとして「１５」が格納されていることが示されている。同様に、共起関係にあるテストｃ_３とテストｂ_２の合致セルに「２０」が格納され、テストｃ_３とテストｂ_４の合致セルに「２０」が格納され、テストｃ_３とテストｂ_５の合致セルに「３０」が格納されている。
【００５６】
関数ｃのテストセット８６ｃの上位の関数ｂのテストセット８６ｂにおいて、共起関係にあるものはテストｂ_２、テストｂ_４、及びテストｂ_５である。また、テストｂ_１、テストｂ_３、及びテストｂ_６には共起関係がない。また、共起関係の重みの和である優先度ＴＰは、テストｂ_２＝３５、テストｂ_４＝２０、及びテストｂ_５＝３０である。従って、テストセット８６ｂに関して実施対象のテストは、テストｂ_２、テストｂ_４、及びテストｂ_５であり、テストｂ_２、テストｂ_５、及びテストｂ_４の順序が決定され、決定された順序で優先的にテストが実施される。
【００５７】
なお、テストの実施により、共起してエラーが発生するテストを含むテストセットがあった場合は、テスト間の共起関係係数Ｋが更新される。例えば、図１３及び図１４に示す関係にあるとき、テスト_c_3とテスト_b_4が共起してエラーが発生した場合、テスト_c_3とテスト_b_4の共起関係係数Ｋが「２０」から「２１」に更新される。
【００５８】
なお、以上説明したテストプログラム５０による処理において、ステップ１００の処理が関係図作成プロセス５２による処理に含まれる。また、ステップ１１０の処理が変更箇所特定プロセス５４による処理に含まれる。また、ステップ１１２及び１１６の処理がテスト実施プロセス５６による処理に含まれる。また、ステップ１１８の処理が関係図作成プロセス５２による処理に含まれる。また、ステップ１２２の処理が優先度判定プロセス５８による処理に含まれる。
【００５９】
以上説明したように、本実施形態では、テスト対象プログラムの変更箇所に該当する関数と依存関係を有する他の関数との間で共起関係にある関数に対応付けられるテストについて、優先的に実施する。つまり、テスト対象プログラムの変更箇所に対応するテストでエラーが生じた場合、テスト対象プログラムのモジュール間の関係からテスト間の関係が定められた共起関係にあるテストを追加して特定し、実行する。このように、プログラムに含まれる関数に対応するテストについて、蓄積されたテスト間の相互関係を用いて実施対象のテストを特定でき、テスト対象プログラムに対するテスト内容を特定することができる。これによって、テスト対象プログラムに対するテストについて、例えば、プログラム修正などの変更に伴うリグレッションテストの実行範囲を抑制でき、またテストの処理時間を短縮することができる。
【００６０】
また、本実施形態では、複数のテストの間の関係を示す情報を蓄積部３８に記憶することにより、テストを実行した結果を蓄積することができる。
【００６１】
また、本実施形態では、所定の関数を含むモジュールに対してテストが対応されるので、プログラムのソースコードを関数単位で分類してテストを対応させることができる。
【００６２】
また、本実施形態では、特定のテストを実行させたときに、所定の実行結果としてエラーが生じた場合に、依存関係にあるテストとの間の相互関係を蓄積している。従って、テスト対象プログラムをテストするときに、関数で発生するエラーに対して迅速に対応することができる。
【００６３】
また、本実施形態では、テスト対象プログラムの変更箇所に該当する関数と依存関係を有する他の関数との間の相互関係を示す情報を、共起関係係数Ｋにより相互関係の度合いが示される共起関係を示す情報としている。共起関係係数Ｋは、特定のテストを実行させたときに、エラーが生じた場合、逐次更新される。従って、テスト対象プログラムに対する変更箇所に依存する影響箇所に対して、エラーが生じる可能性が高い箇所の履歴を蓄積することができ、テスト対象プログラムにおける変更箇所に対して影響することが予測されるテストを実行させることができる。
【００６４】
また、本実施形態では、複数のテストを含むテストセットを、特定の関数に関連付けている。テスト対象プログラム上の関数の依存関係において、関数に対応付けたテストセットに含まれるテスト間の相互関係である共起関係を示す情報を用いている。従って、特定の関数に複数のテストが関連付けられる場合であっても、テストセットに含まれるテスト間の共起関係により、エラーが生じる可能性が高いことが予測されるテストを実行させることができる。
【００６５】
また、本実施形態では、共起関係係数Ｋにより相互関係の度合いが示される共起関係を示す情報を用いて関数に対応付けたテストセットに含まれるテストの実行順序を決定している。従って、エラーが生じる可能性が高いことが予測されるテストを順位づけて実行させることができる。
【００６６】
また、本実施形態では、テスト対象プログラムの変更箇所について、ソースコードの単純な変更ではなく、他と依存性を有する起点となる関数等を変更箇所を抽出する。従って、依存関係がある関数に対してテストを実行することができ、テスト対象プログラム上の関数の依存関係を考慮してテストを実行することができる。
【００６７】
また、本実施形態では、テスト対象プログラムにおいて実行順序を示す依存関係を求め、依存関係に基づきテストの実行順序を設定し、テスト対象プログラムに含まれる関数に対してテストを実行する。従って、テスト対象プログラムの実行内容に合致してテストを実行することができる。
【００６８】
（第２実施形態）
次に、第２実施形態を説明する。第１実施形態では、テスト装置１０をコンピュータ３０により実現したが、第２実施形態では、テスト装置１０を複数のコンピュータにより実現した場合の一例である。第２実施形態は、第１実施形態と同様の構成のため、同一部分には同一符号を付して詳細な説明を省略する。
【００６９】
図１５に、テスト装置１０を、複数のコンピュータ３０Ａ〜３０Ｄを含むコンピュータシステム１１で実現する一例を示す。複数のコンピュータ３０Ａ〜３０Ｄの各々は、コンピュータ３０と同様に、コンピュータ３０はＣＰＵ３２Ａ〜３２Ｄ、メモリ３４Ａ〜３４Ｄ、及び格納部３６Ａ〜３６Ｄを備えている。ＣＰＵ３２Ａ〜３２Ｄ、メモリ３４Ａ〜３４Ｄ、及び格納部３６Ａ〜３６Ｄは、バス４８Ａ〜３８Ｄを介して互いに接続されている。また、コンピュータ３０Ａ〜３０Ｄの各々は、ディスプレイ等の表示装置４０Ａ〜４０Ｄ、入力装置４２Ａ〜４２Ｄを備え、各々バス４８Ａ〜４８Ｄに接続されている。また、コンピュータ３０Ａ〜３０Ｄの各々は、ＩＯ装置４４Ａ〜４４Ｄがバス４８Ａ〜４８Ｄに接続されている。コンピュータ３０Ａ〜３０Ｄは、コンピュータネットワーク４９に接続するためのインタフェースである通信制御部４７Ａ〜４７Ｄを備えている。また、コンピュータネットワーク４９には、蓄積部３８を備えた蓄積装置３８Ｚが接続されている。
【００７０】
図１５に示すコンピュータシステム１１では、図２に示すテストプログラムに含まれる各プロセスを、別々のコンピュータ３０Ａ〜３０Ｄに格納して実行させる。また、本実施形態のコンピュータシステム１１では、コンピュータ３０Ａ〜３０Ｄの各々の間で、通信制御部４７Ａ〜４７Ｄおよびコンピュータネットワーク４９を介してデータやコマンドを授受する。
【００７１】
以上説明したように、第２実施形態では、テスト対象プログラムをテストする装置を機能別に分散させて、テストを実行できるので、第１実施形態の効果に加えて、テスト対象プログラムをテストするときにおける処理負荷を負荷分散できるという効果を有する。また分散された各機能に対するコンピュータを移動可能に設定でき、装置を設置する場所についての自由度を向上させることもできる。
【００７２】
なお、上記ではテスト装置１０をコンピュータ３０により実現する一例を説明した。しかし、これらの構成に限定されるものではなく、上記説明した要旨を逸脱しない範囲において、各種の改良及び変更を行っても良いのはもちろんである。
【００７３】
また、上記ではプログラムが記憶部に予め記憶（インストール）されている態様を説明したが、これに限定されるものではない。例えば、開示の技術におけるプログラムは、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等の記録媒体に記録されている形態で提供することも可能である。
【００７４】
本明細書に記載された全ての文献、特許出願及び技術規格は、個々の文献、特許出願及び技術規格が参照により取り込まれることが具体的かつ個々に記された場合と同程度に、本明細書中に参照により取り込まれる。
【００７５】
以上の実施形態に関し、更に以下の付記を開示する。
【００７６】
（付記１）
複数のモジュールを含むテスト対象プログラムのテストを、前記複数のモジュールの各々に関連付けられる個別テストの実行により行うときに、前記複数のモジュールの各々に関連付けられる個別テストの間の関係を示す情報を、前記複数のモジュールの相互関係を示す情報に基づいて生成し、
特定の前記個別テストを実行したときに所定の実行結果である場合に、前記個別テストの間の関係を示す情報に基づいて、前記所定の実行結果に対応して追加して実行する前記個別テストを特定する
ことを含む処理をコンピュータに実行させるためのテストプログラム。
【００７７】
（付記２）
前記複数の個別テストの間の関係を示す情報を記憶部に記憶し、
前記記憶部に記憶された前記個別テストの間の関係を示す情報に基づいて、前記所定の実行結果に対応して追加して実行する前記個別テストを特定する
付記１に記載のテストプログラム。
【００７８】
（付記３）
前記モジュールは、所定の関数を含む
付記１または付記２に記載のテストプログラム。
【００７９】
（付記４）
前記所定の実行結果は、前記特定の前記個別テストを実行したときにエラーが生じた場合を示す情報である
付記１〜付記３の何れか１項に記載のテストプログラム。
【００８０】
（付記５）
前記複数の個別テストの間の関係を示す情報は、前記テスト対象プログラムに対して実行した前記個別テストの各々のテスト結果に基づいて更新される
付記１〜付記４の何れか１項に記載のテストプログラム。
【００８１】
（付記６）
前記モジュールに関連付けられる個別テストは、複数の小テストを含み、
前記複数の個別テストの間の関係を示す情報は、前記個別テストに含まれる前記小テストの間の関係を示す情報を、前記複数のモジュールの相互関係を示す情報に基づいて生成する
付記１〜付記５の何れか１項に記載のテストプログラム。
【００８２】
（付記７）
前記モジュールに関連付けられる個別テストは、複数の小テストを含み、
前記個別テストの間の関係を示す情報を優先度情報として、前記優先度情報に基づいて前記特定される個別テストに含まれる複数の小テストの実行順序を決定する
付記１〜付記６の何れか１項に記載のテストプログラム。
【００８３】
（付記８）
前記テスト対象プログラムの変更箇所を抽出し、
抽出された前記変更箇所に対応するモジュールに関連付けられる前記個別テストを、前記特定の前記個別テストとして実行する
付記１〜付記７の何れか１項に記載のテストプログラム。
【００８４】
（付記９）
前記テスト対象プログラムは、実行順序を示す依存関係を有する複数のモジュールを含み、
実行順序を示す依存関係に従って前記テスト対象プログラムに含まれる前記モジュールに対して前記個別テストを実行する
付記１〜付記８の何れか１項に記載のテストプログラム。
【００８５】
（付記１０）
コンピュータが、
複数のモジュールを含むテスト対象プログラムのテストを、前記複数のモジュールの各々に関連付けられる個別テストの実行により行うときに、前記複数のモジュールの各々に関連付けられる個別テストの間の関係を示す情報を、前記複数のモジュールの相互関係を示す情報に基づいて生成し、
特定の前記個別テストを実行したときに所定の実行結果である場合に、前記個別テストの間の関係を示す情報に基づいて、前記所定の実行結果に対応して追加して実行する前記個別テストを特定する
ことを含むテスト方法。
【００８６】
（付記１１）
前記複数の個別テストの間の関係を示す情報を記憶部に記憶し、
前記記憶部に記憶された前記個別テストの間の関係を示す情報に基づいて、前記所定の実行結果に対応して追加して実行する前記個別テストを特定する
付記１０に記載のテスト方法。
【００８７】
（付記１２）
前記モジュールは、所定の関数を含む
付記１０または付記１１に記載のテスト方法。
【００８８】
（付記１３）
前記所定の実行結果は、前記特定の前記個別テストを実行させたときにエラーが生じた場合を示す情報である
付記１０〜付記１２の何れか１項に記載のテスト方法。
【００８９】
（付記１４）
前記複数の個別テストの間の関係を示す情報は、前記テスト対象プログラムに対して実行された前記個別テストの各々のテスト結果に基づいて更新される
付記１０〜付記１３の何れか１項に記載のテスト方法。
【００９０】
（付記１５）
前記モジュールに関連付けられる個別テストは、複数の小テストを含み、
前記複数の個別テストの間の関係を示す情報は、前記個別テストに含まれる前記小テストの間の関係を示す情報を、前記複数のモジュールの相互関係を示す情報に基づいて生成する
付記１０〜付記１４の何れか１項に記載のテスト方法。
【００９１】
（付記１６）
前記モジュールに関連付けられる個別テストは、複数の小テストを含み、
前記個別テストの間の関係を示す情報を優先度情報として、前記優先度情報に基づいて前記特定される個別テストに含まれる複数の小テストの実行順序を決定する
付記１０〜付記１５の何れか１項に記載のテスト方法。
【００９２】
（付記１７）
前記テスト対象プログラムの変更箇所を抽出し、
抽出された前記変更箇所に対応するモジュールに関連付けられる前記個別テストを、前記特定の前記個別テストとして実行する
付記１０〜付記１６の何れか１項に記載のテスト方法。
【００９３】
（付記１８）
前記テスト対象プログラムは、実行順序を示す依存関係を有する複数のモジュールを含み、
実行順序を示す依存関係に従って前記テスト対象プログラムに含まれる前記モジュールに対して前記個別テストを実行する
付記１０〜付記１７の何れか１項に記載のテスト方法。
【００９４】
（付記１９）
複数のモジュールを含むテスト対象プログラムのテストを、前記複数のモジュールの各々に関連付けられる個別テストの実行により行うときに、前記複数のモジュールの各々に関連付けられる個別テストの間の関係を示す情報を、前記複数のモジュールの相互関係を示す情報に基づいて生成する関係図作成部と、
特定の前記個別テストを実行したときに所定の実行結果である場合に、前記個別テストの間の関係を示す情報に基づいて、前記所定の実行結果に対応して追加して実行する前記個別テストを特定する個別テスト特定部と、
を備えたテスト装置。
【００９５】
（付記２０）
前記関係図作成部は、前記複数の個別テストの間の関係を示す情報を記憶部に記憶し、
前記個別テスト特定部は、前記記憶部に記憶された前記個別テストの間の関係を示す情報に基づいて、前記所定の実行結果に対応して追加して実行する前記個別テストを特定する
付記１９に記載のテスト装置。
【００９６】
（付記２１）
前記モジュールは、所定の関数を含む
付記１９または付記２０に記載のテスト装置。
【００９７】
（付記２２）
前記個別テスト特定部は、前記所定の実行結果として、前記特定の前記個別テストを実行させたときにエラーが生じた場合を示す情報を用いる
付記１９〜付記２１の何れか１項に記載のテスト装置。
【００９８】
（付記２３）
前記関係図作成部は、前記複数の個別テストの間の関係を示す情報として、前記テスト対象プログラムに対して実行された前記個別テストの各々のテスト結果に基づいて更新される情報を用いる
付記１９〜付記２２の何れか１項に記載のテスト装置。
【００９９】
（付記２４）
前記モジュールに関連付けられる個別テストは、複数の小テストを含み、
前記関係図作成部は、前記複数の個別テストの間の関係を示す情報として、前記個別テストに含まれる前記小テストの間の関係を示す情報を、前記複数のモジュールの相互関係を示す情報に基づいて生成する
付記１９〜付記２３の何れか１項に記載のテスト装置。
【０１００】
（付記２５）
前記モジュールに関連付けられる個別テストは、複数の小テストを含み、
前記個別テスト特定部は、前記個別テストの間の関係を示す情報を優先度情報として、前記優先度情報に基づいて前記特定される個別テストに含まれる複数の小テストの実行順序を決定する
付記１９〜付記２４の何れか１項に記載のテスト方法。
【０１０１】
（付記２６）
前記テスト対象プログラムの変更箇所を抽出する変更箇所特定部を備え、
前記個別テスト特定部は、抽出された前記変更箇所に対応するモジュールに関連付けられる前記個別テストを、前記特定の前記個別テストとして実行する
付記１０〜付記１６の何れか１項に記載のテスト装置。
【０１０２】
（付記２７）
前記テスト対象プログラムは、実行順序を示す依存関係を有する複数のモジュールを含み、
実行順序を示す依存関係に従って前記テスト対象プログラムに含まれる前記モジュールに対して前記個別テストを実行するテスト実施部を備える
付記１９〜付記２６の何れか１項に記載のテスト装置。
【符号の説明】
【０１０３】
１０    テスト装置
１２    関係図作成部
１４    変更箇所特定部
１６    テスト実施部
１８    個別テスト特定部
２０    記憶部
３０    コンピュータ
３６    格納部
３８    蓄積部
４６    記録媒体
５０    テストプログラム
５２    関係図作成プロセス
５４    変更箇所特定プロセス
５６    テスト実施プロセス
５８    優先度判定プロセス
【図１】
2015026222.tif 000004
【図２】
2015026222.tif 000005
【図３】
2015026222.tif 000006
【図４】
2015026222.tif 000007
【図５】
2015026222.tif 000008
【図６】
2015026222.tif 000009
【図７】
2015026222.tif 000010
【図８】
2015026222.tif 000011
【図９】
2015026222.tif 000012
【図１０】
2015026222.tif 000013
【図１１】
2015026222.tif 000014
【図１２】
2015026222.tif 000015
【図１３】
2015026222.tif 000016
【図１４】
2015026222.tif 000017
【図１５】
2015026222.tif 000018