(57)【要約】【課題】非機能要件のデグレードを検証することができるようなリグレッションテスト支援システムを得る。【解決手段】アプリケーションのリグレッションテストを行うリグレッションテスト支援システムにおいて、リグレッションテストを行ってできるデータを記録する実行記憶手段１４０と、テストデータに基づいて、アプリケーション内に含まれるプログラムを実行処理し、アプリケーションが実現する機能以外の非機能要件に係るデータを実行記憶手段１４０に記録し、実行結果に係るダンプリストのデータを記録する処理を行う実行処理手段１１０とを備えるテスト実行装置１００を有するものである。【選択図】図２
2015011396.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションのリグレッションテストを行うリグレッションテスト支援システムにおいて、
前記リグレッションテストを行ってできるデータを記録する実行記憶手段と、
テストデータに基づいて、アプリケーション内に含まれるプログラムを実行処理し、前記アプリケーションが実現する機能以外の非機能要件に係るデータを前記実行記憶手段に記録し、実行結果に係るダンプリストのデータを記録する処理を行う実行処理手段と
を備えるテスト実行装置を有することを特徴とするリグレッションテスト支援システム。
【請求項２】
前記アプリケーションに基づいて、アスペクト指向プログラムにより前記非機能要件の記録を行う機能の実行について記述したアスペクトを織り込んだテスト用アプリケーションを作成し、前記テスト用アプリケーションにより前記リグレッションテストを行うことを特徴とする請求項１に記載のリグレッションテスト支援システム。
【請求項３】
前記非機能要件は、前記アプリケーションにおいて、実行したプログラム数であることを特徴とする請求項１又は２に記載のリグレッションテスト支援システム。
【請求項４】
前記アプリケーション内のプログラム数における前記実行したプログラム数の割合であるカバレッジを演算するカバレッジ分析処理手段と、
該カバレッジ分析処理手段が演算した前記カバレッジを表示するカバレッジ分析表示手段とを備えるカバレッジ分析処理装置をさらに有することを特徴とする請求項３に記載のリグレッションテスト支援システム。
【請求項５】
前記非機能要件は、前記アプリケーションにおける、前記プログラムの処理時間であることを特徴とする請求項１〜４のいずれか一項に記載のリグレッションテスト支援システム。
【請求項６】
前回のリグレッションテストにおける前記プログラムの処理時間と今回のリグレッションテストにおける前記プログラムの処理時間との時間差を演算する性能検証処理手段と、
該性能検証処理手段が演算した前記時間差を表示する性能検証表示手段とを備える性能検証装置をさらに有することを特徴とする請求項５に記載のリグレッションテスト支援システム。
【請求項７】
前回のリグレッションテストにおける前記ダンプリストのデータと今回のリグレッションテストにおける前記ダンプリストのデータとの差分を検出する比較処理手段と、
該比較処理手段が検出した前記差分を表示する比較表示手段と、
あらかじめ前記差分として想定される事項を除外データとして記憶する比較記憶手段とを備え、
前記比較処理手段は、前記除外データに基づく前記差分については検出しないように処理する比較検証装置をさらに有することを特徴とする請求項１〜６のいずれか一項に記載のリグレッションテスト支援システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はリグレッションテストの支援を行うシステムに関するものである。
【背景技術】
【０００２】
例えば、Ｗｅｂページをインタフェースとしてサービスを提供するＷｅｂアプリケーション等の開発においてはリグレッションテストが行われる。リグレッションテストとは、デバッグ、仕様変更等によりプログラムを変更した場合、変更対象のプログラム以外のプログラムにおける機能に想定しない変化が発生していないか等を確認するテストである。例えばＷｅｂアプリケーションのリグレッションテストでは、Ｗｅｂアプリケーション又はＷｅｂアプリケーションを構成するプログラムを変更した後で、Ｗｅｂページの遷移順、Ｗｅｂページの表示内容等の機能が、想定した結果のデータと一致するかどうかを比較し、妥当性を検証する（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００３−２４８５９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで、アプリケーション又はアプリケーションを構成するプログラム（以下、アプリケーションという）に対して変更を加えていくと、想定外の影響により品質が劣化（デグレード）することがある。デグレードの代表的な事象としては、例えば、機能要件について、アプリケーションを実行しても想定どおりの処理結果を出力しなくなることである。また、プログラム処理速度の性能劣化、（テスト）カバレッジ（機能実行網羅率）低下等、非機能要件に対してもデグレードが発生することがある。例えば、基幹システムにおいては、性能劣化はシステムの可用性を損なうため、システムのアプリケーションについては性能要件が厳しい。また、カバレッジが低いアプリケーションは、不要なプログラムがアプリケーション内に存在する可能性があり、このようなプログラムは影響調査の妨げとなり、システムの保守性に悪影響を与える。
【０００５】
デグレードの確認にはリグレッションテストが有効であり、従来よりリグレッションテストを自動化する等によって効率化が進んでいる。しかしながら、性能、カバレッジ等のデグレードの検証を行うことは困難であった。
【０００６】
これは、観点毎に検証のための記述を、プログラムに記載（埋め込む）等する必要があったためである。埋め込みはプログラム内容を変更して行うため、プログラムを壊す等のリスクが伴っていた。また、埋め込みにともなう手間により効率が妨げられていた。
【０００７】
そこで、非機能要件のデグレードを検証することができるようなリグレッションテスト支援システムの実現が求められてきた。
【課題を解決するための手段】
【０００８】
そこで、本発明に係るリグレッションテスト支援システムは、アプリケーションのリグレッションテストを行うリグレッションテスト支援システムにおいて、リグレッションテストを行ってできるデータを記録する実行記憶手段と、テストデータに基づいて、アプリケーション内に含まれるプログラムを実行処理し、アプリケーションが実現する機能以外の非機能要件に係るデータを実行記憶手段に記録し、実行結果に係るダンプリストのデータを記録する処理を行う実行処理手段とを備えるテスト実行装置を有するものである。
【発明の効果】
【０００９】
本発明によれば、リグレッションテストを行ったときに、非機能要件に係るデータを記録するようにしたので、デグレードを効率的に確認することができる。このとき、アスペクト指向プログラムにより記述されたアスペクトをアプリケーションのソースコードに織り込んだテスト用アプリケーションを作成し、リグレッションテストを行うようにしたので、テスト時だけに必要な機能を含まないアプリケーションを作成した上で、より高度な検証が可能なリグレッションテストを行うことができる。また、アプリケーションの安全、保護をはかることができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態１に係るリグレッションテスト支援システムの構成を示す図である。
【図２】本発明の実施の形態１に係るテスト実行装置１００の構成を示す図である。
【図３】本発明の実施の形態１に係るテスト用アプリケーションについて説明する図である。
【図４】本発明の実施の形態１に係る比較検証装置２００の構成を示す図である。
【図５】本発明の実施の形態１に係るカバレッジ分析処理装置３００の構成を示す図である。
【図６】本発明の実施の形態１に係るカバレッジ分析処理手段３１０が行う処理を説明するための図である。
【図７】本発明の実施の形態１に係る性能検証装置４００の構成を示す図である。
【図８】本発明の実施の形態１に係る性能検証処理手段４１０が行う処理を説明するための図である。
【発明を実施するための形態】
【００１１】
実施の形態１．
図１は本発明の実施の形態１に係るリグレッションテスト支援システムの構成を示す図である。本実施の形態におけるシステムは、テスト実行装置１００、比較検証装置２００、カバレッジ分析処理装置３００及び性能検証装置４００を有している。
【００１２】
テスト実行装置１００は、テスト対象のアプリケーションのリグレッションテストを実行する装置である。ここで、本実施の形態のテスト実行装置１００においては、アプリケーションにアスペクトを織り込んだテスト用アプリケーションを実行する。アスペクトの織り込みについては後述する。比較検証装置２００は、テスト実行装置１００の実行結果として出力したダンプリストと、前回に実行したリグレッションテストにおけるダンプリストとを比較処理等を行う。そして、想定した結果が得られているか等の検証処理を行う。
【００１３】
カバレッジ分析処理装置３００は、テスト実行装置１００がリグレッションテストを実行したときにダンプリストと共に出力するデータであるカバレッジログを分析処理する。性能検証装置４００は、テスト実行装置１００がリグレッションテストを実行したときにダンプリストと共に出力するデータである性能ログを検証処理する。ここで、性能とは、本実施の形態ではアプリケーションの実行に係る処理時間（パフォーマンス）であるものとする。検証処理においては、例えば前回のテスト実行に係る性能ログと今回のテスト実行に係る性能ログとを比較等する。このように、本実施の形態では、非機能要件のうち、カバレッジと処理時間とに係る分析、検証等について説明する。
【００１４】
図２は本発明の実施の形態１に係るテスト実行装置１００の構成を示す図である。図２において、テスト実行装置１００は、実行処理手段１１０、実行入力手段１２０、実行表示手段１３０及び実行記憶手段１４０を有している。
【００１５】
実行処理手段１１０は、アプリケーション記憶部１４３が記憶する、テスト用アプリケーション（プログラム）を実行する。そして、入力データ記憶部１４１が記憶する入力データとテストデータ記憶部１４２が記憶するテストデータとに基づいて実行処理した結果であるダンプリストをダンプリスト記憶部１４４に記憶する。また、実行処理の際に、記録したカバレッジログ及び性能ログをカバレッジログ記憶部１４５及び性能ログ記憶部１４６に記憶する。また、実行入力手段１２０は、装置利用者の指示を入力する。実行表示手段１３０は、装置利用者に実行結果等の表示を行う。
【００１６】
実行記憶手段１４０は、実行処理手段１１０が行う実行処理に必要なデータ、実行処理した結果のデータ等を記憶する。入力データ記憶部１４１は入力データを記憶する。入力データとは、パラメータである。また、テストデータ記憶部１４２はテストデータを記憶する。テストデータとは、リグレッションテストを行う際のテストに係るデータである。アプリケーション記憶部１４３は、テスト対象のアプリケーションを記憶する。ダンプリスト記憶部１４４は、実行結果であるダンプリストをデータとして記憶する。カバレッジログ記憶部１４５は、アプリケーションを実行処理したときのカバレッジログをデータとして記憶する。性能ログ記憶部１４６は性能ログをデータとして記憶する。カバレッジログ及び性能ログについては後述する。
【００１７】
図３は本発明の実施の形態１に係るテスト用アプリケーションについて説明する図である。前述したように、本実施の形態では、アプリケーションからテスト用アプリケーションを作成してリグレッションテストを実行する。本実施の形態では、アプリケーションのソースファイルにアスペクトを織り込んでコンパイルしてテスト用アプリケーションを作成する。
【００１８】
ここで、アスペクトとは、アスペクト指向という考えに基づいて記述されたプログラムのモジュールである。アスペクト指向プログラミングでは、アプリケーション（プログラム）内で、分散して行われる共通した処理をまとめてアスペクトとし、コンパイル又は実行の際に結合して（織り込んで）、アプリケーションを構築する。
【００１９】
例えば、オブジェクト指向プログラミングは、関連するデータの集合とそれに対する手続き（メソッド）をひとつのまとまりとして、クラスという単位のモジュールとする。そして、複数のクラスを組み合わせてアプリケーション（プログラム）を構成する。このため、複数のクラスで共通する処理がある場合でも、各クラス（メソッド）に分散して記述等する必要がある。
【００２０】
一方、アスペクト指向プログラミングでは、共通する処理をアスペクトとして、クラスとは別に記述し、アスペクトの処理側からアスペクトの処理を織り込むクラス（メソッド）を指定する。これにより、共通処理について複数のクラスに記述する必要がなくなる。
【００２１】
例えば、本実施の形態では、各クラスにおいてメソッドの呼び出し時に記録する処理と、メソッド開始時刻及び終了時刻を記録する処理とを、アスペクト指向プログラムとして記述したアスペクトをアプリケーションのソースファイルとともにコンパイルすることで、テスト用アプリケーションを作成する。したがって、アプリケーションのソースファイルの内容を直接変更することなく、記録に係る処理を織り込んだテスト用アプリケーションを作成することができる。そして、リグレッションテストにおいて、記録に係る処理を実行させることができる。
【００２２】
また、複数のクラスに共通する（横断的に要求される）処理（機能）をまとめる形で記述することができる。クラス毎に記述を行う必要がないため、記述漏れ、記述しすぎ、誤記述、アプリケーションの破壊等を防ぐことができる。そして、記録に係る処理は、リグレッションテスト時以外には実行しないため、実際のアプリケーションには、記録に係る処理の記述をしなくてすむため、プログラムの短縮をはかることができる。
【００２３】
さらに、記録内容に関する変更を容易に行うことができる。また、例えば本実施の形態では、時刻の記録を行うが、例えばＪＡＶＡ（登録商標）では、ナノ秒オーダーでの記録が可能である。例えば、詳細な時間計測を必要とする場合に、アスペクトにおける記述をナノ秒オーダーで記録するように記述しておくことで、より有効に分析、検証等を容易に行うことができる。
【００２４】
図４は本発明の実施の形態１に係る比較検証装置２００の構成を示す図である。図４において、比較検証装置２００は、比較処理手段２１０、比較入力手段２２０、比較表示手段２３０及び比較記憶手段２４０を有している。
【００２５】
比較入力手段２２０は、利用者の指示等を信号として比較処理手段２１０に送る。また、比較表示手段２３０は、比較処理手段２１０が処理した結果等を利用者に表示する。そして、比較記憶手段２４０は、比較処理手段２１０が処理を行うために必要なデータを一時的又は長期的に記憶する。
【００２６】
ここで、本実施の形態の比較記憶手段２４０は、特に想定差分記憶部２４１を有しているものとする。想定差分記憶部２４１は、今回のリグレッションテストのダンプリストが、前回のリグレッションテストのダンプリストと違うと想定される事項（差分事項）について定義等したデータ（例えばテキストデータ等）を除外データとして記憶する。例えば、前回のリグレッションテストから、アプリケーション（プログラム）の内容等を変更すると、リグレッションテストを実行した結果が異なる場合がある。このような結果の違いは、あらかじめ想定された範囲内で起こる違いであり、テスト結果の妥当性検証には必要ない場合がある。そこで、ダンプリストの差分検出において、想定差分記憶部２４１に記憶された除外データについては、検出しないで除外するようにする（比較表示手段２３０には、差分として表示しないようにする）。このため、検出に係る差分の量が減る等して、検証の効率を向上させることができる。
【００２７】
比較処理手段２１０は、前回のリグレッションテストにおけるダンプリストの内容と今回のリグレッションテストにおけるダンプリストの内容とを比較処理して差分を検出し、比較表示手段２３０に表示させる処理を行う。ここで、比較処理において、想定差分記憶部２４１に除外データとして記憶された差分については検出しないようにする。
【００２８】
図５は本発明の実施の形態１に係るカバレッジ分析処理装置３００の構成を示す図である。図５において、カバレッジ分析処理装置３００は、カバレッジ分析処理手段３１０、カバレッジ分析入力手段３２０、カバレッジ分析表示手段３３０及びカバレッジ分析記憶手段３４０を有している。
【００２９】
カバレッジ分析入力手段３２０は、利用者の指示等を信号としてカバレッジ分析処理手段３１０に送る。また、カバレッジ分析表示手段３３０は、カバレッジ分析処理手段３１０が処理した結果等を利用者に表示する。そして、カバレッジ分析記憶手段３４０は、カバレッジ分析処理手段３１０が処理を行うために必要なデータを一時的又は長期的に記憶する。
【００３０】
図６は本発明の実施の形態１に係るカバレッジ分析処理手段３１０が行う処理を説明するための図である。カバレッジ分析処理手段３１０は、カバレッジログ等に基づいて分析処理を行う。ここで、カバレッジ分析処理手段３１０は、ソースファイル解析部３１１、カバレッジログ分析部３１２及びカバレッジ演算部３１３を有している。ここで、各部の機能をプログラムとして有するようにして、ハードウェアである処理手段が、プログラムを実行することにより、各部が行う機能を実現するようにしてもよい。
【００３１】
ソースファイル解析部３１１は、アプリケーションのソースファイルに基づいて、各クラスのメソッド数（実行可能なメソッド数）を数える処理を行う。また、カバレッジログ分析部３１２は、例えばテスト実行装置１００のカバレッジログ記憶部１４５が記憶するカバレッジログに基づいて、各クラスの呼び出しに係るメソッド数（実際に呼び出して実行したメソッド数）を数える処理を行う。
【００３２】
カバレッジ演算部３１３は、テスト実行装置１００が行ったリグレッションテストにおける各クラスのカバレッジを演算し、メソッド数等とともに、カバレッジ分析表示手段３３０に表示させる。ここで、本実施の形態では、カバレッジ演算部３１３はＳ１カバレッジを演算する。Ｓ１カバレッジは、次式（１）に示すように、実行可能なメソッド数に対する、実際に呼び出して実行したメソッド数の割合を百分率で表したものである。
Ｓ１カバレッジ＝
実際に呼び出して実行したメソッド数／実行可能なメソッド数×１００    …（１）
【００３３】
以上のようにして、利用者は、リグレッションテストにおけるカバレッジを得ることができる。例えば、前回のリグレッションテストにおけるカバレッジよりも、今回のリグレッションテストにおけるカバレッジの方が著しく低い場合には、アプリケーションを変更したことにより、不要機能が潜在したか、想定外の影響が及んだ可能性について検討することができる。ここで、特に限定するものではないが、カバレッジに関する基準値（例えば９８％等）をあらかじめ定めておき、カバレッジ分析処理手段３１０は、基準値を下回ったものと判断すると、利用者に報知等を行うようにしてもよい。
【００３４】
図７は本発明の実施の形態１に係る性能検証装置４００の構成を示す図である。図７において、性能検証装置４００は、性能検証処理手段４１０、性能検証入力手段４２０、性能検証表示手段４３０及び性能検証記憶手段４４０を有している。
【００３５】
性能検証入力手段４２０は、利用者の指示等を信号として性能検証処理手段４１０に送る。また、性能検証表示手段４３０は、性能検証処理手段４１０が処理した結果等を利用者に表示する。そして、性能検証記憶手段４４０は、性能検証処理手段４１０が処理を行うために必要なデータを一時的又は長期的に記憶する。
【００３６】
図８は本発明の実施の形態１に係る性能検証処理手段４１０が行う処理を説明するための図である。性能検証処理手段４１０は、時間演算処理部４１１及び時間比較処理部４１２を有している。ここで、各部の機能をプログラムとして有するようにして、ハードウェアである処理手段が、プログラムを実行することにより、各部が行う機能を実現するようにしてもよい。
【００３７】
時間演算処理部４１１は、実行記憶手段１４０の性能ログ記憶部１４６に性能ログとして記録されたメソッドの開始時刻と終了時刻とに基づいて、処理時間をメソッド毎に演算する。ここで、時間演算処理部４１１は、今回のリグレッションテスト実行分と前回のリグレッションテスト実行分による処理時間を演算する。また、前述したように、処理時間はナノ秒オーダーで演算することができる。そして、時間比較処理部４１２は、時間演算処理部４１１が演算した処理時間に基づいて、今回のテスト実行分と前回のテスト実行分との処理時間との時間差をメソッド毎に演算し、性能検証表示手段４３０に表示させる。
【００３８】
以上のように、本実施の形態のリグレッションテスト支援システムにおいては、テスト実行装置１００においてリグレッションテストを実行したときに、非機能要件であるカバレッジログ及び性能ログを、それぞれカバレッジログ記憶部１４５と性能ログ記憶部１４６とに記録するようにしたので、デグレードを効率的に確認することができる。このとき、アスペクト指向プログラムにより記述されたアスペクトをアプリケーションのソースコードに織り込んだテスト用アプリケーションを作成し、リグレッションテストを実行するようにしたので、テスト時だけに必要な機能を含まないアプリケーションを作成した上で、より高度なリグレッションテストを行うことができる。
【００３９】
また、カバレッジ分析処理装置３００において、カバレッジログを分析処理してカバレッジを演算し、例えば前回のカバレッジと比較を行うようにしたので、アプリケーションにおけるプログラムの変更誤り、変更により不要となったプログラムの検出等を支援することができる。そして、性能検証装置４００において、性能ログを検証処理して処理時間を演算し、例えば前回の処理時間との比較を行うようにしたので、性能劣化の支援を行うことができる。
【００４０】
実施の形態２．
上述の実施の形態では、各装置に分かれているが、例えば１又は複数の装置を１つの装置で構成するようにしてもよい。
【００４１】
また、上述の実施の形態１では、非機能要件として、カバレッジ及び処理時間（パフォーマンス）について説明したが、これに限定するものではない。非機能要件としては、他にもキャパシティ（メモリ使用量）がある。メモリが適切に管理されていないプログラムを実行すると、メモリの解放がうまくなされないことがある。このため、メモリリークを起こすことがある。さらにプログラムを実行するために必要なメモリの量が不足すると、プログラムの実行が中断してしまう恐れがある。そこで、例えば、メモリリークの懸念がある命令を実行したときにメモリの使用に係るログを記録することで、検証を行うことができる。
【符号の説明】
【００４２】
１００  テスト実行装置
１１０  実行処理手段
１２０  実行入力手段
１３０  実行表示手段
１４０  実行記憶手段
１４１  入力データ記憶部
１４２  テストデータ記憶部
１４３  アプリケーション記憶部
１４４  ダンプリスト記憶部
１４５  カバレッジログ記憶部
１４６  性能ログ記憶部
２００  比較検証装置
２１０  比較処理手段
２２０  比較入力手段
２３０  比較表示手段
２４０  比較記憶手段
２４１  想定差分記憶部
３００  カバレッジ分析処理装置
３１０  カバレッジ分析処理手段
３１１  ソースファイル解析部
３１２  カバレッジログ分析部
３１３  カバレッジ演算部
３２０  カバレッジ分析入力手段
３３０  カバレッジ分析表示手段
３４０  カバレッジ分析記憶手段
４００  性能検証装置
４１０  性能検証処理手段
４１１  時間演算処理部
４１２  時間比較処理部
４２０  性能検証入力手段
４３０  性能検証表示手段
４４０  性能検証記憶手段
【図１】
2015011396.tif 000003
【図２】
2015011396.tif 000004
【図３】
2015011396.tif 000005
【図４】
2015011396.tif 000006
【図５】
2015011396.tif 000007
【図６】
2015011396.tif 000008
【図７】
2015011396.tif 000009
【図８】
2015011396.tif 000010