JP6217212B2 - テストプログラム、テスト方法及びテスト装置 - Google Patents

テストプログラム、テスト方法及びテスト装置 Download PDF

Info

Publication number
JP6217212B2
JP6217212B2 JP2013155046A JP2013155046A JP6217212B2 JP 6217212 B2 JP6217212 B2 JP 6217212B2 JP 2013155046 A JP2013155046 A JP 2013155046A JP 2013155046 A JP2013155046 A JP 2013155046A JP 6217212 B2 JP6217212 B2 JP 6217212B2
Authority
JP
Japan
Prior art keywords
test
relationship
individual
information indicating
tests
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013155046A
Other languages
English (en)
Other versions
JP2015026222A (ja
Inventor
裕司 溝渕
裕司 溝渕
邦昭 嶋田
邦昭 嶋田
裕二 和田
裕二 和田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013155046A priority Critical patent/JP6217212B2/ja
Priority to US14/340,748 priority patent/US9329981B2/en
Publication of JP2015026222A publication Critical patent/JP2015026222A/ja
Application granted granted Critical
Publication of JP6217212B2 publication Critical patent/JP6217212B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、テストプログラム、テスト方法及びテスト装置に関する。
近年、プログラムの開発に求められる期間は、短くなってきている。一方、求められるプログラムは、機能が増加し動作が複雑になってきているため、機能及び動作の確認のためのテストに要する工数が増大してきている。このような二律相反することに対して、効率的にプログラムのテストを実行する各種の技術が提案されている。
例えば、テストを実行する対象となるプログラム(以下、テスト対象プログラムという)に対する複数のテストの中から不具合検出率が高いテストを選択して実行する技術が知られている。この技術では、複数のテストの中から効率的にテストを選別するために、影響の大きい不具合がより多く存在する箇所を重点的にテストするという観点に立ち、テスト対象プログラムが有する機能にテストの優先度を付与している。テストの優先度は、機能に対する優先度付与するための評価観点及び評価値の重みづけを予め定めておき、評価観点及び評価値の重みづけを用いて、各機能毎にテストの優先度を決定する。決定されたテストの優先度を用いてテストを実行することで、不具合の検出率を向上させている。
また、テスト対象プログラムの変更された箇所に応じてテストすべき部分を予め抽出してプログラムのテストを実行する技術が知られている。この技術では、テスト対象プログラムの各行(例えばステイトメント)毎に依存関係を予め抽出し、変更された行と依存関係を有する行に対応するテストを実行する。また、この技術では、依存関係の強さを表す指標として大きい値になるに従って依存関係が低くなることを表す優先度を用いている。優先度は、予め、テスト対象プログラムを解析した解析結果から求まる依存関係により求めている。このようにテスト対象プログラムの変更された箇所と依存関係が強いテストを、予め解析により求めて実行することで、テストを効率化している。
さらに、テスト対象プログラムに対し、予め定められたテストの重要度と平均実行時間に基づいて、テストを選択する技術が知られている。この技術では、テストの重要度として、テストの実行可否を判断するための値が、予めユーザにより手動で設定される。
特開2008−204405号公報 特開2010−134643号公報
平山雅之、山本徹也、岡安二郎、水野修、菊野亨:機能モジュールに対する優先度に基づいた 選択的ソフトウェアテスト手法の提案、電子情報通信学会技術研究報告. SS, ソフトウェアサイエンス 101(98), 1-8, 2001-05-22
ところで、近年のソフトウェア利用の拡大に伴って、プログラムの開発には、限られた時間内で、プログラムのテストを実行してリリースすることが求められている。例えば、プログラムの開発に、DevOps(a portmanteau of development and operations)と呼ばれる手法が導入される場合がある。DevOpsは、リリースごとのプログラムの修正内容を細かくし、リリース間隔を短くする手法であり、プログラムのテストを実行してリリースするまでの期間がより短期間になってきている。つまり、プログラムに対する一度の修正量は少量であるが、テストに要求される時間は短時間に制約される。従って、テスト対象プログラムに対し、さらなるテストの効率化が求められている。
しかしながら、複数のテストの中から不具合検出率が高いテストを選択して実行する技術では、予め定めた評価観点及び評価値の重みづけを用いて決定された機能毎のテストの優先度に応じてテストを実行する。優先度は、予め定めた評価観点及び評価値の重みづけを用いて決定されるので、一度の修正量が少量なテスト対象プログラムであっても抽出されるテストは決定された優先度により特定される。このため、変更箇所に関係が希薄なテストが抽出される場合があり、テスト対象プログラムに対するテストを実行する時間が大幅に増加する場合がある。また、予め定めた評価観点等による優先度に基づいてテストを選別することでは、修正されたテスト対象プログラムのテスト結果に応じて次に実行するテストを特定することができない。
また、テスト対象プログラムの変更箇所に応じてテストすべき部分を抽出してプログラムのテストを実行する技術では、テスト対象プログラムの各行毎の依存関係を予め抽出しておき、変更された行と依存関係を有する行に対応するテストを実行する。ところが、この技術では、優先度の値に応じて変更箇所と依存関係が強い部分に対するテストが全て抽出されるので、変更箇所に関係が希薄なテストが抽出される場合がある。
さらに、予め定められたテストの重要度と平均実行時間に基づいてテストを選択する技術では、テストの実行可否を判断するための値が予めユーザにより手動で設定されるので、テスト対象プログラムで使用頻度が高い機能が選択されない場合がある。
1つの側面では、テスト対象プログラムの変更箇所に応じて実施対象の個別テストを特定して、テスト内容を特定することを目的とする。
1つの態様では、複数のモジュールを含むテスト対象プログラムのテストを、複数のモジュールの各々に関連付けられる個別テストの実行により行う。開示の技術は、複数のモジュールの各々に関連付けられる個別テストの間の関係を示す情報を、複数のモジュールの相互関係を示す情報に基づいて生成する。また、特定の個別テストを実行したときに所定の実行結果である場合に、個別テストの間の関係を示す情報に基づいて、所定の実行結果に対応して追加して実行する個別テストを特定する。このように、特定の個別テストが所定の実行結果である場合に、追加して実行する個別テストを特定することで、テスト内容を特定することができる。
1つの側面では、テスト対象プログラムの変更箇所に応じて実施対象の個別テストを特定して、テスト内容を特定できる、という効果を有する。
テスト装置の概略構成の一例を示すブロック図である。 コンピュータで実現するテスト装置の一例を示すブロック図である。 テスト装置におけるテスト処理の流れの一例を示すフローチャートである。 テスト対象プログラムのソースコードの一例を示すイメージ図である。 ソース情報におけるモジュールの関係の一例を示すイメージ図である。 テスト対象プログラムのプログラム依存グラフの一例を示すイメージ図である。 プログラム依存グラフにおける依存元に対するテストの関係を示すイメージ図である。 関数に関連付けられるテストのテーブルを示すイメージ図である。 テスト関係図の一例を示すイメージ図である。 共起関係を示す共起テーブルの一例を示すイメージ図である。 変更箇所リストの一例を示すイメージ図である。 影響箇所リストの一例を示すイメージ図である。 優先度に基づいて実行順序を決定することの説明図ある。 共起関係を示す共起テーブルの一例を示すイメージ図である。 コンピュータシステムで実現するテスト装置の一例を示すブロック図である。
以下、図面を参照して開示の技術の実施形態の一例を詳細に説明する。本実施形態は、複数のモジュールを含むテスト対象プログラムに対してテストを実行する場合の一例として、回帰テスト(リグレッションテスト)を実行する場合に、開示の技術を適用したものである。
(第1実施形態)
図1に、本実施形態に係るテスト対象プログラムのテスト装置の一例を示す。テスト装置10は、関係図作成部12、変更箇所特定部14、テスト実施部16及び個別テスト特定部18を備えている。個別テスト特定部18は、優先度判定部として機能する場合がある(詳細は後述)。テスト装置10には、記憶部20が接続されている。記憶部20には、テスト対象プログラムを示す情報22、テスト対象プログラムに対して実行される複数のテスト間の相互関係を示す情報24、及びテスト対象プログラムに対して実行される複数のテストの各々を示す情報26が記憶されている。
テスト対象プログラムを示す情報22の一例としてテスト対象プログラムのソースコードがある。テスト対象プログラムを示す情報22は、1つのテスト対象プログラムの変更履歴を示す情報を含めることができる。また、テスト対象プログラムを示す情報22は、1つのテスト対象プログラムについて、変更を施した後のテスト対象プログラム及び変更を施す前のテスト対象プログラムの各々を示す情報を含めることができる。また、複数の各テストを示す情報26の一例として各テストを実行するために用いるプログラムのソースコード及びテスト実行時のパラメータを示す情報がある。
テスト対象プログラムは、複数のモジュールを含み、複数のモジュールの各々は、1以上の所定関数を含むことができる。テストは、テスト対象プログラムに含まれる複数のモジュールの各々の機能及び動作を確認するための処理である。つまり、テストは、テスト対象プログラムに含まれる複数のモジュールの各々に関連付けられる。また、複数のテスト間の相互関係を示す情報24の一例として、モジュールの各々に対するテストの間の相互関係を示す情報がある。テスト対象プログラムに対するテストを実施したとき、テストが完了せずにエラーが発生したり不具合が生じたり(fail)する所定の実行結果に至る場合がある。特定のテストが所定の実行結果に至る場合、モジュール間の関係により他のテストが所定の実行結果に至るときがある。これらの特定のテストと共起関係にあるテストとの相互関係を示す情報24が記憶部20に記憶される。
なお、テスト装置10は開示の技術におけるテスト装置の一例であり、関係図作成部12は開示の技術における関係図作成部の一例である。また、変更箇所特定部14は開示の技術における変更箇所特定部の一例であり、テスト実施部16は開示の技術におけるテスト実施部の一例であり、個別テスト特定部18は開示の技術における個別テスト特定部の一例である。また、本実施形態におけるテストは、開示の技術における個別テストに対応する。
テスト装置10の関係図作成部12は、テスト対象プログラムに含まれる複数のモジュールの依存関係を示す情報、及びテストの間の相互関係を示す情報を作成し、記憶部20に記憶する。つまり、関係図作成部12は、複数のモジュールの各々に関連付けられるテストの間の関係を示す情報を、複数のモジュール相互の関係(依存関係)を示す情報に基づいて生成し記憶部20に記憶する。変更箇所特定部14は、ソースコード等のテスト対象プログラムを示す情報22の変更履歴を示す情報等に基づいて、テスト対象プログラムにおける変更箇所を特定する。テスト実施部16は、変更箇所特定部14により特定されたテスト対象プログラムにおける変更箇所に該当する所定関数等のモジュールに関連付けられるテストを実施する。
個別テスト特定部18は、テスト対象プログラムの変更箇所に該当するモジュールに関係するテストを特定する。つまり、修正されたテスト対象プログラムは変更箇所を有しており、個別テスト特定部18は、テスト対象プログラムの変更箇所に対応する特定のモジュールに対するテストのテスト結果に応じて、次に追加して実行するテストを特定する。例えば、テスト対象プログラムの変更箇所に該当するモジュールに関連付けられるテストは、他のモジュールに関連付けられるテストとの間に関係を有する場合がある。つまり、テストの実行により、エラー等の所定の実行結果に至るとき、テスト対象プログラムのモジュール間の関係(依存関係)により、他のモジュールに関連付けられるテストが共起してエラー等の所定の実行結果に至る場合がある。そこで、個別テスト特定部18は、相互関係を示す情報24を用いて、テスト対象プログラムの変更箇所に該当するモジュールのテストと共起関係にあるテスト、例えば上位関数を含む上位モジュールのテストを実行対象のテストとして特定する。個別テスト特定部18は、特定した実行対象のテストをテスト実施部16に実行させる。従って、テスト実施部16は、テスト対象プログラムの変更箇所に該当するモジュールの個別テストの実施に加えて、共起関係にあるテスト、例えば上位関数を含む上位モジュールのテストを追加して実行する。これによって、テスト対象プログラムに対するテストについて、例えば、プログラム修正などの変更に伴うリグレッションテストの実行範囲を抑制でき、またテストの処理時間を短縮することができる。
図2に、テスト装置10をコンピュータ30で実現する一例を示す。コンピュータ30はCPU32、メモリ34、不揮発性の格納部36及び蓄積部38を備えている。CPU32、メモリ34、格納部36及び蓄積部38は、バス48を介して互いに接続されている。また、コンピュータ30は、ディスプレイ等の表示装置40、キーボード及びマウス等の入力装置42を備え、表示装置40及び入力装置42はバス48に接続されている。また、コンピュータ30は、記録媒体46が挿入され、挿入された記録媒体46に対して読み書きするための装置(IO装置)44がバス48に接続されている。なお、格納部36及び蓄積部38はHDD(Hard Disk Drive)やフラッシュメモリ等によって実現できる。また、コンピュータ30はコンピュータネットワーク等に接続するためのインタフェースを備えることができる。
格納部36には、OS(Operating System)60及びコンピュータ30をテスト装置10として機能させるためのテストプログラム50が記憶されている。テストプログラム50は、関係図作成プロセス52、変更箇所特定プロセス54、テスト実施プロセス56及び優先度判定プロセス58を含んでいる。CPU32がテストプログラム50を格納部36から読み出してメモリ34に展開し、テストプログラム50が有する各プロセスを実行することで、コンピュータ30は図1に示すテスト装置10として動作する。また、CPU32が関係図作成プロセス52を実行することで、コンピュータ30は図1に示す関係図作成部12として動作し、CPU32が変更箇所特定プロセス54を実行することで、コンピュータ30は図1に示す変更箇所特定部14として動作する。また、CPU32がテスト実施プロセス56を実行することで、コンピュータ30は図1に示すテスト実施部16として動作し、CPU32が優先度判定プロセス58を実行することで、コンピュータ30は図1に示す個別テスト特定部18として動作する。
蓄積部38には、ソース情報62、依存図情報64,関係図情報66,テーブル情報68,及びテスト情報70が蓄積されている。ソース情報62は、テスト対象プログラムのソースコードを示す。依存図情報64は、テスト対象プログラムのソースコードにおける関数を含むモジュールの依存関係を示す。関係図情報66は、テスト対象プログラムのソースコードにおける関数を含むモジュールに関係づけられる個別のテストの間の相互関係を示す。テーブル情報68は、各種テーブルを示す。テスト情報70は、複数の個別のテストの各々のソースコード等の情報を示す。蓄積部38は、図1に示す記憶部20に対応する。ソース情報62は、図1に示すテスト対象プログラムを示す情報22に対応する。依存図情報64、関係図情報66及びテーブル情報68は、図1に示す相互関係を示す情報24に対応する。テスト情報70は、図1に示すテストを示す情報26に対応する。
なお、テスト対象プログラムのソースコードにおける関数の依存関係を表す技術の一例として、プログラム依存グラフがある。プログラム依存グラフに関する技術の一例として、次の文献が知られている。
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。
また、テスト装置10はコンピュータネットワークに接続することを可能としてもよい。つまり、テスト装置10はコンピュータネットワークに接続することまたは非接続にすることに限定さない。開示の技術におけるテスト装置10の一例のように、コンピュータ30のみで実現してもよく、複数のコンピュータによりテスト装置10を実現してもよい。
次に、本実施形態の作用を説明する。
テスト対象プログラムのテスト(例えば、リグレッションテスト)を実行する場合、テスト対象プログラムにおける変更内容を特定し、変更内容によって影響を受ける箇所を特定することが、効率的なテストの実行に寄与する。つまり、テスト対象プログラムのモジュールに対して関連付けられている複数のテストのうち、変更内容に応じたテストに絞り込むことが好ましい。なお、テスト対象プログラムにおける変更内容の一例として、定数の修正等の単純なソースコードの差異を示す修正箇所ではなく、テスト対象プログラムにおける関数を含むモジュールの関係に起因して他の関数を含むモジュールに影響を及ぼす変更箇所がある。
例えば、複数のテストの中から、ソースコードの修正箇所に対応するテストに絞り込むとき、変更箇所によって影響を受ける他のモジュールのテストが考慮されない場合がある。また、特定のテストを実行してエラーが発生したときに、モジュール間に相互の関係を有する他のモジュールのテストにおいてエラーが発生する場合があり、エラーが発生したテスト間は、相互に関係を有する共起関係にあると考えられる。従って、特定モジュールのテストを実行した結果、エラーが発生する場合、共起関係にある他のモジュールのテストを追加して実行することが好ましい。さらに、特定のテストと共起関係にあるテストは、共起関係にないテストに比べ、エラーが発生する確率が高いと考えられる。
そこで、本実施形態では、エラーが発生したテスト間を、相互に関係を有した共起関係があるテストとして関係づけ、関係づけたテスト間の情報を用いて実行すべきテストを特定する。なお、本実施形態では、共起関係にあるテスト間を関係づけた情報を取得するためにテスト関係図を示す関係図情報66を使用する。
図3に、テスト装置10におけるテスト対象プログラムのテストの流れの一例を示す。図3に示すテストの流れは、開示の技術のテストプログラムの一例として実行されるテストプログラム50による処理である。なお、以下の説明では、入力1を示す情報を、テスト対象プログラムの変更前のソースコードを示す情報として説明する。また、入力2を示す情報を、テスト対象プログラムの変更前のソースコードに対応するテスト関係図を示す情報として説明する。また、入力3を示す情報を、テスト対象プログラムの変更後のソースコードを示す情報、及びテスト対象プログラムの変更後のソースコードに対応するテストを示す情報として説明する。
まず、CPU32は、テストプログラム50に含まれる各プロセスの実行を開始する。具体的には、CPU32は、ステップ100において、蓄積部38からソース情報62を取得することにより、テスト対象プログラムを読み取る。次に、CPU32は、ステップ102において、入力3を示す情報を用いて、テスト関係図の作成処理を実行する。
ここで、CPU32がステップ100で実行するテスト関係図の作成処理を説明する。テスト関係図の作成処理では、テスト対象プログラムのソース情報62を解析してテスト対象プログラムのプログラム依存グラフが作成される。また、テスト関係図の作成処理では、作成されたテスト対象プログラムのプログラム依存グラフに対して、テストの実行結果に基づいて各テストが関係づけられるテスト関係図が作成される。
図4に、テスト対象プログラムのソース情報62の一例を示し、図5に、ソース情報62におけるモジュールの関係を示す情報の一例を示す。また、図6に、テスト対象プログラムのプログラム依存グラフ74の一例を示す。なお、以下の説明では、関数がモジュールに対応される一例を説明する。テスト対象プログラムのソース情報62は、関数単位のソースコード62A,62B,62C,62D,62Eに分類され、分類されたソースコード62A〜62Eの各々がコマンド等の実行内容により関係している。図4では、ソースコード62Aが関数a,ソースコード62Bが関数b,ソースコード62Cが関数c,ソースコード62Dが関数d,及びソースコード62Eが関数eに対応される。関数単位のソースコード62A〜62Eの各々は、自ソースコードから、自己以外のソースコード及びデバイスの少なくとも一つに対して依存関係を有する起点と考えられる。依存関係の一例として、制御依存関係またはデータ依存関係がある。また、デバイスの一例として、データを格納したストレージがある。
従って、図5に示すように、ソース情報62の解析によって、依存関係の依存元、依存関係の依存先、及び依存関係の内容の各々を示す情報を得ることができる。図5には、関数a〜eを依存関係の依存元、依存関係の依存先、及び依存関係の内容の各々を示す情報のテーブル72が示されている。テーブル72を示す情報は、テスト対象プログラムのソース情報62に対応付けられて、プログラム依存グラフ74を示す依存図情報64として蓄積部38(図2)に記憶される。テーブル72を示す情報は、テーブル情報68に含めて蓄積部38(図2)に記憶してもよい。また、図6では、図5に示すテーブル72により作成されるテスト対象プログラムのプログラム依存グラフ74として、関数a〜eが節点76として表されている。また、図6に示すテスト対象プログラムのプログラム依存グラフ74では、節点またはデバイスの間を有向線78で接続した場合が示されている。なお、有向線78は、節点76である関数の内容が変更されたときに影響を及ぼす関係を関数間または関数とデバイスの間の関連づける接続関係として表すものでもある。
次に、テスト対象プログラムのプログラム依存グラフ74において節点76となる関数a〜eの各々に対して、テストが関係づけられる処理を説明する。テスト情報70に含まれる1または複数のテストは、適用対象のテスト対象プログラムが予め定められている。また、1または複数のテストは、適用対象のテスト対象プログラムの全ての関数に適用されるものではない。そこで、本実施形態では、テスト対象プログラムに対するテストの実行により、対象となるテスト対象プログラムに含まれる関数を検出することにより、関数a〜eの各々に対してテストを関係づけている。
まず、テスト対象プログラムに対するテスト用の各テストをCPU32に実行させ、テスト対象プログラムにおいて通過した関数を検出する。テストの実行により通過された関数は、実行されたテストに関連しており、通過された関数のうちプログラム依存グラフ74における最上位の関数が起点の関数であると考えられる。従って、起点の関数が、実行したテストに関連付けられる。
図7に、プログラム依存グラフ74における依存元(テスト対象プログラムに含まれる関数及びデバイス)と、テストとの関係を関数通過テーブル80として示す。図7では、テストの実行により通過された関数が丸記号で示されている。また、図7では、関数a〜e、及びstorageの順位で上位から下位に至る一例である。図7に示されように、テストa_1〜a_6が最上位の関数aに対応され、テストb_1〜b_6が最上位の関数bに対応される。同様に、テストc_1〜c_4が最上位の関数cに対応され、テストd_1、d_2が最上位の関数dに対応され、テストe_1、e_2が最上位の関数eに対応される。図8に、テスト対象プログラムに対してテストを実施した結果で、関数に関連付けられるテストを示す関数テストテーブル82を示す。図8に示す関数テストテーブル82を示す情報は、テーブル情報68に含めて蓄積部38(図2)に記憶される。
次に、プログラム依存グラフ74(図6)と関数テストテーブル82(図8)とからテスト関係図84が作成される。作成されるテスト関係図84は、テスト対象プログラムのプログラム依存グラフ74における節点76に、各関数に対応付けられる1以上のテストであるテストセット86を関連付けたものである。図9に、テスト関係図84の一例を示す。なお、以下の説明では、関数に対応付けられる1以上のテストをテストセット86という。テストセット86を関数ごとに区別する場合、関数を示す記号を付す。図9に示すテスト関係図84では、関数aに関連づけられるテストa_1〜a_6をテストセット86a、関数bに関連づけられるテストb_1〜b_6をテストセット86bと表記している。同様に、テストc_1〜c_4をテストセット86c、テストd_1、d_2をテストセット86d、テストe_1、e_2をテストセット86eと表記している。
また、テスト関係図84は、共起関係も示すことができる。共起関係は、テスト対象プログラムに対してテストを実行したときに、エラーが発生した複数のテストの関係である。すなわち、共起関係は、テスト対象プログラムに対してテストセット86に含まれるテストを、節点に対して順次実施した結果、エラーが発生した複数のテストについて、自節点のテストと他節点のテストの間の関係をいう。本実施形態では、エラーが発生した特定節点のテストと、特定節点と依存関係が上位の節点のテストとの相互関係を共起関係として説明する。なお、共起関係は、共起関係係数Kにより共起関係の度合いが示される。共起関係係数Kの一例として、共起関係が生じた累積回数、及び確率がある。
図9に示すテスト関係図84では、説明のための一例として、共起線88により接続されたテストa_2とテストb_1に共起関係が生じた場合が示されている。また、図9に示すテスト関係図84では、共起線88付近に共起関係係数Kが「(1)」で表記されている。図10に、テスト対象プログラムに対してテストを実施した結果により生じた共起関係を示す共起テーブル90の一例を示す。図10は、共起されたテストa_2とテストb_1の合致セルに、共起関係係数Kが格納されたことを示すものである。図10に示す共起テーブル90を示す情報は、テーブル情報68に含めて蓄積部38(図2)に記憶される。なお、テスト関係図84における共起関係すなわち共起線88及び共起関係係数Kは、テストが実施される毎に更新される。
次に、CPU32は、ステップ102において、入力1を示す情報が有るか否かを判断する。つまり、CPU32は、蓄積部38に蓄積されているソース情報62に、テスト対象プログラムの変更前のソースコードを示すソース情報62が存在するか否かを判断する。CPU32は、ステップ102で否定判断するとステップ116へ処理を移行し、ステップ102で肯定判断すると、ステップ104へ処理を移行する。ステップ104では、CPU32は、入力2を示す情報が有るか否かを判断する。つまり、CPU32は、蓄積部38に蓄積されている関係図情報66に、テスト対象プログラムの変更前のソースコードに対応するテスト関係図を示す関係図情報66が存在するか否かを判断する。
CPU32は、ステップ104で否定判断すると、ステップ106において、入力1を示す情報、つまりテスト対象プログラムの変更前のソースコードを用いてプログラム依存グラフ74を作成し、ステップ110へ処理を移行する。一方、CPU32は、ステップ104で肯定判断すると、ステップ108において、入力2を示す情報テスト対象プログラムの変更前のソースコードに対応するテスト関係図を用いて、ステップ100で作成したテスト関係図84に関係係数(共起関係係数K。詳細は後述。)を反映し、ステップ110へ処理を移行する。
次に、CPU32は、ステップ110において、テスト対象プログラムの変更箇所を特定した後に変更箇所リスト92(図11)を作成する。
変更箇所を特定する処理では、テスト対象プログラムの単なる修正箇所ではなく、プログラム依存グラフ74における節点76であるモジュールの一例である関数が特定される。つまり、CPU32は、変更前後のテスト対象プログラムの各ソース情報62から修正箇所を抽出し、抽出した修正箇所に対応するプログラム依存グラフ74における節点76である関数を特定する。CPU32は、特定した変更箇所の関数を示す情報を変更箇所リスト92として作成する。作成された変更箇所リスト92を示す情報は、テーブル情報68に含めて蓄積部38(図2)に記憶される。なお、変更箇所リスト92は、メモリ34に一時的に記憶してもよい。
また、変更箇所を特定する処理では、特定された変更箇所により影響を受ける箇所も特定される。つまり、CPU32は、特定した変更箇所である関数の修正により影響を受ける箇所を特定する。具体的には、特定した変更箇所である関数の節点76から、プログラム依存グラフ74における有向線78の依存元の関数を抽出することを繰り返す。例えば、関数cに修正が施された場合、プログラム依存グラフ74における有向線78の依存元の関数が、関数b及び関数aの順に抽出される。CPU32は、特定した変更箇所の関数、及び抽出した関数を示す情報を影響箇所リスト94として、変更箇所毎に作成する。作成された影響箇所リスト94を示す情報は、テーブル情報68に含めて蓄積部38(図2)に記憶される。なお、影響箇所リスト94は、メモリ34に一時的に記憶してもよい。
図11に、変更箇所リスト92の一例を示し、図12に、影響箇所リスト94の一例を示す。図11に示す変更箇所リスト92は、特定された変更箇所の関数が関数cと関数eである場合を示している。図12に示す影響箇所リスト94は、特定された変更箇所の関数が関数cであり、関数cの変更により影響を受ける関数として関数b及び関数aが抽出された場合を示している。
次に、CPU32は、ステップ112において、ステップ110で作成した変更箇所リスト92から1つの変更箇所を選択する。なお、CPU32は、ステップ110で、変更箇所リスト92における順位に従って選択する。また、CPU32は、ステップ112において、選択した変更箇所の節点である関数に関連付けられているテストセット86を取得する。次に、CPU32は、ステップ114において、ステップ112で選択したテストセット86が既に実施済みのテストセット86であるか否かを判断する。ステップ112で選択したテストセット86が既に実施済みのテストセット86であるとき、CPU32はステップ114で肯定判断し、ステップ112へ戻る。なお、ステップ112で選択したテストセット86が変更箇所リスト92の最後の変更箇所であるときに、CPU32がステップ114で肯定判断した場合、本処理ルーチンを終了することができる。
一方、ステップ112で選択したテストセット86が未実施のテストセット86であるとき、CPU32は、ステップ114で否定判断し、ステップ116へ処理を移行する。ステップ116では、CPU32は、ステップ112で取得したテストセット86を実行し、次のステップ118で、テストセット86の実行結果をテスト関係図84に反映する。
次に、CPU32は、ステップ120において、テストセット86を実施した関数の上位にテストセット86が関連付けられた関数が有るか否かを判断する。つまり、CPU32は、プログラム依存グラフ74でテストセット86を実施した関数に対応する節点について、上位階層に節点、つまり依存関係を有する関数が有るか否かを判断する。具体的には、CPU32は、ステップ112で選択された変更箇所に対応する影響箇所リスト94を参照し、現在処理中の節点の上位に節点(関数)が有るか否かを判断する。ステップ116で実施したテストセット86が最上位の場合、CPU32は、ステップ120で否定判断し、ステップ124において変更箇所リスト92にテストセット86を実施していない残存する変更箇所があるか否かを判断する。変更箇所リスト92に登録された変更箇所の全てについてテストセット86を実施した場合には、CPU32はステップ124で否定判断し、本処理ルーチンを終了する。変更箇所リスト92にテストセット86を実施していない変更箇所が存在する場合には、CPU32は、ステップ124で肯定判断し、ステップ112の処理に戻り、残存する変更箇所に対する処理を実行する。
ステップ116で実施したテストセット86の上位に関数がある場合、CPU32は、ステップ120で肯定判断し、ステップ122において、エラーが発生したテストと共起関係にあるテストを、追加して実行するテストとして抽出する。CPU32は、ステップ122で、抽出したテスト、つまり上位のテストセット86に含まれるテストの実行順序を決定した後に、ステップ116の処理へ戻り実行する。なお、ステップ116で実施したテストセット86でエラーが生じなかった場合、CPU32は、上位のテストセット86に含まれる全てのテストを実施してもよい。また、CPU32は、テスト関係図84に反映されている、変更箇所に対応するテストで過去にエラーが発生した共起関係にあるテストの実施順位を用いてテストを特定してもよい。
ステップ122では、テストセット86の優先度に基づいて実行順序が決定される。詳細には、まず、エラーが発生したテストと共起関係にある上位関数のテストセット86に含まれるテストの優先度TPを次の数式により示される優先度判定式により求める。優先度判定式は、各テストセット86の優先度TP(TestPriority)を下位のテストセット86の共起関係の重み(relation_value)の和から求めるものである。なお、共起関係の重み(reration_value)は、共起関係係数Kである。また、テストは(Test)、下位のテストセット86は(LowerTestCase)として表記している。なお、共起関係にない下位のテストセット86に含まれるテストでは共起関係の重み(共起関係係数K)が0になる。次に、求めた優先度TPが高い順序でテストの実施順位を決定し、決定された順位によるテストを、上位のテストセット86におけるテストの実行順序として決定する。
Figure 0006217212
なお、ステップ116で実施したテストセット86の上位に複数の関数が存在する場合がある。この場合、複数の関数の各々に対応付けられるテストセット86に含まれるテストの各々の優先度TPの総和を求め、求めた総和に基づいて、例えば優先度が高い序列で実行順序を決定すればよい。
具体的には、図11に示す変更箇所リスト92の場合、まず、変更箇所リスト92を参照し変更箇所として関数cを選択して、関数cに関するテストセット86cが実施される。関数cに関するテストセット86cに含まれるテストでエラーがない場合は上位の階層の関数bのテストセット86b、次に関数aのテストセット86aが実施される。一方、関数cに関するテストセット86cでエラーが発生した場合、上位階層のテストセット86bで共起関係にあるテストを抽出し、各テストの優先度TPつまり共起関係の重みの和の順にテストが実施される。
図13に、テストセット86の優先度に基づいて実行順序を決定することを説明するためのテスト関係図84の一例を示す。図13の例は、関数cを修正後、関数cのテストセット86cを実施した結果、テストc_1、テストc_3でエラーが発生したときを示している。また、図14に、共起関係を示す共起テーブル90の一例を示す。図14では、共起関係にあるテストc_2とテストb_2の合致セルに、共起関係係数Kとして「15」が格納されていることが示されている。同様に、共起関係にあるテストc_3とテストb_2の合致セルに「20」が格納され、テストc_3とテストb_4の合致セルに「20」が格納され、テストc_3とテストb_5の合致セルに「30」が格納されている。
関数cのテストセット86cの上位の関数bのテストセット86bにおいて、共起関係にあるものはテストb_2、テストb_4、及びテストb_5である。また、テストb_1、テストb_3、及びテストb_6には共起関係がない。また、共起関係の重みの和である優先度TPは、テストb_2=35、テストb_4=20、及びテストb_5=30である。従って、テストセット86bに関して実施対象のテストは、テストb_2、テストb_4、及びテストb_5であり、テストb_2、テストb_5、及びテストb_4の順序が決定され、決定された順序で優先的にテストが実施される。
なお、テストの実施により、共起してエラーが発生するテストを含むテストセットがあった場合は、テスト間の共起関係係数Kが更新される。例えば、図13及び図14に示す関係にあるとき、テスト_c_3とテスト_b_4が共起してエラーが発生した場合、テスト_c_3とテスト_b_4の共起関係係数Kが「20」から「21」に更新される。
なお、以上説明したテストプログラム50による処理において、ステップ100の処理が関係図作成プロセス52による処理に含まれる。また、ステップ110の処理が変更箇所特定プロセス54による処理に含まれる。また、ステップ112及び116の処理がテスト実施プロセス56による処理に含まれる。また、ステップ118の処理が関係図作成プロセス52による処理に含まれる。また、ステップ122の処理が優先度判定プロセス58による処理に含まれる。
以上説明したように、本実施形態では、テスト対象プログラムの変更箇所に該当する関数と依存関係を有する他の関数との間で共起関係にある関数に対応付けられるテストについて、優先的に実施する。つまり、テスト対象プログラムの変更箇所に対応するテストでエラーが生じた場合、テスト対象プログラムのモジュール間の関係からテスト間の関係が定められた共起関係にあるテストを追加して特定し、実行する。このように、プログラムに含まれる関数に対応するテストについて、蓄積されたテスト間の相互関係を用いて実施対象のテストを特定でき、テスト対象プログラムに対するテスト内容を特定することができる。これによって、テスト対象プログラムに対するテストについて、例えば、プログラム修正などの変更に伴うリグレッションテストの実行範囲を抑制でき、またテストの処理時間を短縮することができる。
また、本実施形態では、複数のテストの間の関係を示す情報を蓄積部38に記憶することにより、テストを実行した結果を蓄積することができる。
また、本実施形態では、所定の関数を含むモジュールに対してテストが対応されるので、プログラムのソースコードを関数単位で分類してテストを対応させることができる。
また、本実施形態では、特定のテストを実行させたときに、所定の実行結果としてエラーが生じた場合に、依存関係にあるテストとの間の相互関係を蓄積している。従って、テスト対象プログラムをテストするときに、関数で発生するエラーに対して迅速に対応することができる。
また、本実施形態では、テスト対象プログラムの変更箇所に該当する関数と依存関係を有する他の関数との間の相互関係を示す情報を、共起関係係数Kにより相互関係の度合いが示される共起関係を示す情報としている。共起関係係数Kは、特定のテストを実行させたときに、エラーが生じた場合、逐次更新される。従って、テスト対象プログラムに対する変更箇所に依存する影響箇所に対して、エラーが生じる可能性が高い箇所の履歴を蓄積することができ、テスト対象プログラムにおける変更箇所に対して影響することが予測されるテストを実行させることができる。
また、本実施形態では、複数のテストを含むテストセットを、特定の関数に関連付けている。テスト対象プログラム上の関数の依存関係において、関数に対応付けたテストセットに含まれるテスト間の相互関係である共起関係を示す情報を用いている。従って、特定の関数に複数のテストが関連付けられる場合であっても、テストセットに含まれるテスト間の共起関係により、エラーが生じる可能性が高いことが予測されるテストを実行させることができる。
また、本実施形態では、共起関係係数Kにより相互関係の度合いが示される共起関係を示す情報を用いて関数に対応付けたテストセットに含まれるテストの実行順序を決定している。従って、エラーが生じる可能性が高いことが予測されるテストを順位づけて実行させることができる。
また、本実施形態では、テスト対象プログラムの変更箇所について、ソースコードの単純な変更ではなく、他と依存性を有する起点となる関数等を変更箇所を抽出する。従って、依存関係がある関数に対してテストを実行することができ、テスト対象プログラム上の関数の依存関係を考慮してテストを実行することができる。
また、本実施形態では、テスト対象プログラムにおいて実行順序を示す依存関係を求め、依存関係に基づきテストの実行順序を設定し、テスト対象プログラムに含まれる関数に対してテストを実行する。従って、テスト対象プログラムの実行内容に合致してテストを実行することができる。
(第2実施形態)
次に、第2実施形態を説明する。第1実施形態では、テスト装置10をコンピュータ30により実現したが、第2実施形態では、テスト装置10を複数のコンピュータにより実現した場合の一例である。第2実施形態は、第1実施形態と同様の構成のため、同一部分には同一符号を付して詳細な説明を省略する。
図15に、テスト装置10を、複数のコンピュータ30A〜30Dを含むコンピュータシステム11で実現する一例を示す。複数のコンピュータ30A〜30Dの各々は、コンピュータ30と同様に、コンピュータ30はCPU32A〜32D、メモリ34A〜34D、及び格納部36A〜36Dを備えている。CPU32A〜32D、メモリ34A〜34D、及び格納部36A〜36Dは、バス48A〜38Dを介して互いに接続されている。また、コンピュータ30A〜30Dの各々は、ディスプレイ等の表示装置40A〜40D、入力装置42A〜42Dを備え、各々バス48A〜48Dに接続されている。また、コンピュータ30A〜30Dの各々は、IO装置44A〜44Dがバス48A〜48Dに接続されている。コンピュータ30A〜30Dは、コンピュータネットワーク49に接続するためのインタフェースである通信制御部47A〜47Dを備えている。また、コンピュータネットワーク49には、蓄積部38を備えた蓄積装置38Zが接続されている。
図15に示すコンピュータシステム11では、図2に示すテストプログラムに含まれる各プロセスを、別々のコンピュータ30A〜30Dに格納して実行させる。また、本実施形態のコンピュータシステム11では、コンピュータ30A〜30Dの各々の間で、通信制御部47A〜47Dおよびコンピュータネットワーク49を介してデータやコマンドを授受する。
以上説明したように、第2実施形態では、テスト対象プログラムをテストする装置を機能別に分散させて、テストを実行できるので、第1実施形態の効果に加えて、テスト対象プログラムをテストするときにおける処理負荷を負荷分散できるという効果を有する。また分散された各機能に対するコンピュータを移動可能に設定でき、装置を設置する場所についての自由度を向上させることもできる。
なお、上記ではテスト装置10をコンピュータ30により実現する一例を説明した。しかし、これらの構成に限定されるものではなく、上記説明した要旨を逸脱しない範囲において、各種の改良及び変更を行っても良いのはもちろんである。
また、上記ではプログラムが記憶部に予め記憶(インストール)されている態様を説明したが、これに限定されるものではない。例えば、開示の技術におけるプログラムは、CD−ROMやDVD−ROM等の記録媒体に記録されている形態で提供することも可能である。
本明細書に記載された全ての文献、特許出願及び技術規格は、個々の文献、特許出願及び技術規格が参照により取り込まれることが具体的かつ個々に記された場合と同程度に、本明細書中に参照により取り込まれる。
以上の実施形態に関し、更に以下の付記を開示する。
(付記1)
複数のモジュールを含むテスト対象プログラムのテストを、前記複数のモジュールの各々に関連付けられる個別テストの実行により行うときに、前記複数のモジュールの各々に関連付けられる個別テストの間の関係を示す情報を、前記複数のモジュールの相互関係を示す情報に基づいて生成し、
特定の前記個別テストを実行したときに所定の実行結果である場合に、前記個別テストの間の関係を示す情報に基づいて、前記所定の実行結果に対応して追加して実行する前記個別テストを特定する
ことを含む処理をコンピュータに実行させるためのテストプログラム。
(付記2)
前記複数の個別テストの間の関係を示す情報を記憶部に記憶し、
前記記憶部に記憶された前記個別テストの間の関係を示す情報に基づいて、前記所定の実行結果に対応して追加して実行する前記個別テストを特定する
付記1に記載のテストプログラム。
(付記3)
前記モジュールは、所定の関数を含む
付記1または付記2に記載のテストプログラム。
(付記4)
前記所定の実行結果は、前記特定の前記個別テストを実行したときにエラーが生じた場合を示す情報である
付記1〜付記3の何れか1項に記載のテストプログラム。
(付記5)
前記複数の個別テストの間の関係を示す情報は、前記テスト対象プログラムに対して実行した前記個別テストの各々のテスト結果に基づいて更新される
付記1〜付記4の何れか1項に記載のテストプログラム。
(付記6)
前記モジュールに関連付けられる個別テストは、複数の小テストを含み、
前記複数の個別テストの間の関係を示す情報は、前記個別テストに含まれる前記小テストの間の関係を示す情報を、前記複数のモジュールの相互関係を示す情報に基づいて生成する
付記1〜付記5の何れか1項に記載のテストプログラム。
(付記7)
前記モジュールに関連付けられる個別テストは、複数の小テストを含み、
前記個別テストの間の関係を示す情報を優先度情報として、前記優先度情報に基づいて前記特定される個別テストに含まれる複数の小テストの実行順序を決定する
付記1〜付記6の何れか1項に記載のテストプログラム。
(付記8)
前記テスト対象プログラムの変更箇所を抽出し、
抽出された前記変更箇所に対応するモジュールに関連付けられる前記個別テストを、前記特定の前記個別テストとして実行する
付記1〜付記7の何れか1項に記載のテストプログラム。
(付記9)
前記テスト対象プログラムは、実行順序を示す依存関係を有する複数のモジュールを含み、
実行順序を示す依存関係に従って前記テスト対象プログラムに含まれる前記モジュールに対して前記個別テストを実行する
付記1〜付記8の何れか1項に記載のテストプログラム。
(付記10)
コンピュータが、
複数のモジュールを含むテスト対象プログラムのテストを、前記複数のモジュールの各々に関連付けられる個別テストの実行により行うときに、前記複数のモジュールの各々に関連付けられる個別テストの間の関係を示す情報を、前記複数のモジュールの相互関係を示す情報に基づいて生成し、
特定の前記個別テストを実行したときに所定の実行結果である場合に、前記個別テストの間の関係を示す情報に基づいて、前記所定の実行結果に対応して追加して実行する前記個別テストを特定する
ことを含むテスト方法。
(付記11)
前記複数の個別テストの間の関係を示す情報を記憶部に記憶し、
前記記憶部に記憶された前記個別テストの間の関係を示す情報に基づいて、前記所定の実行結果に対応して追加して実行する前記個別テストを特定する
付記10に記載のテスト方法。
(付記12)
前記モジュールは、所定の関数を含む
付記10または付記11に記載のテスト方法。
(付記13)
前記所定の実行結果は、前記特定の前記個別テストを実行させたときにエラーが生じた場合を示す情報である
付記10〜付記12の何れか1項に記載のテスト方法。
(付記14)
前記複数の個別テストの間の関係を示す情報は、前記テスト対象プログラムに対して実行された前記個別テストの各々のテスト結果に基づいて更新される
付記10〜付記13の何れか1項に記載のテスト方法。
(付記15)
前記モジュールに関連付けられる個別テストは、複数の小テストを含み、
前記複数の個別テストの間の関係を示す情報は、前記個別テストに含まれる前記小テストの間の関係を示す情報を、前記複数のモジュールの相互関係を示す情報に基づいて生成する
付記10〜付記14の何れか1項に記載のテスト方法。
(付記16)
前記モジュールに関連付けられる個別テストは、複数の小テストを含み、
前記個別テストの間の関係を示す情報を優先度情報として、前記優先度情報に基づいて前記特定される個別テストに含まれる複数の小テストの実行順序を決定する
付記10〜付記15の何れか1項に記載のテスト方法。
(付記17)
前記テスト対象プログラムの変更箇所を抽出し、
抽出された前記変更箇所に対応するモジュールに関連付けられる前記個別テストを、前記特定の前記個別テストとして実行する
付記10〜付記16の何れか1項に記載のテスト方法。
(付記18)
前記テスト対象プログラムは、実行順序を示す依存関係を有する複数のモジュールを含み、
実行順序を示す依存関係に従って前記テスト対象プログラムに含まれる前記モジュールに対して前記個別テストを実行する
付記10〜付記17の何れか1項に記載のテスト方法。
(付記19)
複数のモジュールを含むテスト対象プログラムのテストを、前記複数のモジュールの各々に関連付けられる個別テストの実行により行うときに、前記複数のモジュールの各々に関連付けられる個別テストの間の関係を示す情報を、前記複数のモジュールの相互関係を示す情報に基づいて生成する関係図作成部と、
特定の前記個別テストを実行したときに所定の実行結果である場合に、前記個別テストの間の関係を示す情報に基づいて、前記所定の実行結果に対応して追加して実行する前記個別テストを特定する個別テスト特定部と、
を備えたテスト装置。
(付記20)
前記関係図作成部は、前記複数の個別テストの間の関係を示す情報を記憶部に記憶し、
前記個別テスト特定部は、前記記憶部に記憶された前記個別テストの間の関係を示す情報に基づいて、前記所定の実行結果に対応して追加して実行する前記個別テストを特定する
付記19に記載のテスト装置。
(付記21)
前記モジュールは、所定の関数を含む
付記19または付記20に記載のテスト装置。
(付記22)
前記個別テスト特定部は、前記所定の実行結果として、前記特定の前記個別テストを実行させたときにエラーが生じた場合を示す情報を用いる
付記19〜付記21の何れか1項に記載のテスト装置。
(付記23)
前記関係図作成部は、前記複数の個別テストの間の関係を示す情報として、前記テスト対象プログラムに対して実行された前記個別テストの各々のテスト結果に基づいて更新される情報を用いる
付記19〜付記22の何れか1項に記載のテスト装置。
(付記24)
前記モジュールに関連付けられる個別テストは、複数の小テストを含み、
前記関係図作成部は、前記複数の個別テストの間の関係を示す情報として、前記個別テストに含まれる前記小テストの間の関係を示す情報を、前記複数のモジュールの相互関係を示す情報に基づいて生成する
付記19〜付記23の何れか1項に記載のテスト装置。
(付記25)
前記モジュールに関連付けられる個別テストは、複数の小テストを含み、
前記個別テスト特定部は、前記個別テストの間の関係を示す情報を優先度情報として、前記優先度情報に基づいて前記特定される個別テストに含まれる複数の小テストの実行順序を決定する
付記19〜付記24の何れか1項に記載のテスト方法。
(付記26)
前記テスト対象プログラムの変更箇所を抽出する変更箇所特定部を備え、
前記個別テスト特定部は、抽出された前記変更箇所に対応するモジュールに関連付けられる前記個別テストを、前記特定の前記個別テストとして実行する
付記10〜付記16の何れか1項に記載のテスト装置。
(付記27)
前記テスト対象プログラムは、実行順序を示す依存関係を有する複数のモジュールを含み、
実行順序を示す依存関係に従って前記テスト対象プログラムに含まれる前記モジュールに対して前記個別テストを実行するテスト実施部を備える
付記19〜付記26の何れか1項に記載のテスト装置。
10 テスト装置
12 関係図作成部
14 変更箇所特定部
16 テスト実施部
18 個別テスト特定部
20 記憶部
30 コンピュータ
36 格納部
38 蓄積部
46 記録媒体
50 テストプログラム
52 関係図作成プロセス
54 変更箇所特定プロセス
56 テスト実施プロセス
58 優先度判定プロセス

Claims (6)

  1. 複数のモジュールを含むテスト対象プログラムのテストを、前記複数のモジュールの各々に関連付けられる個別テストの実行により行うときに、前記複数のモジュールの各々に関連付けられる個別テストの間の関係を示す情報を、前記複数のモジュールの相互関係を示す情報に基づいて生成し、
    特定の前記個別テストを実行したときに所定の実行結果である場合に、前記個別テストの間の関係を示す情報に基づいて、前記所定の実行結果に対応して追加して実行する前記個別テストを特定する
    ことを含む処理をコンピュータに実行させるためのテストプログラム。
  2. 前記複数の個別テストの間の関係を示す情報は、前記テスト対象プログラムに対して実行された前記個別テストの各々のテスト結果に基づいて更新される
    請求項1に記載のテストプログラム。
  3. 前記モジュールに関連付けられる個別テストは、複数の小テストを含み、
    前記複数の個別テストの間の関係を示す情報は、前記個別テストに含まれる前記小テストの間の関係を示す情報を、前記複数のモジュールの相互関係を示す情報に基づいて生成する
    請求項1または請求項2に記載のテストプログラム。
  4. 前記モジュールに関連付けられる個別テストは、複数の小テストを含み、
    前記個別テストの間の関係を示す情報を優先度情報として、前記優先度情報に基づいて前記特定される個別テストに含まれる複数の小テストの実行順序を決定する
    請求項1〜請求項3の何れか1項に記載のテストプログラム。
  5. コンピュータが、
    複数のモジュールを含むテスト対象プログラムのテストを、前記複数のモジュールの各々に関連付けられる個別テストの実行により行うときに、前記複数のモジュールの各々に関連付けられる個別テストの間の関係を示す情報を、前記複数のモジュールの相互関係を示す情報に基づいて生成し、
    特定の前記個別テストを実行したときに所定の実行結果である場合に、前記個別テストの間の関係を示す情報に基づいて、前記所定の実行結果に対応して追加して実行する前記個別テストを特定する
    ことを含むテスト方法。
  6. 複数のモジュールを含むテスト対象プログラムのテストを、前記複数のモジュールの各々に関連付けられる個別テストの実行により行うときに、前記複数のモジュールの各々に関連付けられる個別テストの間の関係を示す情報を、前記複数のモジュールの相互関係を示す情報に基づいて生成する関係図作成部と、
    特定の前記個別テストを実行したときに所定の実行結果である場合に、前記個別テストの間の関係を示す情報に基づいて、前記所定の実行結果に対応して追加して実行する前記個別テストを特定する個別テスト特定部と、
    を備えたテスト装置。
JP2013155046A 2013-07-25 2013-07-25 テストプログラム、テスト方法及びテスト装置 Expired - Fee Related JP6217212B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013155046A JP6217212B2 (ja) 2013-07-25 2013-07-25 テストプログラム、テスト方法及びテスト装置
US14/340,748 US9329981B2 (en) 2013-07-25 2014-07-25 Testing program, testing method, and testing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013155046A JP6217212B2 (ja) 2013-07-25 2013-07-25 テストプログラム、テスト方法及びテスト装置

Publications (2)

Publication Number Publication Date
JP2015026222A JP2015026222A (ja) 2015-02-05
JP6217212B2 true JP6217212B2 (ja) 2017-10-25

Family

ID=52391609

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013155046A Expired - Fee Related JP6217212B2 (ja) 2013-07-25 2013-07-25 テストプログラム、テスト方法及びテスト装置

Country Status (2)

Country Link
US (1) US9329981B2 (ja)
JP (1) JP6217212B2 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9507699B2 (en) * 2011-06-16 2016-11-29 Microsoft Technology Licensing, Llc Streamlined testing experience
JP6217212B2 (ja) * 2013-07-25 2017-10-25 富士通株式会社 テストプログラム、テスト方法及びテスト装置
CN105893233B (zh) * 2014-12-19 2021-04-27 伊姆西Ip控股有限责任公司 用于自动测试固件的方法和系统
JP6409577B2 (ja) * 2015-01-05 2018-10-24 富士通株式会社 テスト選択プログラム、テスト選択方法、及びテスト選択装置
US9652367B1 (en) * 2015-10-21 2017-05-16 Sap Portals Israel Ltd. Exploratory testing on multiple system landscapes
WO2017199517A1 (ja) * 2016-05-19 2017-11-23 株式会社Nttドコモ 試験選択装置
US9569341B1 (en) * 2016-05-25 2017-02-14 Semmle Limited Function execution prioritization
US10228936B2 (en) * 2016-12-16 2019-03-12 EntIT Software, LLC Software delivery pipeline management
DE102017200161A1 (de) * 2017-01-09 2018-07-12 Robert Bosch Gmbh Verfahren zum Erfassen von Signalen
JP6862949B2 (ja) * 2017-03-15 2021-04-21 富士通株式会社 テスト範囲出力プログラム、テスト範囲出力装置及びテスト範囲出力方法
US10430318B1 (en) * 2017-07-11 2019-10-01 Juniper Networks, Inc Systems and methods for efficiently performing regression testing on software updates
US10678673B2 (en) * 2017-07-12 2020-06-09 Fujitsu Limited Software program fault localization
US10831647B2 (en) 2017-09-20 2020-11-10 Sap Se Flaky test systems and methods
US10482005B1 (en) 2017-09-26 2019-11-19 EMC IP Holding Company LLC Method and apparatus for developer code risk assessment
US10747653B2 (en) * 2017-12-21 2020-08-18 Sap Se Software testing systems and methods
US11269759B2 (en) * 2018-11-15 2022-03-08 Sap Se Intelligent regression fortifier
US11151024B2 (en) * 2019-08-09 2021-10-19 International Business Machines Corporation Dynamic automation of DevOps pipeline vulnerability detecting and testing
US11599355B2 (en) * 2021-06-21 2023-03-07 Microsoft Technology Licensing, Llc Application module version management
WO2023187869A1 (ja) * 2022-03-28 2023-10-05 三菱電機株式会社 テスト支援装置、テスト支援方法、およびテスト支援プログラム

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6393053A (ja) 1986-10-08 1988-04-23 Hitachi Ltd プログラムテスト装置
JPH0210443A (ja) 1988-06-29 1990-01-16 Hitachi Ltd 再テストケース選択方式
US20050144529A1 (en) * 2003-10-01 2005-06-30 Helmut Gotz Method for defined derivation of software tests from use cases
US20050081106A1 (en) * 2003-10-08 2005-04-14 Henry Chang Software testing
US7747987B1 (en) * 2004-08-05 2010-06-29 Cisco Technology, Inc. System and method of analyzing risk in risk-based software testing
JP2007102475A (ja) * 2005-10-04 2007-04-19 Dainippon Screen Mfg Co Ltd ソフトウェアシステムのテストケース抽出装置、テストケース抽出プログラムおよびテストケース抽出方法
US7707552B2 (en) * 2005-10-17 2010-04-27 International Business Machines Corporation Method and system for autonomically prioritizing software defects
US7913230B2 (en) * 2007-01-31 2011-03-22 Oracle International Corporation Computer-implemented methods and systems for generating software testing documentation and test results management system using same
JP4939973B2 (ja) 2007-02-22 2012-05-30 富士通株式会社 試験制御装置、試験制御方法及び試験制御プログラム
US8356287B2 (en) * 2007-10-24 2013-01-15 International Business Machines Corporation Device, system and method of debugging computer programs
US8627287B2 (en) * 2007-11-29 2014-01-07 Microsoft Corporation Prioritizing quality improvements to source code
US7506312B1 (en) * 2008-01-31 2009-03-17 International Business Machines Corporation Method and system for automatically determining risk areas to retest
US20090265694A1 (en) * 2008-04-18 2009-10-22 International Business Machines Corporation Method and system for test failure analysis prioritization for software code testing in automated test execution
JP2009277110A (ja) * 2008-05-16 2009-11-26 Mitsubishi Electric Corp ソフトウェア試験及び開発支援装置並びに当該装置用プログラム
US8347223B2 (en) * 2008-09-29 2013-01-01 Nec Corporation GUI evaluation system, method, and program for evaluating a text input component
JP2010122959A (ja) * 2008-11-20 2010-06-03 Nec Corp テスト支援システム、方法、及び、プログラム
JP5213671B2 (ja) 2008-12-03 2013-06-19 株式会社日立ソリューションズ テストケースの選択方法及び選択システム
JP5516277B2 (ja) * 2010-09-22 2014-06-11 富士通株式会社 テストケース関係抽出方法、テストケース関係抽出装置及びテストケース関係抽出プログラム
US8826239B2 (en) * 2010-10-06 2014-09-02 International Business Machines Corporation Asynchronous code testing in integrated development environment (IDE)
JP5629239B2 (ja) * 2011-05-23 2014-11-19 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ソフトウェアの動作をテストする装置及び方法
US9195555B2 (en) * 2013-05-24 2015-11-24 International Business Machines Corporation Error injection into the leaf functions of call graphs
US9612943B2 (en) * 2013-06-28 2017-04-04 Synopsys, Inc. Prioritization of tests of computer program code
JP6217212B2 (ja) * 2013-07-25 2017-10-25 富士通株式会社 テストプログラム、テスト方法及びテスト装置

Also Published As

Publication number Publication date
US9329981B2 (en) 2016-05-03
JP2015026222A (ja) 2015-02-05
US20150033212A1 (en) 2015-01-29

Similar Documents

Publication Publication Date Title
JP6217212B2 (ja) テストプログラム、テスト方法及びテスト装置
US9703692B2 (en) Development supporting system
US8707268B2 (en) Testing operations of software
US9619373B2 (en) Method and apparatus to semantically connect independent build and test processes
JP4148527B2 (ja) 機能テスト・スクリプト生成装置
US8589884B2 (en) Method and system for identifying regression test cases for a software
JP6409577B2 (ja) テスト選択プログラム、テスト選択方法、及びテスト選択装置
CN108763091B (zh) 用于回归测试的方法、装置及系统
US20120185669A1 (en) Program inspection method and non-transitory, computer readable storage medium storing inspection program
JP2020067697A (ja) デッドコード解析プログラム、デッドコード解析方法及びデッドコード解析装置
CN103365772B (zh) 软件测试自动评价装置以及方法
CN111966578A (zh) 一种安卓兼容性缺陷修复效果的自动化评估方法
JP2008197962A (ja) 論理システムの障害検証方法、障害検証装置、および障害検証プログラム
US8554522B2 (en) Detection of design redundancy
JP2009252167A (ja) テスト項目生成装置、テスト項目生成システム、テスト項目生成方法、およびテスト項目生成プログラム
US20240354242A1 (en) Method and system for testing functionality of a software program using digital twin
JP6902513B2 (ja) ソースコード生成支援装置およびソースコード生成支援方法
JP2011113298A (ja) 流用ソースコード解析システム及びプログラム並びに記録媒体
JP2008269579A (ja) マルチタスク処理装置およびその方法
JP6476994B2 (ja) 指摘選別装置、指摘選別方法及びプログラム
JP2022156130A (ja) 試験項目選択装置、試験項目選択方法及びプログラム
KR101439392B1 (ko) 소프트웨어 재공학 방법 및 장치
WO2023033782A1 (en) Method and system for testing functionality of a software program using digital twin
JP2016024784A (ja) バグ予測装置及び方法及びプログラム
KR20240104240A (ko) 테스트 케이스 재사용을 위한 소프트웨어 테스트 시스템 및 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160405

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170207

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170829

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170911

R150 Certificate of patent or registration of utility model

Ref document number: 6217212

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees