JP2011210234A - プロセス内コンポーネントのオブジェクト作成方法およびシステム - Google Patents

プロセス内コンポーネントのオブジェクト作成方法およびシステム Download PDF

Info

Publication number
JP2011210234A
JP2011210234A JP2011019620A JP2011019620A JP2011210234A JP 2011210234 A JP2011210234 A JP 2011210234A JP 2011019620 A JP2011019620 A JP 2011019620A JP 2011019620 A JP2011019620 A JP 2011019620A JP 2011210234 A JP2011210234 A JP 2011210234A
Authority
JP
Japan
Prior art keywords
process component
component
application
request
interface
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.)
Granted
Application number
JP2011019620A
Other languages
English (en)
Other versions
JP5226093B2 (ja
Inventor
Cailiang Song
ザイリャン ソン
Xin Meng
シン メン
Jinwei Shii
ジンウェイ シー
Lian Wang
リェン ワン
Huifeng Liu
リウ ヒュイフェ
Xiaowei Liu
リウ シャオウェイ
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.)
NEC China Co Ltd
Original Assignee
NEC China Co 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 NEC China Co Ltd filed Critical NEC China Co Ltd
Publication of JP2011210234A publication Critical patent/JP2011210234A/ja
Application granted granted Critical
Publication of JP5226093B2 publication Critical patent/JP5226093B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】 プロセス内コンポーネントのオブジェクトの作成方法を提供する。
【解決手段】 このオブジェクト作成方法は、プロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録することのできる、プロセス外コンポーネントをアプリケーションに埋め込むステップと、アプリケーションを起動するステップと、プロセス外コンポーネントのオブジェクトを作成するために、プロセス内コンポーネントのオブジェクトを作成するためにアプリケーションから発行された、プロセス内コンポーネントの場所を特定するよう求める要求を、プロセス外コンポーネントに転送するステップと、プロセス外コンポーネントのオブジェクトによってプロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録するステップを含む。
【選択図】 図5

Description

本発明はコンピュータプログラムの符号化とテストの分野に関し、特に、プロセス内コンポーネントのオブジェクトを作成する方法およびシステムに関する。
ソフトウェアに対する要求の高度化に呼応して、ソフトウェアの機能性、操作性、インテリジェント化が急激な勢いで進展している。また、これに伴うソフトウェアの複雑化と大規模化を背景に、開発における難度はますます高くなり、開発期間は長期化し、必要とされる要員数も増加している。ソフトウェア再使用技法は、反復作業を削減し、ソフトウェア開発におけるミス発生の確率を低減させるために生まれた技術だが、登場以来数十年を経た今、ますます広く普及してきている。
構造設計とオブジェクト指向技法をベースに開発されたコンポーネント技法は、1990年代に登場した新技法である。これは、オブジェクト指向技法とその拡張の後継技術として生まれた、ソフトウェア開発のための標準プロセスアーキテクチャである。
コンポーネントの標準化への取り組みが始まって以来、多数の企業や機関によっていくつかのモデルが提案された。よく知られたコンポーネントモデルとしては、共通オブジェクトリクエストブローカアーキテクチャ(CORBA)、コンポーネントオブジェクトモデル(COM)、EJBコンポーネント、Netコンポーネント等が挙げられる。
以下では、MicrosoftのCOMを例にとって、「コンポーネント」について詳細に説明する。
COM技法は、自動化技法(OLE自動化)やActiveXコントロール等の多数のデスクトップアプリケーションに幅広く適用されている。コンポーネントは、クライアントアプリケーションとCOM/DCOM内のコンポーネントとの間で行われるインタラクションに基づいて、「プロセス内コンポーネント」と「プロセス外コンポーネント」という2つのカテゴリに分類することができる。「プロセス内コンポーネント」はクライアントアプリケーションとコンポーネントが同じプロセスアドレス空間に常駐することを意味し、「プロセス外コンポーネント」はクライアントアプリケーションとコンポーネントが異なるプロセスアドレスス空間に常駐することを意味する。プロセス内コンポーネントの実装は、コンポーネントを動的リンクライブラリ(DLL)とみなすことによって実装される。この場合、クライアントアプリケーションはまずコンポーネントを自己のプロセスアドレス空間にロードし、その後コンポーネントの機能を呼び出す。コンポーネントにおけるこれら2つのカテゴリは、クライアントアプリケーションとコンポーネントとの間で行われるインタラクションが個々に固有であるという点において、まったく異なっている。しかし、プログラミングの観点に立つと、プロセス内コンポーネントとプロセス外コンポーネントが同じ機能を有する場合には、クライアントアプリケーションは(その修正を必要とせずに)これらのコンポーネントを同じように使用できなければならない。
コンポーネントを取得して動作させることには、2つの重要な効果がある。1つ目の効果は、新たに開発されたコンポーネントを取得および動作させることにより、そのコンポーネントに対して自動テストを実行できることである。そして2つ目の効果は、アプリケーションの移行時に、すでに開発されているコンポーネントを取得および動作させることにより、そのコンポーネントを再使用できることである。
プロセス内コンポーネントの場合、コンポーネントオブジェクトのインタフェースを別のプロセスで取得できれば、オブジェクトを動作させ、オブジェクトからデータを取得する操作が非常に便利になる。
しかし、これまでの手法では、別のプロセスがプロセス内コンポーネントオブジェクトのインタフェースを取得することは困難である。プロセス内コンポーネントを取得および動作させるために現在使用されている方法には、主に以下の2通りがある。
1) アプリケーションのメモリの解析。この方法では、プロセス内コンポーネントが開始され、アプリケーションにロードされると、アプリケーションのメモリ内でコンポーネントへのアクセスが可能になる。そして、メモリ内のデータを解析することにより、コンポーネントのデータを取得することができる。この手法は、あるアプリケーションの同じコンポーネントの異なるオブジェクトと、異なるアプリケーションの同じコンポーネントオブジェクトとを解析および処理する必要があるため、きわめて複雑である。
2) コンポーネントハンドラによるコンポーネントオブジェクトの取得。この方法では、アプリケーション内のコンポーネントハンドラを用いてコンポーネントオブジェクトにアクセスし、コンポーネントオブジェクトの機能または方法をさらに起動することにより、コンポーネントを取得および動作させることができる。この手法は、ターゲットアプリケーションの開発に使用される言語に依存する。例えば、VBで開発されたアプリケーションとVCで開発されたアプリケーションでは、コンポーネントオブジェクトを取得するための手法が互いに異なる。
特許文献1では、テストケースにおいて様々なテストステップを実行するために、テストプロキシモジュールがテスト対象アプリケーションに埋め込まれる、アプリケーションテスト方法が開示されている。この方法では、テストプロキシがテストステップに従ってテスト対象アプリケーションのコンポーネントを取得して動作させ、テストを完了する。
図1は、特許文献1による、アプリケーションをテストするためのシステムを構成する各手段を示す概略ブロック図である。以下では、当該システムの各手段について説明する。
・テストクライアントマスタモジュール101は、テストケースを共有データ記憶手段300にロードし、テストフローを管理するための、クライアントアプリケーションのマスタモジュールとして構成されている。
・テスト開始手段102は、テストプロキシウィンドウ手段203を検索し、検索されたテストプロキシウィンドウ手段203に、テストケースの識別(ID)の集合とテスト命令を送信するように構成されている。
・テスト対象アプリケーションマスタモジュール201は、プロセス内コンポーネント手段202やテストプロキシウィンドウ手段203等の他のモジュールおよび手段をロードするための、テスト対象アプリケーションのマスタモジュールとして構成されている。
・プロセス内コンポーネント手段202は、テスト対象アプリケーションのプロセスにおいてクライアントとして実行され、当該プロセスの一部として動作するための、テスト対象アプリケーションのプロセス内コンポーネント(例:.dllや.ocxファイル)として構成されている。
・埋め込みテストプロキシウィンドウ手段203は、テストプロキシモジュールとして構成されている。埋め込みテストプロキシウィンドウ手段203は、ユーザに表示されない(不可視の)手段であり、テスト対象アプリケーションと共に開始される。埋め込みテストプロキシウィンドウ手段203は、起動テストのためのテスト命令をテスト開始手段102から受信し、テストクライアントマスタモジュール101によってロードされたテストケースを共有データ記憶手段から読み取り、テストケース内のテストステップに従って、テスト結果を取得するのに望ましい方法でプロセス内コンポーネント手段202を動作させ、テスト結果を共有データ記憶手段に書き込む。
−共有データ記憶手段300は、テストケースとテスト結果を記憶するために構成されている。テスト対象アプリケーションに埋め込まれたテストプロキシウィンドウ手段203と、テストクライアントマスタモジュール101は、共有データ記憶手段に対して読み取りと書き込みの操作を実行することができる。
図2は、特許文献1による、アプリケーションをテストするための方法を示すフローチャートである。
当該テスト方法が開始すると、テストクライアントマスタモジュール101がテストケースを共有データ記憶手段300(ステップS201)にロードする。その後、テストクライアントマスタモジュール101がテスト開始手段102をトリガしてテストプロキシウィンドウ手段203を検索させ、テストプロキシウィンドウ手段203にテストケースIDの集合とテスト命令とを送信する(ステップS202)。テストプロキシウィンドウ手段203は、テスト命令を受信後直ちに、テストを開始する。テストプロキシウィンドウ手段203は、受信したテストケースIDの集合に基づいて、共有データ記憶手段300からテストケースを読み出し、個々のテストケースを順次処理する(ステップS203)。テストプロキシウィンドウ手段203は、テストケース内のテストステップに従ってプロセス内コンポーネント手段202を動作させ、プロセス内コンポーネント手段のデータを取得する(ステップS204)。その後、テストプロキシウィンドウ手段203はテスト結果を決定し、それを共有データ記憶手段300に書き込む(ステップS205)。これにより、テストクライアントマスタモジュール101は共有データ記憶手段300からテスト結果を取得できる(ステップS206)。
図3は、特許文献1による、アプリケーションをテストする方法の具体例を示す概略図である。
図3に示す具体例では、Microsoft OfficeのスプレッドシートActiveXを、テスト対象アプリケーションのプロセス内コンポーネントとする。図3では、ブロック間をつなぐ接続線に付けられた番号は、当該例示的方法の実行順序を示す。
この解決法には短所がある。それは、テストクライアントはプロセス内コンポーネントオブジェクトのインタフェースを取得できないということである。この方法においては、データ交換は共有データ記憶装置によってのみ可能なので、プロセス内コンポーネントの取得と動作が可能な範囲はきわめて限定的である。換言すれば、テストクライアントにおいて直接、プロセス内コンポーネントオブジェクトを動作させデータを取得することができないのである。
そのため、テストクライアントにおいて直接、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを取得し、それによりプロセス内コンポーネントのオブジェクトを動作させ、当該コンポーネントのデータを取得することが可能な、プロセス内コンポーネントのオブジェクト作成方法が必要とされている。
中国特許出願No.200410079042.5
関連技術の上記の短所に対処するため、プロセス内コンポーネントのオブジェクト作成方法が提供される。プロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録することのできる、プロセス外コンポーネントがターゲットアプリケーションに埋め込まれる。ターゲットアプリケーションが、プロセス内コンポーネントのオブジェクトを作成するために、プロセス内コンポーネントの場所の特定を求める要求を発行すると、その要求はプロセス外コンポーネントに転送され、プロセス外コンポーネントのオブジェクトが作成される。プロセス外コンポーネントのオブジェクトはプロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録する。これにより、ターゲットアプリケーション以外の他のアプリケーションにおいても、作成されたプロセス外コンポーネントのオブジェクトのインタフェースをクエリして、それに記録されたプロセス内コンポーネントのオブジェクトのインタフェースを取得できるので、プロセス内コンポーネントのオブジェクトを直接動作させることが可能になる。
本発明の第1の態様によれば、プロセス内コンポーネントのオブジェクト作成方法であって、プロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録することのできるプロセス外コンポーネントを、アプリケーションに埋め込むステップと、アプリケーションを起動するステップと、プロセス外コンポーネントのオブジェクトを作成するために、プロセス内コンポーネントのオブジェクトを作成するためにアプリケーションから発行された、プロセス内コンポーネントの場所を特定するよう求める要求を、プロセス外コンポーネントに転送するステップと、プロセス外コンポーネントのオブジェクトによってプロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録するステップとを含む。
好ましくは、プロセス内コンポーネントに関する情報を取得し、オブジェクトを作成すべきプロセス内コンポーネントを決定するために、要求を受信したプロセス外コンポーネントにおいて当該要求を解析するステップをさらに含む。
好ましくは、要求をプロセス外コンポーネントへ転送するステップが、アプリケーションから発行された、プロセス内コンポーネントの場所を特定するための要求をインターセプトするステップと、プロセス外コンポーネントに関するアドレス情報を取得するステップと、プロセス外コンポーネントの場所を特定するステップと、場所が特定されたプロセス外コンポーネントへ当該要求を転送するステップとをさらに含む。
好ましくは、アプリケーション以外の他のアプリケーションにおけるクエリを介して、プロセス外コンポーネントのオブジェクトのインタフェースを取得可能であり、プロセス外コンポーネントのオブジェクトのインタフェースを介して、プロセス外コンポーネントのオブジェクトによって記録されたプロセス内コンポーネントのオブジェクトのインタフェースを取得可能である。
好ましくは、取得されたプロセス内コンポーネントのオブジェクトのインタフェースを介して、当該アプリケーション以外の他のアプリケーションにおいてプロセス内コンポーネントのオブジェクトを動作可能である。
好ましくは、アプリケーションが、Windowsベースのアプリケーションである。
本発明の第2の態様によれば、プロセス内コンポーネントのオブジェクトを作成するシステムであって、プロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録することのできるアプリケーション内に、プロセス外コンポーネントを埋め込むプロセス外コンポーネント埋め込み手段と、アプリケーションを起動するマスタ手段と、プロセス外コンポーネントのオブジェクトを作成するために、プロセス内コンポーネントのオブジェクトを作成するためにアプリケーションから発行された、プロセス内コンポーネントの場所を特定するよう求める要求を、プロセス外コンポーネントに転送するコンポーネントリダイレクト手段とを備え、作成されたプロセス外コンポーネントのオブジェクトが、プロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録する。
好ましくは、当該プロセス外コンポーネントが、プロセス内コンポーネントに関する情報を取得し、オブジェクトを作成すべきプロセス内コンポーネントを決定するために、要求を解析する情報解析手段をさらに含む。
好ましくは、コンポーネントリダイレクト手段が、アプリケーションから発行された、プロセス内コンポーネントの場所を特定するよう求める要求をインターセプトするための要求インターセプト手段と、プロセス外コンポーネントに関するアドレス情報を取得し、プロセス外コンポーネントの場所を特定して、場所が特定されたプロセス外コンポーネントに当該要求を転送する場所特定手段とを含む。
最も近似した関連技術と、すなわち特許文献1と比較して、本発明は少なくとも以下の効果において勝る。
プロセス外コンポーネントを使用してプロセス内コンポーネントオブジェクトのインタフェースを取得できるため、プロセス内コンポーネントオブジェクトを直接動作させることができる。
プロセス内コンポーネントのオブジェクトがプロセス外コンポーネントによって作成され、単一のプロセス内コンポーネントの異なるオブジェクトを個別に解析および処理する必要がないため、プログラミングの複雑性が軽減される。
上記およびその他の目的、特徴、並びに利点は、図面を参照しながら本発明の非限定的な実施例について詳述した以下の説明を読むことにより、さらに明らかになるであろう。
特許文献1による、アプリケーションをテストするためのシステムを構成する各手段を示す概略ブロック図である。 特許文献1による、アプリケーションをテストするための方法を示すフローチャートである。 特許文献1による、アプリケーションをテストするための方法の具体例を示す概略図である。 本発明の一実施例による、プロセス内コンポーネントのオブジェクトを作成するためのシステムを示す概略ブロック図である。 本発明の一実施例による、プロセス内コンポーネントのオブジェクトを作成するための方法を示すフローチャートである。 本発明の一実施例による、プロセス内コンポーネントのオブジェクトを作成するための方法の具体例を示す概略図である。
上記の図では、同一もしくは対応する手段については、その相関関係を示すために同一の参照記号を使用して示している。太い実線で囲んだ手段は、本発明の概念を反映する主要な手段である。
次に、図面を参照して本発明について説明する。以下の説明に含まれるいくつかの特定の実施例は本発明の具体例を説明することを唯一の目的として示したものであり、本発明の範囲を限定するものと解釈してはならない。なお、本発明の本質を曖昧にするのを避けるため、以下の説明では周知の構造や構成は省略している。
図4は、本発明の一実施例による、プロセス内コンポーネントのオブジェクトを作成するためのシステムを示す概略ブロック図である。以下では、当該システムの各手段について説明する。
・テストクライアントマスタモジュール101は、テストフローを管理するための、クライアントアプリケーションのマスタモジュールとして構成されている。
・プロセス外コンポーネントオブジェクトインタフェースクエリ手段103は、プロセス外コンポーネントオブジェクトのインタフェースをクエリするように構成されている。
・プロセス内コンポーネントオブジェクトインタフェース取得手段104は、プロセス外コンポーネントオブジェクトインタフェースクエリ手段103のクエリに従い、プロセス外コンポーネントオブジェクトのインタフェースを介して、プロセス外コンポーネントによって提供されるサービスにアクセスするように構成されている。
・プロセス内コンポーネント動作/データ取得手段105は、プロセス内コンポーネントを自由にかつ便利な方法で動作させ、プロセス内コンポーネントオブジェクトインタフェース取得手段104によって取得されたプロセス内コンポーネントオブジェクトのインタフェースを介して、プロセス内コンポーネントのデータを取得するための、サービス論理処理手段として構成されている。
・ テスト対象アプリケーションマスタモジュール201は、テスト対象アプリケーションを起動し、コンポーネントリダイレクト手段204やプロセス外コンポーネント手段205などの他のモジュールおよび手段をロードするための、テスト対象アプリケーションのマスタモジュールとして構成されている。
・ プロセス内コンポーネント手段202は、テスト対象アプリケーションのプロセス内でクライアントとして実行され、当該プロセスの一部として動作するための、テスト対象アプリケーションのプロセス内コンポーネント手段(例:.dllまたは.ocxファイル)として構成されている。
・ コンポーネントリダイレクト手段204は、プロセス内コンポーネントのオブジェクトを作成するために、テスト対象アプリケーションから発行された、プロセス内コンポーネント手段202の場所を特定するよう求める要求を、プロセス外コンポーネント手段205へ転送するように構成されている。
・ プロセス外コンポーネント手段205は、プロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録する機能を提供するように構成されている。プロセス外コンポーネント手段205はさらに、記録されたプロセス内コンポーネントのオブジェクトのインタフェースを取得するサービスを外部に提供するように構成されている。これにより、他のアプリケーションは、プロセス外コンポーネント手段205のインタフェースをクエリすることによりこれにアクセスし、当該手段によって提供されるサービスを使用して、記録されたプロセス内コンポーネントのオブジェクトのインタフェースを取得することができる。
・ プロセス外コンポーネント埋め込み手段206は、プロセス外コンポーネント手段を(テスト対象の)アプリケーションに埋め込むように構成されている。
図4に示すように、コンポーネントリダイレクト手段204は要求インターセプト手段2041と場所特定手段2042とを備えることができる。ここで、要求インターセプト手段2041は、テスト対象アプリケーションを監視し、テスト対象アプリケーションから発行された、プロセス内コンポーネントのオブジェクトを作成するためにプロセス内コンポーネント手段202の場所を特定するよう求める要求をインターセプトするように構成されている。場所特定手段2042は、プロセス外コンポーネント手段205のアドレス情報を取得し、プロセス外コンポーネント手段205の場所を特定して、場所を特定されたプロセス外コンポーネント手段205への要求転送を可能にするように構成されている。
図4に示すように、プロセス外コンポーネント手段205は、要求を解析して、プロセス内コンポーネントに関する情報を取得し、オブジェクトを作成すべきプロセス内コンポーネントを決定するための情報解析手段2051をさらに備えることができる。
図5は、本発明の一実施例による、プロセス内コンポーネントのオブジェクトを作成するための方法を示すフローチャートである。
図5に示すように、当該方法が開始すると、テスト対象アプリケーションがまず起動される(ステップS501)。同時に、プロセス外コンポーネント手段205へプロセス内コンポーネント手段202の場所を特定するよう求める要求を転送するように構成された、コンポーネントリダイレクト手段204が開始される(ステップS502)。プロセス内コンポーネント手段の場所を特定し、プロセス内コンポーネント手段202を作成(ロード)するために、テスト対象アプリケーションがオペレーションシステムにプロセス内コンポーネント手段202に関する情報をクエリすると、その要求がプロセス外コンポーネント手段205に転送される(ステップS503)。
図4に示すように、コンポーネントリダイレクト手段204は要求インターセプト手段2041と場所特定手段2042とを含んで構成されている。テスト対象アプリケーションが、プロセス内コンポーネント手段202の場所を特定するよう求める要求をオペレーションシステムへ送信すると、要求インターセプト手段2041はその要求をインターセプトすることができる。場所特定手段2042は、要求されたプロセス内コンポーネントに関連付けられたプロセス外コンポーネント手段に関するアドレス情報を取得し、当該プロセス外コンポーネント手段の場所を特定することができる。これにより、コンポーネントリダイレクト手段は、場所を特定されたプロセス外コンポーネント手段へ当該要求を転送できるようになる。
プロセス外コンポーネント手段205は、要求に応じて、プロセス外コンポーネントのオブジェクトを作成する。その後、作成されたプロセス外コンポーネントのオブジェクトは、テスト対象アプリケーションによって要求されたプロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス外コンポーネントのオブジェクト内に、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録する(ステップS504)。これにより、テスト対象アプリケーションの開始手順が完了する(ステップS505)。
テストクライアントアプリケーションが、プロセス内コンポーネントのオブジェクトを動作させるためにデータを取得すると、当該アプリケーションのプロセス外コンポーネントオブジェクトインタフェースクエリ手段103はプロセス外コンポーネントオブジェクトのインタフェースをクエリすることができる。その後、プロセス内コンポーネントオブジェクトインタフェース取得手段104が、クエリされたインタフェースを介してプロセス外コンポーネントオブジェクトにアクセスし、プロセス外コンポーネントオブジェクトによって記録されたプロセス内コンポーネントオブジェクトのインタフェースを取得する(ステップS506)。これにより、テストクライアントアプリケーションのプロセス内コンポーネント動作/データ取得手段105は、プロセス内コンポーネントオブジェクトを便利な方法で直接動作させ、プロセス内コンポーネントオブジェクトインタフェース取得手段104によって取得されたプロセス内コンポーネントオブジェクトのインタフェースを介して、プロセス内コンポーネントオブジェクトのデータを取得することができる(ステップS507)。
図6は、本発明の一実施例による、プロセス内コンポーネントのオブジェクトを作成するための方法の具体例を示す概略図である。図6の具体例において動作されるプロセス内コンポーネントは、図3の具体例で示したのと同じMicrosoft OfficeのスプレッドシートActiveXとする。
図6では、ブロック間をつなぐ接続線に付けられた番号は、当該例示的方法の実行順序を示す。
図6の具体例においては、テスト対象アプリケーションとコンポーネントリダイレクト手段がまず開始される。テスト対象アプリケーションが、プロセス内コンポーネントのオブジェクトの作成を求める要求をコンポーネントリダイレクト手段に送ると(ステップS1)、コンポーネントリダイレクト手段はその要求をプロセス外コンポーネントにリダイレクトする(ステップS2)。
別の具体例においては、レジストリテーブルを修正することができる。ここでは、レジストリテーブルに登録されたプロセス内コンポーネントのDLLが、プロセス外コンポーネントをポイントするように修正される。テスト対象アプリケーションがプロセス内コンポーネントを作成しようとするとき、当該アプリケーションはレジストリテーブルにアクセスしてプロセス内コンポーネントのDLLを取得する必要がある。この具体例では、テスト対象アプリケーションの要求は、プロセス外コンポーネントに転送される。したがって、テスト対象アプリケーションがオブジェクトの作成を求める要求をプロセス内コンポーネント手段に対して行うと、その要求はプロセス外コンポーネント手段に転送される。リダイレクトの機能はこのようにして実現される。
さらに他の具体例においては、要求インターセプト手段をテスト対象アプリケーション内に埋め込むことができる。図4に示すように、要求インターセプト手段はコンポーネントリダイレクト手段に内蔵される。この具体例では、要求インターセプト手段がオペレーションシステム上でテスト対象アプリケーションによって実行される処理を監視し、テスト対象アプリケーションからオペレーションシステムに対して発行された、プロセス内コンポーネントの場所を特定するよう求めるクエリ要求を検出すると、その要求をインターセプトし、コンポーネントリダイレクト手段がそれをプロセス外コンポーネントに転送する。
図6に示す具体例においては、プロセス外コンポーネントは、プロセス内コンポーネントであるスプレッドシートActiveXをカプセル化して有するCOMである。この場合に作成されるのは、COMオブジェクトである。COMオブジェクトは、プロセス内コンポーネントであるスプレッドシートActiveXのオブジェクトを作成し、それをテスト対象アプリケーションに返す(ステップS3)。テスト対象アプリケーションが別のプロセス内コンポーネントを作成/ロードする必要がある場合は、ステップS1〜S3を繰り返せばよい。プロセス内コンポーネント(および対応するプロセス外コンポーネント)のすべてのオブジェクトが作成されると、テスト対象アプリケーションの開始手順が完了する。
その後、テストクライアントが、Windows APIである“CoCreateInstance”を使用して、COMオブジェクトのインタフェースをクエリする(ステップS4)。その後、COMオブジェクトにアクセスすることにより、スプレッドシートActiveXのオブジェクトのインタフェースを取得することができる(ステップS5)。そして、取得されたスプレッドシートActiveXオブジェクトのインタフェースを介して、スプレッドシートActiveXオブジェクトを動作させ、そのデータを取得することが可能になる(ステップS6)。
本具体例においては、スプレッドシートActiveXオブジェクトの動作とデータの取得は、以下のように行われる。
spreadsheet.SetCellData(1,1,20);
spreadsheet.SetCellData(1,2,30);
spreadsheet.SetCellData(1,3,“=(A1+B1)”);
spreadsheet.ShowAbout().
図6の具体例を見れば、本発明の実施例によるプロセス内コンポーネントのオブジェクトの作成方法を用いることにより、プロセス内コンポーネントのオブジェクトの作成を求める要求をプロセス外コンポーネントにリダイレクトできることが分かる。プロセス外コンポーネントは、プロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントを記録する機能を提供することができる。そして、テストクライアントは、プロセス外コンポーネントのオブジェクトのサービスを呼び出すことにより、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを取得することができる。そのため、テスト対象アプリケーション以外のアプリケーションにおいて、プロセス内コンポーネントを容易かつ便利な方法で動作させることが可能となる。これにより、自動テストケースの記述を効率化することができる。
図6の具体例においては、プロセス内コンポーネントはプロセス外コンポーネント内にカプセル化される。そのため、プロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを外部に提供するためには、プロセス内コンポーネントの各々について、対応するプロセス外コンポーネントをテスト対象アプリケーションに埋め込む必要がある。これにより、同じプロセス内コンポーネントの異なるオブジェクトを別々に解析および処理する必要がなくなるため、テストプログラムの記述が効率化される。
上記では、図6の具体例を説明するためWindowsベースのアプリケーションを例にとったが、本発明は他のアプリケーションにも適用できることは、当該技術に精通する当業者には理解されるであろう。
他の具体例においては、すべてのプロセス内コンポーネントに共通するプロセス外コンポーネントを、テスト対象アプリケーションに埋め込むことができる。この場合、要求が共通のプロセス外コンポーネントにリダイレクトされると、プロセス外コンポーネントは要求を解析してプロセス内コンポーネントに関する情報を取得し、オブジェクトを作成すべきプロセス内コンポーネントを決定する。その後、プロセス外コンポーネントは決定されたプロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録する。このとき、動作させるプロセス内コンポーネント毎にプロセス外コンポーネントを埋め込む必要はない。そのため、テストプログラムの記述はさらに効率化される。
本明細書で開示される本発明の実施例のその他の実装は、上記で概説し以下に詳述する方法の実施例のステップおよび動作を実行するソフトウェアプログラムを備える。具体的には、1つの実施例は、コンピュータプログラムロジックが符号化されており、計算装置上で実行されると上記のスキームを提供するための関連の動作を提供する、コンピュータ読み取り可能な媒体を備えるコンピュータプログラム製品である。当該コンピュータプログラムロジックは、計算システムの少なくとも1つのプロセッサ上で実行されると、当該プロセッサを介して本発明の実施例による動作(方法)が実行される。本発明のこうした実装は、典型的には、光媒体(例:CD−ROM)、フロッピーディスクもしくはハードディスクなどのコンピュータ読み取り可能な媒体上に設定または符号化されたソフトウェア、コード、またはその他のデータ構造体、1つ以上のROM、RAM、PROMチップ上のファームウェアもしくはマイクロコード、ASIC(Application Specific Integrated Circuit)や単一もしくは複数モジュール上にダウンロード可能なソフトウェアイメージもしくは共有データベースとして提供される。ソフトウェア、ファームウェア等の実装は、計算装置上にインストールすることにより、当該計算装置内の1つ以上のプロセッサを介して、本発明の実施例による技法を実行することができる。本発明によるシステムは、一連のデータ通信装置上や他のエンティティ内の計算装置上で動作するソフトウェアプロセスに関連して提供することも可能である。さらに、本発明によるシステムは、複数のデータ通信装置上で稼働する複数のソフトウェアプロセスや、一連の専用ミニコンピュータまたはシングルのコンピュータ上で稼働するすべてのソフトウェアプロセスに分散することもできる。
本発明の実施例は、厳密には、ソフトウェアプログラム、ソフトウェアおよびハードウェア、独立したソフトウェア、または独立した回路として実装できることは理解されるであろう。
上記の説明は本発明の好適な実施例のみを示したものであり、いかなる形であれ本発明を限定することを意図するものではない。したがって、いかなる変更、置換、改良も本発明の精神および原理から逸脱することなく行うことができ、そのすべては本発明の範囲に内包される。
201:テスト対象アプリケーションマスタモジュール
202:プロセス内コンポーネント手段
203:テストプロキシウィンドウ
101:テストクライアントマスタモジュール
102:テスト開始手段
300:共有データ記憶手段
204:コンポーネントリダイレクト手段
2041:要求インターセプト手段
2042:場所特定手段
206:プロセス外コンポーネント埋め込み手段
205:プロセス外コンポーネント手段
2051:情報解析手段
103:プロセス外コンポーネントオブジェクトインタフェースクエリ手段
104:プロセス内コンポーネントオブジェクトインタフェース取得手段
105:プロセス内コンポーネント動作/データ取得手段

