(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024011996
(43)【公開日】2024-01-25
(54)【発明の名称】動作検証プログラム、動作検証方法、および情報処理装置
(51)【国際特許分類】
G06F 11/36 20060101AFI20240118BHJP
【FI】
G06F11/36 188
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022114396
(22)【出願日】2022-07-15
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100104190
【弁理士】
【氏名又は名称】酒井 昭徳
(72)【発明者】
【氏名】井出 武浩
(72)【発明者】
【氏名】武智 慎太
(72)【発明者】
【氏名】佐々木 宏
(72)【発明者】
【氏名】黒田 隆一
(72)【発明者】
【氏名】中野 正久
(72)【発明者】
【氏名】山本 勝考
(72)【発明者】
【氏名】吉澤 陽志
(72)【発明者】
【氏名】山本 倫也
(72)【発明者】
【氏名】大森 誠
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042HH12
5B042HH49
5B042JJ29
5B042MA08
5B042MA14
5B042MC40
(57)【要約】
【課題】ソフトウェアの動作検証の効率化を図ること。
【解決手段】動作検証装置301は、エンハンス前後の検証対象ソフトウェア(software1)それぞれについて、検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報(引数、復帰値)とパッケージ名とを対応付けて表す動作ログを実行順に示す動作ログ情報を出力する。例えば、動作ログファイル800は、エンハンス後の検証対象ソフトウェアを動作させたときの動作ログ(例えば、動作ログ800-1~800-5)を実行順に示す。例えば、動作ログ800-1は、クラスAのメソッド1の入出力情報(引数a、引数b)とパッケージ名(com.company1.software1.component1)とを対応付けて表す。
【選択図】
図8
【特許請求の範囲】
【請求項1】
複数のソフトウェアが連携して動作するシステム内の検証対象ソフトウェアが更新された場合、更新前後の前記検証対象ソフトウェアそれぞれについて、当該検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報を含むログを出力する際に、当該メソッドを含むソフトウェアと、当該メソッドの呼び出し先のメソッドを含むソフトウェアとを特定可能な情報を出力する、
処理をコンピュータに実行させることを特徴とする動作検証プログラム。
【請求項2】
前記出力する処理は、
更新前の前記検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報と、当該メソッドを含むソフトウェアを特定する情報とを対応付けて表すログを実行順に示す第1の動作ログ情報を出力し、
更新後の前記検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報と、当該メソッドを含むソフトウェアを特定する情報とを対応付けて表すログを実行順に示す第2の動作ログ情報を出力する、
ことを特徴とする請求項1に記載の動作検証プログラム。
【請求項3】
前記第1の動作ログ情報に含まれるログが表すソフトウェアを特定する情報を参照して、前記第1の動作ログ情報から、メソッドの呼び出し前後でソフトウェアが切り替わる箇所を特定し、
前記第2の動作ログ情報に含まれるログが表すソフトウェアを特定する情報を参照して、前記第2の動作ログ情報から、前記箇所を特定し、
前記第1の動作ログ情報から特定した前記箇所と前記第2の動作ログ情報から特定した前記箇所とを比較した結果に基づいて、前記箇所の差分を検出する、
処理を前記コンピュータに実行させ、
前記出力する処理は、
前記第1の動作ログ情報および前記第2の動作ログ情報を出力するとともに、検出した前記差分を表す情報を出力する、
ことを特徴とする請求項2に記載の動作検証プログラム。
【請求項4】
前記メソッドを含むソフトウェアを特定する情報は、前記メソッドが属するクラスを分類するパッケージ名である、ことを特徴とする請求項2に記載の動作検証プログラム。
【請求項5】
更新前後の前記検証対象ソフトウェアそれぞれについて、当該検証対象ソフトウェアを動作させたときに実行されたメソッドのクラスローダの情報を取得する、
処理を前記コンピュータに実行させ、
前記出力する処理は、
更新前の前記検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報と、当該メソッドを含むソフトウェアを特定する情報と、取得した当該メソッドのクラスローダの情報とを対応付けて表すログを実行順に示す第1の動作ログ情報を出力し、
更新後の前記検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報と、当該メソッドを含むソフトウェアを特定する情報と、取得した当該メソッドのクラスローダの情報とを対応付けて表すログを実行順に示す第2の動作ログ情報を出力する、
ことを特徴とする請求項2~4のいずれか一つに記載の動作検証プログラム。
【請求項6】
複数のソフトウェアが連携して動作するシステム内の検証対象ソフトウェアが更新された場合、更新前後の前記検証対象ソフトウェアそれぞれについて、当該検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報を含むログを出力する際に、当該メソッドを含むソフトウェアと、当該メソッドの呼び出し先のメソッドを含むソフトウェアとを特定可能な情報を出力する、
処理をコンピュータが実行することを特徴とする動作検証方法。
【請求項7】
複数のソフトウェアが連携して動作するシステム内の検証対象ソフトウェアが更新された場合、更新前後の前記検証対象ソフトウェアそれぞれについて、当該検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報を含むログを出力する際に、当該メソッドを含むソフトウェアと、当該メソッドの呼び出し先のメソッドを含むソフトウェアとを特定可能な情報を出力する、
処理を実行する制御部を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、動作検証プログラム、動作検証方法、および情報処理装置に関する。
【背景技術】
【0002】
従来、老朽化に伴うハードウェア交換、システム拡張、ソフトウェアの機能追加などに伴うシステム更改において、ソフトウェアのエンハンスが行われる場合がある。エンハンス前後のソフトウェアに動作差異(非互換)があると、システムの不具合を引き起こす可能性がある。このため、ソフトウェアのエンハンスが行われる場合、運用開始前に動作差異があるかどうかの検証が行われることがある。
【0003】
先行技術としては、リグレッションテストを行ってできるデータを記録する実行記憶手段を備え、テストデータに基づいて、アプリケーション内に含まれるプログラムを実行処理し、アプリケーションが実現する機能以外の非機能要件に係るデータを実行記憶手段に記録し、実行結果に係るダンプリストのデータを記録する処理を行うものがある。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来技術では、システム更改などにおいてエンハンスが行われたソフトウェアの動作検証に時間や手間がかかるという問題がある。
【0006】
一つの側面では、本発明は、ソフトウェアの動作検証の効率化を図ることを目的とする。
【課題を解決するための手段】
【0007】
1つの実施態様では、複数のソフトウェアが連携して動作するシステム内の検証対象ソフトウェアが更新された場合、更新前後の前記検証対象ソフトウェアそれぞれについて、当該検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報を含むログを出力する際に、当該メソッドを含むソフトウェアと、当該メソッドの呼び出し先のメソッドを含むソフトウェアとを特定可能な情報を出力する、動作検証プログラムが提供される。
【発明の効果】
【0008】
本発明の一側面によれば、ソフトウェアの動作検証の効率化を図ることができるという効果を奏する。
【図面の簡単な説明】
【0009】
【
図1】
図1は、実施の形態にかかる動作検証方法の一実施例を示す説明図である。
【
図2】
図2は、複数のソフトウェアの一例を示す説明図である。
【
図3】
図3は、動作検証システム300のシステム構成例を示す説明図である。
【
図4】
図4は、動作検証装置301のハードウェア構成例を示すブロック図である。
【
図5】
図5は、検証対象ソフトウェアを含むシステムの一例を示す説明図である。
【
図6】
図6は、動作検証装置301の機能的構成例を示すブロック図である。
【
図7】
図7は、クラスローダの使用例を示す説明図である。
【
図8】
図8は、動作検証装置301の動作検証処理例を示す説明図である。
【
図9】
図9は、ソフトウェアの切り替わり箇所を特定する具体的な処理例を示す説明図である。
【
図10】
図10は、第1の動作ログ情報の具体例を示す説明図である。
【
図11】
図11は、第2の動作ログ情報の具体例を示す説明図である。
【
図12】
図12は、第1の解析結果ログ情報の具体例を示す説明図である。
【
図13】
図13は、第2の解析結果ログ情報の具体例を示す説明図である。
【
図14】
図14は、ソフトウェアの切り替わり箇所の差分の検出例を示す説明図である。
【
図16】
図16は、動作検証装置301の動作ログ採取処理手順の一例を示すフローチャートである。
【
図17】
図17は、動作検証装置301の解析処理手順の一例を示すフローチャートである。
【
図18】
図18は、動作ログ解析処理の具体的処理手順の一例を示すフローチャートである。
【
図19】
図19は、差分解析処理の具体的処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下に図面を参照して、本発明にかかる動作検証プログラム、動作検証方法、および情報処理装置の実施の形態を詳細に説明する。
【0011】
(実施の形態)
図1は、実施の形態にかかる動作検証方法の一実施例を示す説明図である。
図1において、情報処理装置101は、ソフトウェアの動作検証を支援するコンピュータである。ソフトウェアは、例えば、ミドルウェア、アプリケーションなどのコンピュータプログラムである。ソフトウェアは、例えば、Java言語で実装される(Javaは登録商標)。
【0012】
検証対象となるソフトウェアは、複数のソフトウェアが連携して動作するシステム内のいずれかのソフトウェアである。システムは、例えば、業務システムである。検証対象となるソフトウェアは、例えば、業務システムの更改においてエンハンスが行われたソフトウェアである。ここで、
図2を用いて、システム内で連携して動作する複数のソフトウェアについて説明する。
【0013】
図2は、複数のソフトウェアの一例を示す説明図である。
図2において、システム200は、検証対象のシステムの一例であり、オペレーティングシステム201、Java202、アプリケーションサーバ203、ミドルウェア204およびユーザアプリケーション205を含む。
【0014】
オペレーティングシステム201は、システム全体を管理する。Java202は、オペレーティングシステム201により提供される実行環境(プラットフォーム)である。アプリケーションサーバ203は、Java202上で動作するソフトウェア(デーモン)である。
【0015】
アプリケーションサーバ203は、例えば、コンテナにより実現される。アプリケーションサーバ203は、OSS(Open Source Software)を含む場合がある。ミドルウェア204は、アプリケーションサーバ203を実行基盤とするソフトウェアである。ミドルウェア204は、OSSを含む場合がある。
【0016】
ユーザアプリケーション205は、ユーザが使用するアプリケーションソフトウェアである。例えば、アプリケーションサーバ203、ミドルウェア204およびユーザアプリケーション205は、システム内で連携して動作する複数のソフトウェアの一例である。検証対象となるソフトウェアは、例えば、ミドルウェア204やユーザアプリケーション205である。
【0017】
ここで、顧客のシステム更改において、エンハンスによる動作差異があると、これまで提供できていた機能が、提供できなくなる可能性がある。そのため、ベンダーは、システム更改においてソフトウェアのエンハンスを行うにあたり、事前(運用開始前)に動作差異があるかどうかの検証を行う。
【0018】
従来の検証方法としては、例えば、元々の提供機能が動作するかを確認するテスト用アプリケーションと、エンハンスで追加した機能が動作するかを確認するテスト用アプリケーションを作成し、それらを実行して、エンハンス後に動作可能であることを検証するものがある。
【0019】
しかし、従来の検証方法では、検証が十分でなかったり、修正箇所の検証はできても、修正していない箇所への影響や他のソフトウェアによる影響を検出できなかったりして、システムトラブルが発生することがある。また、事前に不具合を検出できたとしても、顧客のシステムでは様々なソフトウェアが動作しており、原因の特定に時間がかかることがある。
【0020】
例えば、ソフトウェアのエンハンスを行う場合、修正箇所のAPI(Application Programming Interface)単位での処理の検証、追加機能の動作検証、および従来提供機能の動作検証が行われる。修正箇所の処理の検証と追加機能の動作検証では、修正を行っているため、動作差異があっても、意図した修正であり正しいと判断される。
【0021】
このため、動作差異の確認は、従来提供機能の動作検証で行われる。しかしながら、従来提供機能の動作検証では、例えば、検証が不十分で動作差異を検出できなかったり、自身のソフトウェアには動作差異がなくても、他のソフトウェアの動作差異によりシステムトラブルが発生して、嫌疑をかけられる可能性がある。
【0022】
ここで、動作差異を検出する従来技術として、アスペクト指向プログラムの記録を比較するものがある(例えば、特許文献1参照)。アスペクト指向プログラムの記録の比較とは、例えば、検証対象のソフトウェアに対してアスペクト(別途実装する割り込み処理)を織り込んで、処理結果を出力するテストプログラムを作成し、エンハンス前後の出力の差分を確認することである。
【0023】
しかし、ソフトウェアに対して大きなエンハンス(大量の修正)が行われると、エンハンス前後の出力の差分が多数検出されてしまう。多数検出される差分を一つ一つ人手で確認するとなると、動作差異の検証に膨大な時間や手間がかかり実用的ではないという問題がある。
【0024】
なお、他の従来技術として、修正前後のソースコードの差分を利用して、修正前後でどこに問題があるかを検知するものがある(例えば、特開2015-11372号公報参照)。しかしながら、この従来技術では、修正前後のソースコードがあることが前提となっており、サードパーティを利用した開発には用いることが難しい。さらに、大規模なミドルウェアなどでは差分が多数検出され、一つ一つ人手で確認することは困難である。
【0025】
また、近年、システム更改が短い期間で頻繁に行われるようになってきており、エンハンス前後のソフトウェアの動作差異の検証にかけられる時間は非常に短くなっている。このため、限られた短い時間内で、例えば、エンハンスにより生じる出力の差分の中から、重大な問題を引き起こす可能性がある差分を効率良く見つけ出すことが重要である。
【0026】
ここで、エンハンス前後の出力の差分には、内部処理の改善などで生じる差分と、外部のソフトウェアに影響を与えるような差分とがある。例えば、検証対象のソフトウェア自体の動作としては正常に動作するが、エンハンスにより制御系のヘッダの値が変わることがある。
【0027】
このような場合、例えば、検証対象のソフトウェアのリグレッションテストでは検証OKとなっても、制御系のヘッダの値が変わることで、連携して動作する他のソフトウェアの誤作動を引き起こすことがある。また、他のソフトウェアがエンハンスされることにより、検証対象のソフトウェアに入力される値が変化して誤作動を引き起こす場合がある。
【0028】
このため、内部処理の改善などで生じる差分に比べて、外部のソフトウェアに影響を与えるような差分のほうが、問題を引き起こす可能性がある差分であり、優先的に確認すべき事項であるといえる。また、外部のソフトウェアに影響を与えるような差分が生じる箇所は、外部とのインタフェース(呼び出し関係)部分である。
【0029】
そこで、本実施の形態では、システム更改などで更新されたソフトウェアの動作検証を行うにあたり、優先的に検証すべき箇所(差分)を特定可能にして、検証の効率化を図る動作検証方法について説明する。以下、情報処理装置101の処理例について説明する。
【0030】
情報処理装置101は、検証対象ソフトウェアが更新された場合、更新前後の検証対象ソフトウェアそれぞれについて、検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報を含むログを取得する。検証対象ソフトウェアは、複数のソフトウェアが連携して動作するシステム内のいずれかのソフトウェアである。
【0031】
更新前のソフトウェアは、例えば、システム更改においてエンハンスされる前のソフトウェアである。更新後のソフトウェアは、例えば、システム更改においてエンハンスされた後のソフトウェアである。ソフトウェアのエンハンスとは、例えば、性能や品質の強化、向上を図ったり、新たな機能の追加、拡張を行ったりするためのプログラムの修正である。
【0032】
メソッドは、一連の処理をひとまとめにしたものである。例えば、メソッドは、内容がまとまっている処理や繰り返し行う処理などをひとまとめにしたものである。検証対象ソフトウェアを動作させたときに実行されるメソッドは、検証対象ソフトウェアに含まれるメソッドや、検証対象ソフトウェアと連携して動作する他のソフトウェアに含まれるメソッドである。
【0033】
メソッドの入出力情報は、例えば、引数や復帰値(戻り値)である。引数は、メソッドに渡すデータである。復帰値は、メソッドの呼び出し元に返す値である。各メソッドの入出力情報を含むログは、例えば、アスペクト指向プログラム等を設定した環境でテスト実行することにより取得することができる。
【0034】
また、情報処理装置101は、更新前後の検証対象ソフトウェアそれぞれについて、検証対象ソフトウェアを動作させたときに実行されたメソッドを含むソフトウェアを特定する情報を取得する。メソッドを含むソフトウェアを特定する情報は、例えば、メソッドが属するクラスを分類するパッケージ名である。
【0035】
パッケージ名は、クラスの一意性を確保するために付与される情報である。Javaのパッケージ名としては、例えば、ソフトウェアの開発元の会社名と製品名とを組み合わせたものが用いられることが多い。「com.company1.software1.component1」は、パッケージ名の一例である。
【0036】
「com.company1」は、ソフトウェアの開発元の会社名に相当する。「software1.component1」は、ソフトウェアの製品名に相当する。このため、メソッドを含むソフトウェアを特定する情報として、Javaのパッケージ名を利用することができる。パッケージ名は、例えば、メソッドを含むソフトウェアのオブジェクトコードから取得することができる。
【0037】
そして、情報処理装置101は、更新前後の検証対象ソフトウェアそれぞれについて、検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報を含むログを出力する際に、当該メソッドを含むソフトウェアと、当該メソッドの呼び出し先のメソッドを含むソフトウェアとを特定可能な情報を出力する。
【0038】
具体的には、例えば、情報処理装置101は、第1の動作ログ情報を出力するとともに、第2の動作ログ情報を出力する。第1の動作ログ情報は、更新前の検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報と、当該メソッドを含むソフトウェアを特定する情報とを対応付けて表すログを実行順に示す。また、第2の動作ログ情報は、更新後の検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報と、当該メソッドを含むソフトウェアを特定する情報とを対応付けて表すログを実行順に示す。
【0039】
図1の例では、第1の動作ログ情報110とともに、第2の動作ログ情報120が出力された場合を想定する。第1の動作ログ情報110は、例えば、ログ110-1~110-3を含む。また、第2の動作ログ情報120は、例えば、ログ120-1~120-3を含む。
【0040】
各ログ110-1~110-3,120-1~120-3は、メソッドの入出力情報と、当該メソッドを含むソフトウェアを特定する情報とを対応付けて表す。例えば、ログ110-1は、入出力情報110-1-1とパッケージ名110-1-2とを対応付けて表す。入出力情報110-1-1は、クラスxxのメソッド1の引数aを示す。
【0041】
パッケージ名110-1-2は、クラスxxのメソッド1を含むソフトウェアXを特定する情報の一例である。第1の動作ログ情報110において、各ログ110-1~110-3は、メソッドが実行された順に並べられている。第2の動作ログ情報120において、各ログ120-1~120-3は、メソッドが実行された順に並べられている。
【0042】
ここでは、検証対象ソフトウェアを「ソフトウェアX」とする。ユーザは、第1の動作ログ情報110を参照することにより、更新前の検証対象ソフトウェアXを動作させたときに実行された各メソッドのログを実行順に確認することができる。ユーザは、例えば、検証対象ソフトウェアXの開発者や検証者である。
【0043】
また、ユーザは、第2の動作ログ情報120を参照することにより、更新後の検証対象ソフトウェアXを動作させたときに実行された各メソッドのログを実行順に確認することができる。ここでは、各メソッドのログを実行順に示すことで、各メソッドのログが表すパッケージ名から、各メソッドを含むソフトウェアと、当該各メソッドの呼び出し先のメソッドを含むソフトウェアとを特定可能となっている。
【0044】
また、ユーザは、第1の動作ログ情報110と第2の動作ログ情報120とを比較することで、変更前後の動作差異(例えば、アスペクト指向プログラムの出力結果の差分)を特定することができる。この際、ユーザは、各ログ110-1~110-3,120-1~120-3のパッケージ名を確認することで、他のソフトウェアに影響を及ぼすような差分を容易に特定することができる。
【0045】
ここでは、第1の動作ログ情報110と第2の動作ログ情報120との間で、2,3行目のログの引数の値に変更があり差分となっている。ただし、2行目のログ110-2,120-2では、引数がbからpに変わっているものの、パッケージ名が変化していない。このため、ユーザは、2行目のログ110-2,120-2同士の差分については、検証対象ソフトウェアXの内部処理の改善に伴う差分であり、確認不要(詳細な動作確認を行う優先度が低い)であると判断することができる。
【0046】
一方、3行目のログ110-3,120-3では、引数がcからqに変わっており、かつ、2行目のログ110-2,120-2からパッケージ名が変化している。このため、ユーザは、3行目のログ110-3,120-3同士の差分については、検証対象ソフトウェアXから他のソフトウェアYを呼び出している箇所であることがわかる。したがって、ユーザは、3行目のログ110-3,120-3同士の差分については、外部のソフトウェアに影響を与えるような差分であり、優先的に検証すべき事項であると判断することができる。
【0047】
このように、情報処理装置101によれば、システム更改などで更新されたソフトウェアの動作検証を行うにあたり、外部とのインタフェース部分の動作差異(非互換箇所)を特定可能にすることができる。これにより、ユーザは、更新により生じた動作差異のうち優先的に検証すべき箇所を判断可能となり、ソフトウェアの動作検証の効率化を図ることができる。
【0048】
図1の例では、ユーザは、検証対象ソフトウェアXの変更に伴う動作差異(2,3行目のログ)のうち、優先的に検証(対処)すべき箇所である外部とのインタフェース部分の動作差異(3行目のログ110-3,120-3同士の差分)を特定することができる。また、ユーザは、2行目のログ110-2,120-2同士の差分については、確認不要(詳細な動作確認を行う優先度が低い)であると判断することができる。
【0049】
なお、外部とのインタフェース部分の動作差異に対する処置としては、例えば、問題を引き起こす可能性を検証したり、差分が生じないように変更後の検証対象ソフトウェアを修正したりすることが考えられる。また、他のソフトウェア(ソフトウェアY)の開発元に対して、差分内容を伝えて対応を依頼したりすることなどが考えられる。
【0050】
また、ここでは、各メソッドのログを実行順に示すことで、各メソッドを含むソフトウェアと、当該各メソッドの呼び出し先のメソッドを含むソフトウェアとを特定可能にしたが、これに限らない。例えば、同一ログ内に、実行されたメソッドを含むソフトウェアを特定する情報(例えば、パッケージ名)と、当該メソッドの呼び出し先(あるいは、呼び出し元)のメソッドを含むソフトウェアを特定する情報とを含めることにしてもよい。
【0051】
(動作検証システム300のシステム構成例)
つぎに、
図1に示した情報処理装置101を含む動作検証システム300のシステム構成例について説明する。ここでは、
図1に示した情報処理装置101を、動作検証システム300内の動作検証装置301に適用した場合を例に挙げて説明する。動作検証システム300は、例えば、業務システム上で動作するソフトウェアの動作検証を支援するサービスに適用される。
【0052】
図3は、動作検証システム300のシステム構成例を示す説明図である。
図3において、動作検証システム300は、動作検証装置301と、クライアント装置302と、を含む。動作検証システム300において、動作検証装置301およびクライアント装置302は、有線または無線のネットワーク310を介して接続される。ネットワーク310は、例えば、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)などである。
【0053】
ここで、動作検証装置301は、ソフトウェアの動作検証を支援する。動作検証装置301は、例えば、サーバである。また、動作検証装置301は、複数のコンピュータにより実現されてもよい。検証対象ソフトウェアを含むシステムの一例については、
図5を用いて後述する。
【0054】
クライアント装置302は、動作検証システム300のユーザが使用するコンピュータである。ユーザは、例えば、ソフトウェアの開発者である。クライアント装置302は、例えば、PC(Personal Computer)、タブレットPCなどである。
【0055】
なお、ここでは、動作検証装置301とクライアント装置302とを別体に設けることにしたが、これに限らない。例えば、動作検証装置301は、クライアント装置302により実現されることにしてもよい。また、動作検証システム300には、複数のクライアント装置302が含まれることにしてもよい。
【0056】
(動作検証装置301のハードウェア構成例)
図4は、動作検証装置301のハードウェア構成例を示すブロック図である。
図4において、動作検証装置301は、CPU(Central Processing Unit)401と、メモリ402と、ディスクドライブ403と、ディスク404と、通信I/F(Interface)405と、可搬型記録媒体I/F406と、可搬型記録媒体407と、を有する。また、各構成部は、バス400によってそれぞれ接続される。
【0057】
ここで、CPU401は、動作検証装置301の全体の制御を司る。CPU401は、複数のコアを有していてもよい。メモリ402は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMがOSのプログラムを記憶し、ROMがアプリケーションプログラムを記憶し、RAMがCPU401のワークエリアとして使用される。メモリ402に記憶されるプログラムは、CPU401にロードされることで、コーディングされている処理をCPU401に実行させる。
【0058】
ディスクドライブ403は、CPU401の制御に従ってディスク404に対するデータのリード/ライトを制御する。ディスク404は、ディスクドライブ403の制御で書き込まれたデータを記憶する。ディスク404としては、例えば、磁気ディスク、光ディスクなどが挙げられる。
【0059】
通信I/F405は、通信回線を通じてネットワーク310に接続され、ネットワーク310を介して外部のコンピュータ(例えば、
図3に示したクライアント装置302)に接続される。そして、通信I/F405は、ネットワーク310と装置内部とのインタフェースを司り、外部のコンピュータからのデータの入出力を制御する。通信I/F405には、例えば、モデムやLANアダプタなどを採用することができる。
【0060】
可搬型記録媒体I/F406は、CPU401の制御に従って可搬型記録媒体407に対するデータのリード/ライトを制御する。可搬型記録媒体407は、可搬型記録媒体I/F406の制御で書き込まれたデータを記憶する。可搬型記録媒体407としては、例えば、CD(Compact Disc)-ROM、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリなどが挙げられる。
【0061】
なお、動作検証装置301は、上述した構成部のほかに、例えば、入力装置、ディスプレイなどを有することにしてもよい。また、
図3に示したクライアント装置302についても、動作検証装置301と同様のハードウェア構成により実現することができる。ただし、クライアント装置302は、上述した構成部のほかに、例えば、入力装置、ディスプレイなどを有する。
【0062】
(検証対象ソフトウェアを含むシステムの一例)
ここで、
図5を用いて、検証対象ソフトウェアを含むシステムについて説明する。
【0063】
図5は、検証対象ソフトウェアを含むシステムの一例を示す説明図である。
図5において、システム501は、更改前のシステムである。システム501は、JDK(Java Development Kit)7と、アプリケーションサーバV1と、ミドルウェアV3と、OSSV9と、アプリとを含む。
【0064】
システム502は、更改後のシステムである。システム502は、JDK8と、アプリケーションサーバV2と、ミドルウェアV4と、OSSV10と、アプリとを含む。JDK7,8は、例えば、
図2に示したJava202に対応する。アプリケーションサーバV1,V2は、例えば、
図2に示したアプリケーションサーバ203に対応する。ミドルウェアV3,V4、OSSV9,V10は、例えば、
図2に示したミドルウェア204に対応する。アプリは、例えば、
図2に示したユーザアプリケーション205に対応する。
【0065】
ここでは、システム更改において、JDK7がJDK8にバージョンアップされ、アプリケーションサーバV1がアプリケーションサーバV2にバージョンアップされている。また、ミドルウェアV3がミドルウェアV4にバージョンアップ(エンハンス)され、OSSV9がOSSV10にバージョンアップされている。検証対象ソフトウェアは、例えば、ミドルウェアV3,V4である。
【0066】
(動作検証装置301の機能的構成例)
図6は、動作検証装置301の機能的構成例を示すブロック図である。
図6において、動作検証装置301は、取得部601と、対応付け部602と、特定部603と、検出部604と、出力制御部605と、を含む。取得部601~出力制御部605は制御部となる機能であり、具体的には、例えば、
図4に示したメモリ402、ディスク404、可搬型記録媒体407などの記憶装置に記憶されたプログラムをCPU401に実行させることにより、または、通信I/F405により、その機能を実現する。各機能部の処理結果は、例えば、メモリ402、ディスク404などの記憶装置に記憶される。
【0067】
取得部601は、複数のソフトウェアが連携して動作するシステム内の検証対象ソフトウェアが更新された場合、更新前後の検証対象ソフトウェアそれぞれについて、当該検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報を含むログを取得する。検証対象ソフトウェアは、例えば、
図5に示したミドルウェアV3,V4である。
【0068】
以下の説明では、システム更改において検証対象ソフトウェアが更新される場合を想定する。また、更新前の検証対象ソフトウェアを、システム更改においてエンハンスされる前のソフトウェアとし、更新後の検証対象ソフトウェアを、システム更改においてエンハンスされた後のソフトウェアとする。
【0069】
具体的には、例えば、取得部601は、エンハンス前後の検証対象ソフトウェアそれぞれについて、テスト実行することにより、検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報を含むログを取得する。メソッドの入出力情報は、例えば、引数や復帰値(戻り値)である。
【0070】
ログには、例えば、メソッドを識別するクラス名、メソッド名が含まれる。なお、テスト実行に用いられる更改前後のシステムの情報(システム内の各ソフトウェアのオブジェクトコードなど)は、例えば、メモリ402、ディスク404などの記憶装置に記憶されている。
【0071】
より詳細に説明すると、例えば、取得部601は、
図3に示したクライアント装置302からの操作入力に応じて、アスペクト指向プログラムを設定した環境において、更改前のシステム(例えば、
図5に示したシステム501)におけるエンハンス前の検証対象ソフトウェアのテスト実行を行う。これにより、エンハンス前の検証対象ソフトウェアを動作させたときに実行された各メソッドの入出力情報を含むログを取得することができる。
【0072】
また、取得部601は、クライアント装置302からの操作入力に応じて、アスペクト指向プログラムを設定した環境において、更改後のシステム(例えば、
図5に示したシステム502)におけるエンハンス後の検証対象ソフトウェアのテスト実行を行う。これにより、エンハンス後の検証対象ソフトウェアを動作させたときに実行された各メソッドの入出力情報を含むログを取得することができる。
【0073】
なお、動作検証装置301は、各メソッドの入出力情報を含むログを取得するにあたり、アスペクト指向プログラムではなく、例えば、Javaプロセスをトレースする機能を有する既存のツール(例えば、BTraceなど)を利用することにしてもよい。また、エンハンス前後の検証対象ソフトウェアのテスト実行は、動作検証装置301とは異なる他のコンピュータで実行することにしてもよい。この場合、動作検証装置301は、他のコンピュータからテスト実行結果(ログ)を取得する。
【0074】
また、取得部601は、エンハンス前後の検証対象ソフトウェアそれぞれについて、検証対象ソフトウェアを動作させたときに実行されたメソッドを含むソフトウェアを特定する情報を取得する。メソッドを含むソフトウェアを特定する情報は、例えば、Javaのパッケージ名である。
【0075】
以下の説明では、システム内のソフトウェアがJava言語で実装される場合を想定し、メソッドを含むソフトウェアを特定する情報として「パッケージ名」が取得される場合を例に挙げて説明する。
【0076】
具体的には、例えば、取得部601は、更改前のシステムにおけるエンハンス前の検証対象ソフトウェアのテスト実行を行う際に、各メソッドを含むソフトウェア(更改前のシステム内のソフトウェア)のオブジェクトコードから、当該ソフトウェアを特定する情報としてパッケージ名を取得する。
【0077】
また、取得部601は、更改後のシステムにおけるエンハンス後の検証対象ソフトウェアのテスト実行を行う際に、各メソッドを含むソフトウェア(更改後のシステム内のソフトウェア)のオブジェクトコードから、当該ソフトウェアを特定する情報としてパッケージ名を取得する。
【0078】
対応付け部602は、エンハンス前後の検証対象ソフトウェアそれぞれについて、取得されたメソッドの入出力情報を含むログと、取得されたパッケージ名(当該メソッドを含むソフトウェアを特定する情報)とを対応付ける。
【0079】
具体的には、例えば、対応付け部602は、エンハンス前の検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報とパッケージ名とを対応付けて表すログを実行順に示す第1の動作ログ情報を作成する。また、対応付け部602は、エンハンス後の検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報とパッケージ名とを対応付けて表すログを実行順に示す第2の動作ログ情報を作成する。
【0080】
また、取得部601は、エンハンス前後の検証対象ソフトウェアそれぞれについて、当該検証対象ソフトウェアを動作させたときに実行されたメソッドのクラスローダの情報を取得することにしてもよい。クラスローダとは、メソッドが属するクラスをロードするモジュール(器)である。クラスローダごとに、どのライブラリ(ソフトウェア、OSS)をロードするかを決めることができる。クラスローダの情報は、例えば、クラスローダを識別する名前(クラスローダ名)である。
【0081】
具体的には、例えば、取得部601は、更改前のシステムにおけるエンハンス前の検証対象ソフトウェアのテスト実行を行う際に、更改前のシステム内のアプリケーションサーバ(コンテナ)に問い合わせることにより、メソッドが属するクラスをロードするクラスロード名を取得する。また、取得部601は、更改後のシステムにおけるエンハンス後の検証対象ソフトウェアのテスト実行を行う際に、更改後のシステム内のアプリケーションサーバに問い合わせることにより、メソッドが属するクラスをロードするクラスロード名を取得する。
【0082】
ここで、異なるソフトウェアで同じOSSを使用している場合、OSSのパッケージ名が同じものとなるため、パッケージ名だけでは、どのソフトウェアのOSSを使用しているか区別できない。例えば、ユーザアプリケーションが使用しているOSSが、それ自身が提供しているものなのか、ミドルウェアが提供しているものであるか区別できない場合がある。
【0083】
ユーザアプリケーションが提供するOSSとミドルウェアが提供するOSSで、バージョンが違うことによる動作差異が発生することがある。Java言語で実装されるアプリケーションサーバなどは、同一プロセス上に異なるソフトウェアを動的にロードできるように、クラスローダを分離させることが一般的である。
【0084】
ここで、
図7を用いて、クラスローダの使用例について説明する。
【0085】
図7は、クラスローダの使用例を示す説明図である。
図7において、アプリケーションサーバ701、ミドルウェア702およびユーザアプリケーション703は、連携して動作する複数のソフトウェアの一例である。アプリケーションサーバ701は、クラスローダAを使用する。ミドルウェア702は、クラスローダBを使用する。ユーザアプリケーション703は、クラスローダCを使用する。
【0086】
ここで、OSSxは、HTTPリクエストを簡単に送信できるOSSであり、ミドルウェア702およびユーザアプリケーション703の双方に組み込まれている。すなわち、アプリケーション側で用意したOSSxと、ミドルウェア側で用意したOSSxの2つが同居している。なお、ミドルウェア側のOSSxは、V1.0からV2.0にバージョンアップされている。
【0087】
ミドルウェア702は、アプリケーション(例えば、ユーザアプリケーション703)の実装によって製品動作が変わってしまわないように、クラスローダという考え方を用いる。ミドルウェア702が動作するクラスローダBでは、アプリケーションのライブラリをロードしないようにすることで、アプリケーションの影響を排除している。
【0088】
ただし、ミドルウェア702側ではアプリケーションの影響を排除したいが、アプリケーション側ではミドルウェアの機能を使用したい場合がある。このため、クラスローダを完全に分離するのではなく、参照関係(親子関係)を持たせて、アプリケーション側からはミドルウェアのクラスローダを使用することができるようにしている。
【0089】
そのため、ユーザアプリケーション703は、自身が用意したOSSxではなく、ミドルウェア702が用意したOSSxを使用してしまう可能性がある。その場合、以前は正常に動作していても、例えば、ミドルウェア702のエンハンスによりOSSxの実装が変わると(バージョンアップ)、想定した動作ではなくなる場合がある。
【0090】
ここでは、システム内で同じOSS(例えば、OSSx)を使用していたとしても、どのクラスローダを使用しているかを特定可能にすることで、どのソフトウェアが提供しているOSSかを判別できるようにする。
【0091】
対応付け部602は、エンハンス前後の検証対象ソフトウェアそれぞれについて、取得されたメソッドの入出力情報を含むログと、取得されたパッケージ名と、取得されたクラスローダの情報とを対応付けることにしてもよい。クラスローダの情報は、例えば、クラスローダ名である。
【0092】
具体的には、例えば、対応付け部602は、エンハンス前の検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報とパッケージ名とクラスローダ名とを対応付けて表すログを実行順に示す第1の動作ログ情報を作成することにしてもよい。また、対応付け部602は、エンハンス後の検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報とパッケージ名とクラスローダ名とを対応付けて表すログを実行順に示す第2の動作ログ情報を作成することにしてもよい。
【0093】
より詳細に説明すると、例えば、対応付け部602は、エンハンス前の検証対象ソフトウェアを動作させたときに実行された順に、メソッドの入出力情報とパッケージ名とクラスローダ名とを対応付けて表すログを第1の動作ログ情報(例えば、ファイル)に出力する。また、対応付け部602は、エンハンス後の検証対象ソフトウェアを動作させたときに実行された順に、メソッドの入出力情報とパッケージ名とクラスローダ名とを対応付けて表すログを第2の動作ログ情報に出力する。
【0094】
なお、第1の動作ログ情報の具体例については、
図10を用いて後述する。第2の動作ログ情報の具体例については、
図11を用いて後述する。以下の説明では、メソッドの入出力情報とパッケージ名とクラスローダ名とを対応付けて表すログを「動作ログ」と表記する場合がある。
【0095】
特定部603は、エンハンス前後の検証対象ソフトウェアそれぞれについて、当該検証対象ソフトウェアを動作させたときに実行されたメソッドのパッケージ名を参照して、メソッドの呼び出し前後でソフトウェアが切り替わる箇所を特定する。以下の説明では、メソッドの呼び出し前後でソフトウェアが切り替わる箇所を「ソフトウェアの切り替わり箇所」と表記する場合がある。
【0096】
具体的には、例えば、特定部603は、第1の動作ログ情報に含まれる動作ログが表すパッケージ名を参照して、第1の動作ログ情報から、ソフトウェアの切り替わり箇所を特定する。また、特定部603は、第2の動作ログ情報の動作ログが表すパッケージ名を参照して、第2の動作ログ情報から、ソフトウェアの切り替わり箇所を特定する。
【0097】
なお、ソフトウェアの切り替わり箇所を特定する具体的な処理例については、
図9を用いて後述する。また、特定された特定結果(ソフトウェアの切り替わり箇所)は、例えば、解析結果ログ情報(例えば、ファイル)に出力される。解析結果ログ情報の具体例については、
図12および
図13を用いて後述する。
【0098】
検出部604は、エンハンス前の検証対象ソフトウェアについて特定されたソフトウェアの切り替わり箇所と、エンハンス後の検証対象ソフトウェアについて特定されたソフトウェアの切り替わり箇所との差分を検出する。具体的には、例えば、検出部604は、第1の動作ログ情報から特定したソフトウェアの切り替わり箇所と第2の動作ログ情報から特定したソフトウェアの切り替わり箇所とを比較した結果に基づいて、ソフトウェアの切り替わり箇所の差分を検出する。
【0099】
なお、ソフトウェアの切り替わり箇所の差分の検出例については、
図14を用いて後述する。
【0100】
出力制御部605は、エンハンス前後の検証対象ソフトウェアそれぞれについて、当該検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報を含むログを出力する際に、当該メソッドを含むソフトウェアと、当該メソッドの呼び出し先のメソッドを含むソフトウェアとを特定可能な情報を出力する。
【0101】
具体的には、例えば、出力制御部605は、作成された第1の動作ログ情報を出力するとともに、作成された第2の動作ログ情報を出力する。出力部の出力形式としては、例えば、メモリ402、ディスク404などの記憶装置への記憶、通信I/F405による他のコンピュータ(例えば、
図3に示したクライアント装置302)への送信、不図示のディスプレイへの表示、不図示のプリンタへの印刷出力などがある。
【0102】
また、出力制御部605は、第1の動作ログ情報を出力する際に、第1の動作ログ情報のうち、第1の動作ログ情報から特定されたソフトウェアの切り替わり箇所を判別可能に出力することにしてもよい。また、出力制御部605は、第2の動作ログ情報を出力する際に、第2の動作ログ情報のうち、第2の動作ログ情報から特定されたソフトウェアの切り替わり箇所を判別可能に出力することにしてもよい。
【0103】
具体的には、例えば、出力制御部605は、第1の動作ログ情報のうち、ソフトウェアの切り替わり箇所を強調表示する。また、出力制御部605は、第2の動作ログ情報のうち、ソフトウェアの切り替わり箇所を強調表示する。より詳細に説明すると、例えば、出力制御部605は、ソフトウェアの切り替わり箇所を他の箇所とは異なる背景色、模様で表示したり、ソフトウェアの切り替わり箇所の文字を他の箇所の文字とは異なる書体、サイズなどで表示することにしてもよい。また、出力制御部605は、ソフトウェアの切り替わり箇所にマークを表示することにしてもよい。
【0104】
また、出力制御部605は、第1の動作ログ情報および第2の動作ログ情報と対応付けて、検出された差分を表す情報を出力することにしてもよい。具体的には、例えば、出力制御部605は、第1の動作ログ情報および第2の動作ログ情報を出力するとともに、後述の
図15に示すような差分情報1500を、クライアント装置302に出力することにしてもよい。
【0105】
また、出力制御部605は、例えば、第1の動作ログ情報を出力する際に、第1の動作ログ情報のうち、検出された差分を判別可能に出力することにしてもよい。また、出力制御部605は、例えば、第2の動作ログ情報を出力する際に、第2の動作ログ情報のうち、検出された差分を判別可能に出力することにしてもよい。
【0106】
具体的には、例えば、出力制御部605は、第1の動作ログ情報のうち、検出された差分の箇所を強調表示する。また、出力制御部605は、第2の動作ログ情報のうち、検出された差分の箇所を強調表示する。また、出力制御部605は、第2の動作ログ情報(エンハンス後の検証対象ソフトウェアについての動作ログ情報)についてのみ、検出された差分の箇所を強調表示することにしてもよい。より詳細に説明すると、例えば、出力制御部605は、差分の箇所を他の箇所とは異なる背景色、模様で表示したり、差分の箇所にマークを表示したりすることにしてもよい。
【0107】
なお、上述した動作検証装置301の機能部は、例えば、
図3に示した動作検証システム300内の複数のコンピュータ(例えば、動作検証装置301とクライアント装置302)により実現されることにしてもよい。
【0108】
(動作検証装置301の動作検証処理例)
つぎに、動作検証装置301の動作検証処理例について説明する。
【0109】
図8は、動作検証装置301の動作検証処理例を示す説明図である。
図8において、動作ログ情報800は、エンハンス後の検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報(引数、復帰値)とパッケージ名とを対応付けて表す動作ログ(例えば、動作ログ800-1~800-5)を実行順に示す第2の動作ログ情報の一例である。
【0110】
なお、
図8では、動作ログ情報800の一部を抜粋して表示している。また、クラスローダの情報(例えば、クラスローダ名)の表示は省略している。
【0111】
ここでは、検証対象ソフトウェアを「software1」とする。例えば、動作ログ800-1は、クラスAのメソッド1の入出力情報(引数a、引数b)とパッケージ名(com.company1.software1.component1)とを対応付けて表す。
【0112】
動作検証装置301は、動作ログ情報800に含まれる動作ログが表すパッケージ名を参照して、動作ログ情報800から、ソフトウェアの切り替わり箇所を特定する。
図8の例では、動作ログ情報800の2行目(動作ログ800-2)と3行目(動作ログ800-3)との間でパッケージ名が変わっている。
【0113】
このため、動作検証装置301は、例えば、3行目の動作ログ800-3を、ソフトウェアの切り替わり箇所として特定する。3行目の動作ログ800-3は、検証対象ソフトウェア(software1)から他のソフトウェア(software2)を呼び出した箇所である。
【0114】
また、動作ログ情報800の4行目(動作ログ800-4)と5行目(動作ログ800-5)との間でパッケージ名が変わっている。このため、動作検証装置301は、例えば、5行目の動作ログ800-5を、ソフトウェアの切り替わり箇所として特定する。5行目の動作ログ800-5は、他のソフトウェア(software2)から検証対象ソフトウェア(software1)に復帰した箇所である。
【0115】
動作検証装置301は、エンハンス前後の検証対象ソフトウェアそれぞれについて、検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報(引数、復帰値)とパッケージ名とを対応付けて表す動作ログを実行順に示す動作ログ情報(例えば、動作ログ情報800)を出力する。
【0116】
この際、動作検証装置301は、各動作ログ情報から特定されたソフトウェアの切り替わり箇所を判別可能に出力することにしてもよい。例えば、動作検証装置301は、動作ログ情報800を出力する際に、動作ログ情報800から特定されたソフトウェアの切り替わり箇所を示す境界線801,802を表示することにしてもよい。
【0117】
例えば、動作ログ情報800によれば、ユーザは、システム内の検証対象ソフトウェア(software1)を動作させたときに実行されたメソッドの入出力情報(引数、復帰値)を実行順に確認することができる。この際、ユーザは、メソッドの入出力情報に対応付けられたパッケージ名を参照することで、どのソフトウェアのメソッドであるかを確認することができる。
【0118】
また、ユーザは、実行順に並べられたメソッドの入出力情報に対応付けられたパッケージ名を参照することで、ソフトウェア間の呼び出し関係を確認することができる。例えば、ユーザは、境界線801,802から、ソフトウェアの切り替わり箇所を判別して、その箇所のパッケージ名から、ソフトウェア間の呼び出し関係を容易に特定することができる。
【0119】
図8の例では、ユーザは、2行目と3行目の間、および、4行目と5行目の間にソフトウェアの境界があることがわかる。この場合、ユーザは、例えば、エンハンス前の動作ログ情報(不図示)と比較して、3行目のクラスBの引数xと引数yに変更がなく、4行目のクラスBから返却される復帰値zに変更がなければ問題ないと判断することができる。
【0120】
また、ユーザは、2行目の引数cや引数dが、エンハンス前の動作ログ情報から変わっていたとしても、検証対象ソフトウェアの内部の処理が変わっているだけであり、確認不要(検証優先度が低い)であると判断することができる。このようにして、ユーザは、外部とのインタフェース部分についてのみ、エンハンス前後での差分の有無を確認することで、ソフトウェアの動作差異の検証作業の効率化を図ることができる。
【0121】
(ソフトウェアの切り替わり箇所を特定する具体的な処理例)
つぎに、
図9を用いて、動作ログ情報(第1の動作ログ情報、第2の動作ログ情報)からソフトウェアの切り替わり箇所を特定する具体的な処理例について説明する。
【0122】
図9は、ソフトウェアの切り替わり箇所を特定する具体的な処理例を示す説明図である。
図9において、動作ログ情報900は、検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報とパッケージ名とクラスローダ名とを対応付けて表す動作ログ(例えば、動作ログ900-1~900-7)を実行順に示す。
【0123】
ここでは、パッケージ名をスタック方式で管理することで、動作ログ情報900からソフトウェアの切り替わり箇所を特定する場合について説明する。
【0124】
まず、特定部603は、動作ログ情報900から、1行目の動作ログ900-1を読み込み、スタックskにパッケージ名「com.company1.software1.component1」を格納する。なお、
図9では、パッケージ名のうち「software1」の部分を「~」に置き換えて表示している。
【0125】
2行目以降は、特定部603は、動作ログ情報900から動作ログを読み込み、メソッド呼出し(IN)の場合、スタックskにパッケージ名を積み上げる。一方、メソッド復帰(OUT)の場合には、特定部603は、スタックskの一番上のパッケージ名を削除する。
【0126】
例えば、特定部603は、動作ログ900-2(2行目)を読み込み、メソッド呼出し(IN)のため、スタックskにパッケージ名「com.company2.software2.component2」を積み上げる。
【0127】
また、特定部603は、動作ログ900-3(3行目)を読み込み、メソッド呼出し(IN)のため、スタックskにパッケージ名「com.company2.software2.component2」を積み上げる。
【0128】
また、特定部603は、動作ログ900-4(4行目)を読み込み、メソッド復帰(OUT)のため、スタックskの一番上のパッケージ名「com.company2.software2.component2」を削除する。
【0129】
これにより、特定部603は、スタックskの一番上のパッケージ名を参照することにより、現在動作しているソフトウェアのパッケージ名を特定することができる。そして、特定部603は、メソッド呼出し時は、スタックskの一番上のパッケージ名(比較対象パッケージ名)と、読み込んだ行(動作ログ)のパッケージ名とを比較する。また、特定部603は、メソッド復帰時は、スタックskの一番上のパッケージ名を削除した後のパッケージ名(比較対象パッケージ名)と、読み込んだ行(動作ログ)のパッケージ名とを比較する。特定部603は、比較した結果から、パッケージ名が異なる場合に、呼び出し前後でソフトウェアが変わったことを検知することができる。
【0130】
(動作ログ情報の具体例)
つぎに、
図10および
図11を用いて、動作ログ情報(第1の動作ログ情報、第2の動作ログ情報)の具体例について説明する。ここでは、検証対象ソフトウェアを「software2」とする。また、「software3」をOSSとする。また、検証対象ソフトウェア(software2)が上位のソフトウェア(software1)の機能を利用するために、クラスローダAのOSS(software3)を使用している場合を想定する。
【0131】
図10は、第1の動作ログ情報の具体例を示す説明図である。
図10において、第1の動作ログ情報1000は、エンハンス前の検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報とパッケージ名とクラスローダ名とを対応付けて表す動作ログ(例えば、動作ログ1000-1~1000-8)を実行順に示す。
【0132】
例えば、動作ログ1000-1は、クラスAのメソッド1の入出力情報(引数a、引数b)とパッケージ名(com.company1.software1.component1)とクラスローダ名(クラスローダA)とを対応付けて表す。
【0133】
図11は、第2の動作ログ情報の具体例を示す説明図である。
図11において、第2の動作ログ情報1100は、エンハンス後の検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報とパッケージ名とクラスローダ名とを対応付けて表す動作ログ(例えば、動作ログ1100-1~1100-8)を実行順に示す。
【0134】
例えば、動作ログ1100-1は、クラスAのメソッド1の入出力情報(引数a、引数b)とパッケージ名(com.company1.software1.component1)とクラスローダ名(クラスローダA)とを対応付けて表す。
【0135】
(解析結果ログ情報の具体例)
つぎに、
図12および
図13を用いて、解析結果ログ情報の具体例について説明する。解析結果ログ情報は、動作ログ情報(第1の動作ログ情報、第2の動作ログ情報)から特定されたソフトウェアの切り替わり箇所を示す。
【0136】
図12は、第1の解析結果ログ情報の具体例を示す説明図である。
図12において、第1の解析結果ログ情報1200は、
図10に示した第1の動作ログ情報1000から特定されたソフトウェアの切り替わり箇所(例えば、動作ログ1000-1,1000-4,1000-7,1000-8)を示す。ただし、
図12では、第1の解析結果ログ情報1200の一部を抜粋して表示している。
【0137】
例えば、動作ログ1000-1は、エンハンス前の検証対象ソフトウェア(software2)を動作させたときに最初に実行されたメソッドの動作ログである。また、動作ログ1000-4は、software1のクラスAのメソッド3から呼び出されたsoftware2のクラスBのメソッド4の動作ログである。また、動作ログ1000-7は、software2のクラスCのメソッド5から呼び出されたsoftware3のクラスDのメソッド6の動作ログである。また、動作ログ1000-8は、software3から復帰してsoftware2に戻る際の動作ログである。
【0138】
図13は、第2の解析結果ログ情報の具体例を示す説明図である。
図13において、第2の解析結果ログ情報1300は、
図11に示した第2の動作ログ情報1100から特定されたソフトウェアの切り替わり箇所(例えば、動作ログ1100-1,1100-4,1100-7,1100-8)を示す。ただし、
図13では、第2の解析結果ログ情報1300の一部を抜粋して表示している。
【0139】
例えば、動作ログ1100-1は、エンハンス後の検証対象ソフトウェア(software2)を動作させたときに最初に実行されたメソッドの動作ログである。また、動作ログ1100-4は、software1のクラスAのメソッド3から呼び出されたsoftware2のクラスBのメソッド4の動作ログである。また、動作ログ1100-7は、software2のクラスCのメソッド5から呼び出されたsoftware3のクラスDのメソッド6の動作ログである。また、動作ログ1100-8は、software3から復帰してsoftware2に戻る際の動作ログである。
【0140】
(ソフトウェアの切り替わり箇所の差分の検出例)
つぎに、
図14を用いて、第1の動作ログ情報から特定されたソフトウェアの切り替わり箇所と、第2の動作ログ情報から特定されたソフトウェアの切り替わり箇所との差分の検出例について説明する。
【0141】
図14は、ソフトウェアの切り替わり箇所の差分の検出例を示す説明図である。
図14において、第1の解析結果ログ情報1200と第2の解析結果ログ情報1300とが示されている。第1の解析結果ログ情報1200は、
図12で説明したように、第1の動作ログ情報1000(
図10参照)から特定されたソフトウェアの切り替わり箇所を示す。第2の解析結果ログ情報1300は、
図13で説明したように、第2の動作ログ情報1100(
図11参照)から特定されたソフトウェアの切り替わり箇所を示す。
【0142】
検出部604は、例えば、第1の解析結果ログ情報1200と第2の解析結果ログ情報1300とを比較した結果に基づいて、ソフトウェアの切り替わり箇所の差分を抽出する。具体的には、例えば、検出部604は、第1の解析結果ログ情報1200および第2の解析結果ログ情報1300を参照して、同一行の動作ログ同士を比較して、動作ログの内容が一致するか否かを判断する。
【0143】
図14の例では、第1の解析結果ログ情報1200の1行目の動作ログ1000-1は、第2の解析結果ログ情報1300の1行目の動作ログ1100-1と内容が一致する。また、第1の解析結果ログ情報1200の2行目の動作ログ1000-4は、第2の解析結果ログ情報1300の2行目の動作ログ1100-4と内容が一致する。また、第1の解析結果ログ情報1200の3行目の動作ログ1000-7は、第2の解析結果ログ情報1300の3行目の動作ログ1100-7と内容が一致する。
【0144】
一方、第1の解析結果ログ情報1200の4行目の動作ログ1000-8は、第2の解析結果ログ情報1300の4行目の動作ログ1100-8と内容が一致しない。具体的には、エンハンス前後でsoftware3のクラスDのメソッド6の復帰値が「n」から「Z」に変化している。この場合、検出部604は、ソフトウェアの切り替わり箇所の差分として、第1の動作ログ情報1000の動作ログ1000-8と第2の動作ログ情報1100の動作ログ1100-8との間の復帰値の変化を検出する。
【0145】
(差分情報の具体例)
つぎに、
図15を用いて、第1の動作ログ情報から特定されたソフトウェアの切り替わり箇所と、第2の動作ログ情報から特定されたソフトウェアの切り替わり箇所との差分を表す差分情報の具体例について説明する。
【0146】
図15は、差分情報の具体例を示す説明図である。
図15において、差分情報1500は、第1の動作ログ情報1000(
図10参照)から特定されたソフトウェアの切り替わり箇所と、第2の動作ログ情報1100(
図11参照)から特定されたソフトウェアの切り替わり箇所との差分を表す。
【0147】
差分情報1500は、エンハンス前の検証対象ソフトウェア(software2)を動作させたときの動作ログ1000-8と、エンハンス後の検証対象ソフトウェア(software2)を動作させたときの動作ログ1100-8との間の復帰値の差「n→Z」を示している。差分情報1500は、例えば、第1の動作ログ情報1000および第2の動作ログ情報1100とともに出力される。
【0148】
差分情報1500によれば、ユーザは、検証対象ソフトウェア(software2)のエンハンスにより、software3(com.company3.software3.component3)のクラスDのメソッド6の動作が変わったことを把握することができる。
【0149】
また、ユーザは、第1の動作ログ情報1000、第2の動作ログ情報1100から、software3のクラスDのメソッド6が、検証対象ソフトウェア(software2)から呼び出されていることがわかる。また、ユーザは、software3が、クラスローダAでロードされるOSSであることがわかる。
【0150】
ここでは、検証対象ソフトウェア(software2)が上位のソフトウェア(software1)の機能を利用するために、クラスローダAのOSS(software3)を使用している。しかし、エンハンスによりsoftware3のクラスDのメソッド6の動作が変わっている。このため、ユーザは、例えば、検証対象ソフトウェア(software2)ではクラスローダBでロードされるOSS(software3)を使用すべきであると判断することができる。
【0151】
(動作検証装置301の各種処理手順)
つぎに、動作検証装置301の各種処理手順について説明する。まず、
図16を用いて、動作検証装置301の動作ログ採取処理手順について説明する。動作ログ採取処理手順は、エンハンス前後の検証対象ソフトウェアそれぞれについて実行される。また、動作ログ採取処理手順は、例えば、クライアント装置302からのテスト実行命令に応じて実行が開始される。
【0152】
図16は、動作検証装置301の動作ログ採取処理手順の一例を示すフローチャートである。
図16のフローチャートにおいて、まず、動作検証装置301は、アスペクト指向プログラムを設定した環境において、システムにおける検証対象ソフトウェアのテスト実行を開始する(ステップS1601)。
【0153】
そして、動作検証装置301は、検証対象ソフトウェアを動作させたときに実行されるメソッドの処理を開始する(ステップS1602)。つぎに、動作検証装置301は、実行されたメソッドが属するクラスに付与されるパッケージ名を取得する(ステップS1603)。
【0154】
つぎに、動作検証装置301は、実行されたメソッドが属するクラスのクラスローダ情報を取得する(ステップS1604)。そして、動作検証装置301は、実行されたメソッドの入出力情報と対応付けて、取得したパッケージ名とクラスローダ情報を表す動作ログを、動作ログ情報に出力する(ステップS1605)。なお、動作ログ情報は、例えば、ファイルやデータベースにより実現される。
【0155】
つぎに、動作検証装置301は、全てのメソッドの処理が終了したか否かを判断する(ステップS1606)。ここで、全てのメソッドの処理が終了していない場合(ステップS1606:No)、動作検証装置301は、ステップS1602に戻って、次のメソッドの処理を開始する。
【0156】
一方、全てのメソッドの処理が終了した場合(ステップS1606:Yes)、動作検証装置301は、本フローチャートによる一連の処理を終了する。
【0157】
これにより、エンハンス前後の検証対象ソフトウェアそれぞれについて、検証対象ソフトウェアを動作させたときに実行される各メソッドの入出力情報と対応付けて、各メソッドが属するクラスのパッケージ名およびクラスローダ情報を表す動作ログを実行順に示す動作ログ情報(第1の動作ログ情報、第2の動作ログ情報)を作成することができる。
【0158】
つぎに、
図17を用いて、動作検証装置301の解析処理手順について説明する。
【0159】
図17は、動作検証装置301の解析処理手順の一例を示すフローチャートである。
図17のフローチャートにおいて、まず、動作検証装置301は、第1の動作ログ情報を取得する(ステップS1701)。第1の動作ログ情報は、エンハンス前の検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報とパッケージ名とクラスローダ情報とを対応付けて表す動作ログを実行順に示す情報である。
【0160】
そして、動作検証装置301は、取得した第1の動作ログ情報に基づいて、動作ログ解析処理を実行する(ステップS1702)。第1の動作ログ情報に基づく動作ログ解析処理の具体的な処理手順については、
図18を用いて後述する。
【0161】
つぎに、動作検証装置301は、第2の動作ログ情報を取得する(ステップS1703)。第2の動作ログ情報は、エンハンス後の検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報とパッケージ名とクラスローダ情報とを対応付けて表す動作ログを実行順に示す情報である。
【0162】
そして、動作検証装置301は、取得した第2の動作ログ情報に基づいて、動作ログ解析処理を実行する(ステップS1704)。第2の動作ログ情報に基づく動作ログ解析処理の具体的な処理手順については、第1の動作ログ情報に基づく動作ログ解析処理と同様のため、図示および説明を省略する。
【0163】
つぎに、動作検証装置301は、第1の解析結果ログ情報および第2の解析結果ログ情報を取得する(ステップS1705)。第1の解析結果ログ情報は、ステップS1702において得られる情報であり、第1の動作ログ情報から特定されるソフトウェアの切り替わり箇所を示す。第2の解析結果ログ情報は、ステップS1704において得られる情報であり、第2の動作ログ情報から特定されるソフトウェアの切り替わり箇所を示す。
【0164】
そして、動作検証装置301は、取得した第1の解析結果ログ情報および第2の解析結果ログ情報に基づいて、差分解析処理を実行する(ステップS1706)。差分解析処理の具体的な処理手順については、
図19を用いて後述する。
【0165】
つぎに、動作検証装置301は、第1の動作ログ情報および第2の動作ログ情報とともに、差分情報を出力して(ステップS1707)、本フローチャートによる一連の処理を終了する。差分情報は、ステップS1706において得られる情報であり、エンハンス前後におけるソフトウェアの切り替わり箇所の差分を表す。
【0166】
これにより、エンハンスによるソフトウェアの動作差異の検証を行うにあたり、外部とのインタフェース部分(呼び出し関係)の非互換箇所の特定を容易にすることができる。
【0167】
つぎに、
図18を用いて、
図17に示したステップS1702の第1の動作ログ情報に基づく動作ログ解析処理の具体的な処理手順について説明する。
【0168】
図18は、動作ログ解析処理の具体的処理手順の一例を示すフローチャートである。
図18のフローチャートにおいて、まず、動作検証装置301は、第1の動作ログ情報の先頭から未読み込みの動作ログを1行読み込む(ステップS1801)。つぎに、動作検証装置301は、比較対象パッケージ名を特定する(ステップS1802)。
【0169】
なお、比較対象パッケージ名は、例えば、
図9を用いて説明したように、パッケージ名をスタック方式で管理することにより特定することができる。
【0170】
そして、動作検証装置301は、読み込み行(読み込んだ動作ログ)のパッケージ名が比較対象パッケージ名と異なるか否かを判断する(ステップS1803)。ここで、比較対象パッケージ名と同じ場合(ステップS1803:No)、動作検証装置301は、ステップS1805に移行する。
【0171】
一方、比較対象パッケージ名と異なる場合(ステップS1803:Yes)、動作検証装置301は、読み込み行を第1の解析結果ログ情報に出力する(ステップS1804)。なお、第1の解析結果ログ情報(あるいは、第2の解析結果ログ情報)は、例えば、ファイルやデータベースにより実現される。
【0172】
そして、動作検証装置301は、第1の動作ログ情報から読み込まれていない未読み込みの動作ログがあるか否かを判断する(ステップS1805)。ここで、未読み込みの動作ログがある場合(ステップS1805:Yes)、動作検証装置301は、ステップS1801に戻る。
【0173】
一方、未読み込みの動作ログがない場合(ステップS1805:No)、動作検証装置301は、動作ログ解析処理を呼び出したステップに戻る。
【0174】
これにより、第1の動作ログ情報(または、第2の動作ログ情報)から特定されたソフトウェアの切り替わり箇所を示す第1の解析結果ログ情報(または、第2の解析結果ログ情報)を作成することができる。
【0175】
つぎに、
図19を用いて、
図17に示したステップS1706の差分解析処理の具体的な処理手順について説明する。
【0176】
図19は、差分解析処理の具体的処理手順の一例を示すフローチャートである。
図19のフローチャートにおいて、まず、動作検証装置301は、第1の解析結果ログ情報の先頭から未読み込みの動作ログを1行読み込む(ステップS1901)。
【0177】
つぎに、動作検証装置301は、第2の解析結果ログ情報の先頭から未読み込みの動作ログを1行読み込む(ステップS1902)。そして、動作検証装置301は、読み込んだ動作ログ同士を比較して、パッケージ名、クラス名、メソッド名、引数、復帰値の少なくともいずれかが異なるか否かを判断する(ステップS1903)。
【0178】
ここで、パッケージ名等が同じ場合(ステップS1903:No)、動作検証装置301は、ステップS1905に移行する。一方、パッケージ名、クラス名、メソッド名、引数、復帰値の少なくともいずれかが異なる場合(ステップS1903:Yes)、動作検証装置301は、動作ログの比較結果を差分情報に出力する(ステップS1904)。なお、差分情報は、例えば、ファイルやデータベースにより実現される。
【0179】
そして、動作検証装置301は、第1の解析結果ログ情報および第2の解析結果ログ情報の少なくともいずれかに未読み込みの動作ログがあるか否かを判断する(ステップS1905)。ここで、未読み込みの動作ログがある場合(ステップS1905:Yes)、動作検証装置301は、ステップS1901に戻る。
【0180】
一方、未読み込みの動作ログがない場合(ステップS1905:No)、動作検証装置301は、差分解析処理を呼び出したステップに戻る。
【0181】
これにより、第1の動作ログ情報から特定されたソフトウェアの切り替わり箇所と、第2の動作ログ情報から特定されたソフトウェアの切り替わり箇所との差分を表す差分情報を作成することができる。
【0182】
以上説明したように、実施の形態にかかる動作検証装置301によれば、複数のソフトウェアが連携して動作するシステム内の検証対象ソフトウェアが更新された場合、更新前後の検証対象ソフトウェアそれぞれについて、当該検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報を含む動作ログを出力する際に、当該メソッドを含むソフトウェアと、当該メソッドの呼び出し先のメソッドを含むソフトウェアとを特定可能な情報を出力することができる。メソッドの入出力情報は、例えば、メソッドの引数または復帰値である。
【0183】
これにより、動作検証装置301は、エンハンスが行われたソフトウェアの動作検証を行うにあたり、外部とのインタフェース部分の動作差異(非互換箇所)を特定可能にすることができる。このため、エンハンスにより生じた動作差異のうち優先的に検証すべき箇所を判断可能となり、ソフトウェアの動作検証の効率化を図ることができる。
【0184】
また、動作検証装置301によれば、更新前の検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報とパッケージ名とを対応付けて表すログを実行順に示す第1の動作ログ情報を出力することができる。また、動作検証装置301によれば、更新後の検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報とパッケージ名とを対応付けて表すログを実行順に示す第2の動作ログ情報を出力することができる。パッケージ名は、メソッドが属するクラスを分類する情報であり、メソッドを含むソフトウェアを特定する情報の一例である。
【0185】
これにより、各メソッドの入出力情報とパッケージ名(各メソッドを含むソフトウェアを特定する情報)とを対応付けて表す動作ログを出力する際に、各メソッドが実行された順に動作ログを並べて出力することで、メソッドの呼び出し前後のパッケージ名を比較して、ソフトウェアの呼び出し関係を特定可能にすることができる。また、メソッドが属するクラスを分類するために付与されるパッケージ名を利用して、メソッドを含むソフトウェアを特定可能にすることができる。
【0186】
また、動作検証装置301によれば、第1の動作ログ情報に含まれるログが表すパッケージ名を参照して、第1の動作ログ情報から、ソフトウェアの切り替わり箇所を特定し、第2の動作ログ情報に含まれるログが表すパッケージ名を参照して、第2の動作ログ情報から、ソフトウェアの切り替わり箇所を特定することができる。ソフトウェアの切り替わり箇所は、メソッドの呼び出し前後でソフトウェアが切り替わる箇所である。そして、動作検証装置301によれば、第1の動作ログ情報から特定したソフトウェアの切り替わり箇所と、第2の動作ログ情報から特定したソフトウェアの切り替わり箇所とを比較した結果に基づいて、ソフトウェアの切り替わり箇所の差分を検出し、第1の動作ログ情報および第2の動作ログ情報を出力するとともに、検出した差分を表す情報を出力することができる。
【0187】
これにより、外部とのインタフェース部分の動作差異を検出して、その動作差異の箇所を特定可能な情報を出力することができる。このため、ユーザは、動作ログ情報(第1の動作ログ情報、第2の動作ログ情報)の中から優先的に検証すべき箇所を容易に見つけることが可能となる。例えば、ユーザが、各動作ログ情報から特定した外部とのインタフェース部分を見比べながら動作差異を特定する場合に比べて、作業時間および作業負荷を削減することができる。
【0188】
また、動作検証装置301によれば、第1の動作ログ情報を出力する際に、第1の動作ログ情報のうち、当該第1の動作ログ情報から特定したソフトウェアの切り替わり箇所を判別可能に出力することができる。また、動作検証装置301によれば、第2の動作ログ情報を出力する際に、第2の動作ログ情報のうち、当該第2の動作ログ情報から特定したソフトウェアの切り替わり箇所を判別可能に出力することができる。
【0189】
これにより、各動作ログ情報(第1の動作ログ情報、第2の動作ログ情報)の中から、外部とのインタフェース部分を容易に特定可能にすることができる。
【0190】
また、動作検証装置301によれば、更新前後の検証対象ソフトウェアそれぞれについて、当該検証対象ソフトウェアを動作させたときに実行されたメソッドのクラスローダの情報を取得することができる。そして、動作検証装置301によれば、更新前の検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報とパッケージ名とクラスローダの情報とを対応付けて表すログを実行順に示す第1の動作ログ情報を出力することができる。また、動作検証装置301によれば、更新後の検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報とパッケージ名とクラスローダの情報とを対応付けて表すログを実行順に示す第2の動作ログ情報を出力することができる。
【0191】
これにより、同じOSSを異なるソフトウェアが提供している場合であっても、どのソフトウェアが提供しているOSSであるかを判別可能にすることができる。例えば、検証対象ソフトウェアが使用しているOSSに動作差異があった際に、他のソフトウェアが提供しているOSSを使用していることが特定されたとする。この場合、ユーザは、例えば、検証対象ソフトウェア自身が提供しているOSSを使用するように、クラスローダを変更するといった対応を取ることができる。
【0192】
これらのことから、動作検証装置301によれば、システム更改などに伴うエンハンスが行われたソフトウェアの動作検証を行う際に、外部のソフトウェアに影響を与えるような箇所を優先的に検証することが可能となる。これにより、ミドルウェアなどの大規模なソフトウェアの動作検証を行う場合であっても、検証精度を確保しつつ検証作業にかかる負荷を削減して、検証期間の短縮化を図ることができる。
【0193】
なお、本実施の形態で説明した動作検証方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本動作検証プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、DVD、USBメモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本動作検証プログラムは、インターネット等のネットワークを介して配布してもよい。
【0194】
また、本実施の形態で説明した動作検証装置301は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けICやFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。
【0195】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0196】
(付記1)複数のソフトウェアが連携して動作するシステム内の検証対象ソフトウェアが更新された場合、更新前後の前記検証対象ソフトウェアそれぞれについて、当該検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報を含むログを出力する際に、当該メソッドを含むソフトウェアと、当該メソッドの呼び出し先のメソッドを含むソフトウェアとを特定可能な情報を出力する、
処理をコンピュータに実行させることを特徴とする動作検証プログラム。
【0197】
(付記2)前記出力する処理は、
更新前の前記検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報と、当該メソッドを含むソフトウェアを特定する情報とを対応付けて表すログを実行順に示す第1の動作ログ情報を出力し、
更新後の前記検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報と、当該メソッドを含むソフトウェアを特定する情報とを対応付けて表すログを実行順に示す第2の動作ログ情報を出力する、
ことを特徴とする付記1に記載の動作検証プログラム。
【0198】
(付記3)前記第1の動作ログ情報に含まれるログが表すソフトウェアを特定する情報を参照して、前記第1の動作ログ情報から、メソッドの呼び出し前後でソフトウェアが切り替わる箇所を特定し、
前記第2の動作ログ情報に含まれるログが表すソフトウェアを特定する情報を参照して、前記第2の動作ログ情報から、前記箇所を特定し、
前記第1の動作ログ情報から特定した前記箇所と前記第2の動作ログ情報から特定した前記箇所とを比較した結果に基づいて、前記箇所の差分を検出する、
処理を前記コンピュータに実行させ、
前記出力する処理は、
前記第1の動作ログ情報および前記第2の動作ログ情報を出力するとともに、検出した前記差分を表す情報を出力する、
ことを特徴とする付記2に記載の動作検証プログラム。
【0199】
(付記4)前記出力する処理は、
前記第1の動作ログ情報を出力する際に、前記第1の動作ログ情報のうち、当該第1の動作ログ情報から特定した前記箇所を判別可能に出力し、
前記第2の動作ログ情報を出力する際に、前記第2の動作ログ情報のうち、当該第2の動作ログ情報から特定した前記箇所を判別可能に出力する、
ことを特徴とする付記3に記載の動作検証プログラム。
【0200】
(付記5)前記メソッドを含むソフトウェアを特定する情報は、前記メソッドが属するクラスを分類するパッケージ名である、ことを特徴とする付記2~4のいずれか一つに記載の動作検証プログラム。
【0201】
(付記6)更新前後の前記検証対象ソフトウェアそれぞれについて、当該検証対象ソフトウェアを動作させたときに実行されたメソッドのクラスローダの情報を取得する、
処理を前記コンピュータに実行させ、
前記出力する処理は、
更新前の前記検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報と、当該メソッドを含むソフトウェアを特定する情報と、取得した当該メソッドのクラスローダの情報とを対応付けて表すログを実行順に示す第1の動作ログ情報を出力し、
更新後の前記検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報と、当該メソッドを含むソフトウェアを特定する情報と、取得した当該メソッドのクラスローダの情報とを対応付けて表すログを実行順に示す第2の動作ログ情報を出力する、
ことを特徴とする付記2~5のいずれか一つに記載の動作検証プログラム。
【0202】
(付記7)前記メソッドの入出力情報は、前記メソッドの引数または復帰値を含む、ことを特徴とする付記1~6のいずれか一つに記載の動作検証プログラム。
【0203】
(付記8)複数のソフトウェアが連携して動作するシステム内の検証対象ソフトウェアが更新された場合、更新前後の前記検証対象ソフトウェアそれぞれについて、当該検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報を含むログを出力する際に、当該メソッドを含むソフトウェアと、当該メソッドの呼び出し先のメソッドを含むソフトウェアとを特定可能な情報を出力する、
処理をコンピュータが実行することを特徴とする動作検証方法。
【0204】
(付記9)複数のソフトウェアが連携して動作するシステム内の検証対象ソフトウェアが更新された場合、更新前後の前記検証対象ソフトウェアそれぞれについて、当該検証対象ソフトウェアを動作させたときに実行されたメソッドの入出力情報を含むログを出力する際に、当該メソッドを含むソフトウェアと、当該メソッドの呼び出し先のメソッドを含むソフトウェアとを特定可能な情報を出力する、
処理を実行する制御部を有することを特徴とする情報処理装置。
【符号の説明】
【0205】
101 情報処理装置
110,1000 第1の動作ログ情報
120,1100 第2の動作ログ情報
200 システム
201 オペレーティングシステム
202 Java
203,701 アプリケーションサーバ
204,702 ミドルウェア
205,703 ユーザアプリケーション
300 動作検証システム
301 動作検証装置
302 クライアント装置
310 ネットワーク
400 バス
401 CPU
402 メモリ
403 ディスクドライブ
404 ディスク
405 通信I/F
406 可搬型記録媒体I/F
407 可搬型記録媒体
601 取得部
602 対応付け部
603 特定部
604 検出部
605 出力制御部
800,900 動作ログ情報
801,802 境界線
1200 第1の解析結果ログ情報
1300 第2の解析結果ログ情報
1500 差分情報