Claims (9)

  1. プロセス内コンポーネントのオブジェクト作成方法であって、
    前記プロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録することのできるプロセス外コンポーネントを、アプリケーションに埋め込むステップと、
    前記アプリケーションを起動するステップと、
    前記プロセス外コンポーネントのオブジェクトを作成するために、プロセス内コンポーネントのオブジェクトを作成するためにアプリケーションから発行された、プロセス内コンポーネントの場所を特定するよう求める要求を、プロセス外コンポーネントに転送するステップと、
    前記プロセス外コンポーネントのオブジェクトによって前記プロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録するステップと
    を有することを特徴とするオブジェクト作成方法。
  2. 前記プロセス内コンポーネントに関する情報を取得し、オブジェクトを作成すべきプロセス内コンポーネントを決定するために、要求を受信したプロセス外コンポーネントにおいて当該要求を解析するステップをさらに有することを特徴とする請求項1に記載のオブジェクト作成方法。
  3. 要求をプロセス外コンポーネントへ転送するステップが、
    前記アプリケーションから発行された、プロセス内コンポーネントの場所を特定するための要求をインターセプトするステップと、
    プロセス外コンポーネントに関するアドレス情報を取得するステップと、
    プロセス外コンポーネントの場所を特定するステップと、
    場所が特定されたプロセス外コンポーネントへ当該要求を転送するステップとをさらに含むことを特徴とする請求項1に記載のオブジェクト作成方法。
  4. 前記アプリケーション以外の他のアプリケーションにおけるクエリを介して、前記プロセス外コンポーネントのオブジェクトのインタフェースを取得可能であり、プロセス外コンポーネントのオブジェクトのインタフェースを介して、プロセス外コンポーネントのオブジェクトによって記録されたプロセス内コンポーネントのオブジェクトのインタフェースを取得可能であることを特徴とする請求項1に記載のオブジェクト作成方法。
  5. 取得されたプロセス内コンポーネントのオブジェクトのインタフェースを介して、当該アプリケーション以外の他のアプリケーションにおいてプロセス内コンポーネントのオブジェクトを動作可能であることを特徴とする請求項4に記載のオブジェクト作成方法。
  6. 前記アプリケーションが、Windowsベースのアプリケーションであることを特徴とする請求項1に記載のオブジェクト作成方法。
  7. プロセス内コンポーネントのオブジェクトを作成するシステムであって、
    プロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録することのできるアプリケーション内に、プロセス外コンポーネントを埋め込むプロセス外コンポーネント埋め込み手段と、
    前記アプリケーションを起動するマスタ手段と、
    プロセス外コンポーネントのオブジェクトを作成するために、プロセス内コンポーネントのオブジェクトを作成するためにアプリケーションから発行された、プロセス内コンポーネントの場所を特定するよう求める要求を、前記プロセス外コンポーネントに転送するコンポーネントリダイレクト手段とを備え、
    作成された前記プロセス外コンポーネントのオブジェクトは、プロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録するように構成されることを特徴とするシステム。
  8. 前記プロセス外コンポーネントが、
    前記プロセス内コンポーネントに関する情報を取得し、オブジェクトを作成すべきプロセス内コンポーネントを決定するために、要求を解析するための情報解析手段をさらに備えることを特徴とする請求項7に記載のシステム。
  9. 前記コンポーネントリダイレクト手段が、
    前記アプリケーションから発行された、前記プロセス内コンポーネントの場所を特定するよう求める要求をインターセプトするための要求インターセプト手段と、
    前記プロセス外コンポーネントに関するアドレス情報を取得し、プロセス外コンポーネントの場所を特定して、場所が特定されたプロセス外コンポーネントに当該要求を転送するための場所特定手段とを備えることを特徴とする請求項7に記載のシステム。
JP2011019620A 2010-03-29 2011-02-01 プロセス内コンポーネントのオブジェクト作成方法およびシステム Expired - Fee Related JP5226093B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201010137014.XA CN102207856B (zh) 2010-03-29 2010-03-29 进程内组件对象的创建方法和系统
CN201010137014.X 2010-03-29

Publications (2)

Publication Number Publication Date
JP2011210234A true JP2011210234A (ja) 2011-10-20
JP5226093B2 JP5226093B2 (ja) 2013-07-03

Family

ID=44696706

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011019620A Expired - Fee Related JP5226093B2 (ja) 2010-03-29 2011-02-01 プロセス内コンポーネントのオブジェクト作成方法およびシステム

Country Status (2)

Country Link
JP (1) JP5226093B2 (ja)
CN (1) CN102207856B (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103186386B (zh) * 2011-12-27 2017-10-27 腾讯科技(深圳)有限公司 应用加载方法及系统
CN103294561B (zh) * 2012-03-05 2016-04-13 腾讯科技(深圳)有限公司 进程运行方法及装置
CN105446770A (zh) * 2015-11-13 2016-03-30 邦彦技术股份有限公司 一种可节省存储芯片的集中存储方法及多功能模块系统
CN108470125B (zh) * 2018-02-09 2021-01-19 北京明朝万达科技股份有限公司 一种基于虚拟桌面的ole重定向方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1744056A (zh) * 2004-09-04 2006-03-08 华为技术有限公司 一种应用程序的自动测试方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030050983A1 (en) * 2001-09-12 2003-03-13 Johnson Paul A. External event processor system and method
CN100365583C (zh) * 2006-08-03 2008-01-30 华为技术有限公司 组件的实现方法以及系统
US8239832B2 (en) * 2007-05-25 2012-08-07 Microsoft Corporation In-process debugging using external debugging infrastructure

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1744056A (zh) * 2004-09-04 2006-03-08 华为技术有限公司 一种应用程序的自动测试方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CSND200200268002; 小村 良子: 'COM+への基礎知識' Windows 2000 プログラミング 緊急対策ガイド 第6巻 第4号 第6巻, 20000401, 第49-58頁, 株式会社翔泳社 *
CSND200500242002; 伴在 賢次郎: 'DLLの初歩の初歩' Delphiマガジン 第8号 第8号, 20000101, 第38-49頁, PSネットワーク *
JPN6012058053; 伴在 賢次郎: 'DLLの初歩の初歩' Delphiマガジン 第8号 第8号, 20000101, 第38-49頁, PSネットワーク *
JPN6012058055; 小村 良子: 'COM+への基礎知識' Windows 2000 プログラミング 緊急対策ガイド 第6巻 第4号 第6巻, 20000401, 第49-58頁, 株式会社翔泳社 *

Also Published As

Publication number Publication date
CN102207856B (zh) 2014-08-27
JP5226093B2 (ja) 2013-07-03
CN102207856A (zh) 2011-10-05

Similar Documents

Publication Publication Date Title
CN110297689B (zh) 智能合约执行方法、装置、设备及介质
US9703777B2 (en) Translating textual information of an application
US8141056B2 (en) Just-in-time dynamic instrumentation
US7917901B2 (en) Maintainable dynamic instrumentation technique for changing versions of software
WO2016192556A1 (zh) 接口调用方法、装置及终端
US9235495B2 (en) Method and system that provides an interactive debugging session
US9720654B2 (en) Modifying a middleware
US20100218106A1 (en) Automatically Selecting Internet Browser and Providing Web Page Service
JP2019053729A (ja) スマートコントラクトのテスト方法及びテスト装置
US10474479B1 (en) Preventing framework conflicts for multi-OS applications
US8839215B2 (en) String cache file for optimizing memory usage in a java virtual machine
WO2014048240A1 (zh) 使用浏览器中内置ActiveX插件的方法和客户端
US10261844B2 (en) Generic language application programming interface interpreter
CN106648569B (zh) 目标序列化实现方法和装置
US20090178028A1 (en) Method and system for invoking just-in-time debugger
JP5226093B2 (ja) プロセス内コンポーネントのオブジェクト作成方法およびシステム
US11288171B2 (en) Data verification apparatus, method and medium for determining whether referring parts of source code are executed
US8291401B2 (en) Processing symbols associated with shared assemblies
CN112860507B (zh) 分布式链路跟踪系统采样率的控制方法和装置
CN113792299B (zh) 一种基于ftrace技术的Linux系统保护方法
US20160371083A1 (en) Lock Free Streaming of Executable Code Data
CN111314493A (zh) 异构云存储系统的数据处理方法及其可读介质和系统
JP3022837B2 (ja) サービス機能提供装置および提供方法
JP5541437B2 (ja) 並列処理システム制御装置、その方法及びそのプログラム
CN113296834A (zh) 一种基于逆向工程的安卓闭源服务类型信息提取方法

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111207

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121105

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130204

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: 20130225

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130313

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160322

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees