(57)【要約】【課題】  プロセス内コンポーネントのオブジェクトの作成方法を提供する。【解決手段】  このオブジェクト作成方法は、プロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録することのできる、プロセス外コンポーネントをアプリケーションに埋め込むステップと、アプリケーションを起動するステップと、プロセス外コンポーネントのオブジェクトを作成するために、プロセス内コンポーネントのオブジェクトを作成するためにアプリケーションから発行された、プロセス内コンポーネントの場所を特定するよう求める要求を、プロセス外コンポーネントに転送するステップと、プロセス外コンポーネントのオブジェクトによってプロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録するステップを含む。【選択図】  図５
2011210234.tif 000002
【特許請求の範囲】
【請求項１】
プロセス内コンポーネントのオブジェクト作成方法であって、
前記プロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録することのできるプロセス外コンポーネントを、アプリケーションに埋め込むステップと、
前記アプリケーションを起動するステップと、
前記プロセス外コンポーネントのオブジェクトを作成するために、プロセス内コンポーネントのオブジェクトを作成するためにアプリケーションから発行された、プロセス内コンポーネントの場所を特定するよう求める要求を、プロセス外コンポーネントに転送するステップと、
前記プロセス外コンポーネントのオブジェクトによって前記プロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録するステップと
を有することを特徴とするオブジェクト作成方法。
【請求項２】
前記プロセス内コンポーネントに関する情報を取得し、オブジェクトを作成すべきプロセス内コンポーネントを決定するために、要求を受信したプロセス外コンポーネントにおいて当該要求を解析するステップをさらに有することを特徴とする請求項１に記載のオブジェクト作成方法。
【請求項３】
要求をプロセス外コンポーネントへ転送するステップが、
前記アプリケーションから発行された、プロセス内コンポーネントの場所を特定するための要求をインターセプトするステップと、
プロセス外コンポーネントに関するアドレス情報を取得するステップと、
プロセス外コンポーネントの場所を特定するステップと、
場所が特定されたプロセス外コンポーネントへ当該要求を転送するステップとをさらに含むことを特徴とする請求項１に記載のオブジェクト作成方法。
【請求項４】
前記アプリケーション以外の他のアプリケーションにおけるクエリを介して、前記プロセス外コンポーネントのオブジェクトのインタフェースを取得可能であり、プロセス外コンポーネントのオブジェクトのインタフェースを介して、プロセス外コンポーネントのオブジェクトによって記録されたプロセス内コンポーネントのオブジェクトのインタフェースを取得可能であることを特徴とする請求項１に記載のオブジェクト作成方法。
【請求項５】
取得されたプロセス内コンポーネントのオブジェクトのインタフェースを介して、当該アプリケーション以外の他のアプリケーションにおいてプロセス内コンポーネントのオブジェクトを動作可能であることを特徴とする請求項４に記載のオブジェクト作成方法。
【請求項６】
前記アプリケーションが、Ｗｉｎｄｏｗｓベースのアプリケーションであることを特徴とする請求項１に記載のオブジェクト作成方法。
【請求項７】
プロセス内コンポーネントのオブジェクトを作成するシステムであって、
プロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録することのできるアプリケーション内に、プロセス外コンポーネントを埋め込むプロセス外コンポーネント埋め込み手段と、
前記アプリケーションを起動するマスタ手段と、
プロセス外コンポーネントのオブジェクトを作成するために、プロセス内コンポーネントのオブジェクトを作成するためにアプリケーションから発行された、プロセス内コンポーネントの場所を特定するよう求める要求を、前記プロセス外コンポーネントに転送するコンポーネントリダイレクト手段とを備え、
作成された前記プロセス外コンポーネントのオブジェクトは、プロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録するように構成されることを特徴とするシステム。
【請求項８】
前記プロセス外コンポーネントが、
前記プロセス内コンポーネントに関する情報を取得し、オブジェクトを作成すべきプロセス内コンポーネントを決定するために、要求を解析するための情報解析手段をさらに備えることを特徴とする請求項７に記載のシステム。
【請求項９】
前記コンポーネントリダイレクト手段が、
前記アプリケーションから発行された、前記プロセス内コンポーネントの場所を特定するよう求める要求をインターセプトするための要求インターセプト手段と、
前記プロセス外コンポーネントに関するアドレス情報を取得し、プロセス外コンポーネントの場所を特定して、場所が特定されたプロセス外コンポーネントに当該要求を転送するための場所特定手段とを備えることを特徴とする請求項７に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータプログラムの符号化とテストの分野に関し、特に、プロセス内コンポーネントのオブジェクトを作成する方法およびシステムに関する。
【背景技術】
【０００２】
ソフトウェアに対する要求の高度化に呼応して、ソフトウェアの機能性、操作性、インテリジェント化が急激な勢いで進展している。また、これに伴うソフトウェアの複雑化と大規模化を背景に、開発における難度はますます高くなり、開発期間は長期化し、必要とされる要員数も増加している。ソフトウェア再使用技法は、反復作業を削減し、ソフトウェア開発におけるミス発生の確率を低減させるために生まれた技術だが、登場以来数十年を経た今、ますます広く普及してきている。
【０００３】
構造設計とオブジェクト指向技法をベースに開発されたコンポーネント技法は、１９９０年代に登場した新技法である。これは、オブジェクト指向技法とその拡張の後継技術として生まれた、ソフトウェア開発のための標準プロセスアーキテクチャである。
【０００４】
コンポーネントの標準化への取り組みが始まって以来、多数の企業や機関によっていくつかのモデルが提案された。よく知られたコンポーネントモデルとしては、共通オブジェクトリクエストブローカアーキテクチャ（ＣＯＲＢＡ）、コンポーネントオブジェクトモデル（ＣＯＭ）、ＥＪＢコンポーネント、Ｎｅｔコンポーネント等が挙げられる。
【０００５】
以下では、ＭｉｃｒｏｓｏｆｔのＣＯＭを例にとって、「コンポーネント」について詳細に説明する。
【０００６】
ＣＯＭ技法は、自動化技法（ＯＬＥ自動化）やＡｃｔｉｖｅＸコントロール等の多数のデスクトップアプリケーションに幅広く適用されている。コンポーネントは、クライアントアプリケーションとＣＯＭ／ＤＣＯＭ内のコンポーネントとの間で行われるインタラクションに基づいて、「プロセス内コンポーネント」と「プロセス外コンポーネント」という２つのカテゴリに分類することができる。「プロセス内コンポーネント」はクライアントアプリケーションとコンポーネントが同じプロセスアドレス空間に常駐することを意味し、「プロセス外コンポーネント」はクライアントアプリケーションとコンポーネントが異なるプロセスアドレスス空間に常駐することを意味する。プロセス内コンポーネントの実装は、コンポーネントを動的リンクライブラリ（ＤＬＬ）とみなすことによって実装される。この場合、クライアントアプリケーションはまずコンポーネントを自己のプロセスアドレス空間にロードし、その後コンポーネントの機能を呼び出す。コンポーネントにおけるこれら２つのカテゴリは、クライアントアプリケーションとコンポーネントとの間で行われるインタラクションが個々に固有であるという点において、まったく異なっている。しかし、プログラミングの観点に立つと、プロセス内コンポーネントとプロセス外コンポーネントが同じ機能を有する場合には、クライアントアプリケーションは（その修正を必要とせずに）これらのコンポーネントを同じように使用できなければならない。
【０００７】
コンポーネントを取得して動作させることには、２つの重要な効果がある。１つ目の効果は、新たに開発されたコンポーネントを取得および動作させることにより、そのコンポーネントに対して自動テストを実行できることである。そして２つ目の効果は、アプリケーションの移行時に、すでに開発されているコンポーネントを取得および動作させることにより、そのコンポーネントを再使用できることである。
【０００８】
プロセス内コンポーネントの場合、コンポーネントオブジェクトのインタフェースを別のプロセスで取得できれば、オブジェクトを動作させ、オブジェクトからデータを取得する操作が非常に便利になる。
【０００９】
しかし、これまでの手法では、別のプロセスがプロセス内コンポーネントオブジェクトのインタフェースを取得することは困難である。プロセス内コンポーネントを取得および動作させるために現在使用されている方法には、主に以下の２通りがある。
１）  アプリケーションのメモリの解析。この方法では、プロセス内コンポーネントが開始され、アプリケーションにロードされると、アプリケーションのメモリ内でコンポーネントへのアクセスが可能になる。そして、メモリ内のデータを解析することにより、コンポーネントのデータを取得することができる。この手法は、あるアプリケーションの同じコンポーネントの異なるオブジェクトと、異なるアプリケーションの同じコンポーネントオブジェクトとを解析および処理する必要があるため、きわめて複雑である。
２）  コンポーネントハンドラによるコンポーネントオブジェクトの取得。この方法では、アプリケーション内のコンポーネントハンドラを用いてコンポーネントオブジェクトにアクセスし、コンポーネントオブジェクトの機能または方法をさらに起動することにより、コンポーネントを取得および動作させることができる。この手法は、ターゲットアプリケーションの開発に使用される言語に依存する。例えば、ＶＢで開発されたアプリケーションとＶＣで開発されたアプリケーションでは、コンポーネントオブジェクトを取得するための手法が互いに異なる。
【００１０】
特許文献１では、テストケースにおいて様々なテストステップを実行するために、テストプロキシモジュールがテスト対象アプリケーションに埋め込まれる、アプリケーションテスト方法が開示されている。この方法では、テストプロキシがテストステップに従ってテスト対象アプリケーションのコンポーネントを取得して動作させ、テストを完了する。
【００１１】
図１は、特許文献１による、アプリケーションをテストするためのシステムを構成する各手段を示す概略ブロック図である。以下では、当該システムの各手段について説明する。
・テストクライアントマスタモジュール１０１は、テストケースを共有データ記憶手段３００にロードし、テストフローを管理するための、クライアントアプリケーションのマスタモジュールとして構成されている。
・テスト開始手段１０２は、テストプロキシウィンドウ手段２０３を検索し、検索されたテストプロキシウィンドウ手段２０３に、テストケースの識別（ＩＤ）の集合とテスト命令を送信するように構成されている。
・テスト対象アプリケーションマスタモジュール２０１は、プロセス内コンポーネント手段２０２やテストプロキシウィンドウ手段２０３等の他のモジュールおよび手段をロードするための、テスト対象アプリケーションのマスタモジュールとして構成されている。
・プロセス内コンポーネント手段２０２は、テスト対象アプリケーションのプロセスにおいてクライアントとして実行され、当該プロセスの一部として動作するための、テスト対象アプリケーションのプロセス内コンポーネント（例：．ｄｌｌや．ｏｃｘファイル）として構成されている。
・埋め込みテストプロキシウィンドウ手段２０３は、テストプロキシモジュールとして構成されている。埋め込みテストプロキシウィンドウ手段２０３は、ユーザに表示されない（不可視の）手段であり、テスト対象アプリケーションと共に開始される。埋め込みテストプロキシウィンドウ手段２０３は、起動テストのためのテスト命令をテスト開始手段１０２から受信し、テストクライアントマスタモジュール１０１によってロードされたテストケースを共有データ記憶手段から読み取り、テストケース内のテストステップに従って、テスト結果を取得するのに望ましい方法でプロセス内コンポーネント手段２０２を動作させ、テスト結果を共有データ記憶手段に書き込む。
−共有データ記憶手段３００は、テストケースとテスト結果を記憶するために構成されている。テスト対象アプリケーションに埋め込まれたテストプロキシウィンドウ手段２０３と、テストクライアントマスタモジュール１０１は、共有データ記憶手段に対して読み取りと書き込みの操作を実行することができる。
【００１２】
図２は、特許文献１による、アプリケーションをテストするための方法を示すフローチャートである。
【００１３】
当該テスト方法が開始すると、テストクライアントマスタモジュール１０１がテストケースを共有データ記憶手段３００（ステップＳ２０１）にロードする。その後、テストクライアントマスタモジュール１０１がテスト開始手段１０２をトリガしてテストプロキシウィンドウ手段２０３を検索させ、テストプロキシウィンドウ手段２０３にテストケースＩＤの集合とテスト命令とを送信する（ステップＳ２０２）。テストプロキシウィンドウ手段２０３は、テスト命令を受信後直ちに、テストを開始する。テストプロキシウィンドウ手段２０３は、受信したテストケースＩＤの集合に基づいて、共有データ記憶手段３００からテストケースを読み出し、個々のテストケースを順次処理する（ステップＳ２０３）。テストプロキシウィンドウ手段２０３は、テストケース内のテストステップに従ってプロセス内コンポーネント手段２０２を動作させ、プロセス内コンポーネント手段のデータを取得する（ステップＳ２０４）。その後、テストプロキシウィンドウ手段２０３はテスト結果を決定し、それを共有データ記憶手段３００に書き込む（ステップＳ２０５）。これにより、テストクライアントマスタモジュール１０１は共有データ記憶手段３００からテスト結果を取得できる（ステップＳ２０６）。
【００１４】
図３は、特許文献１による、アプリケーションをテストする方法の具体例を示す概略図である。
【００１５】
図３に示す具体例では、Ｍｉｃｒｏｓｏｆｔ  ＯｆｆｉｃｅのスプレッドシートＡｃｔｉｖｅＸを、テスト対象アプリケーションのプロセス内コンポーネントとする。図３では、ブロック間をつなぐ接続線に付けられた番号は、当該例示的方法の実行順序を示す。
【００１６】
この解決法には短所がある。それは、テストクライアントはプロセス内コンポーネントオブジェクトのインタフェースを取得できないということである。この方法においては、データ交換は共有データ記憶装置によってのみ可能なので、プロセス内コンポーネントの取得と動作が可能な範囲はきわめて限定的である。換言すれば、テストクライアントにおいて直接、プロセス内コンポーネントオブジェクトを動作させデータを取得することができないのである。
【００１７】
そのため、テストクライアントにおいて直接、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを取得し、それによりプロセス内コンポーネントのオブジェクトを動作させ、当該コンポーネントのデータを取得することが可能な、プロセス内コンポーネントのオブジェクト作成方法が必要とされている。
【先行技術文献】
【特許文献】
【００１８】
【特許文献１】中国特許出願Ｎｏ．２００４１００７９０４２．５
【発明の概要】
【発明が解決しようとする課題】
【００１９】
関連技術の上記の短所に対処するため、プロセス内コンポーネントのオブジェクト作成方法が提供される。プロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録することのできる、プロセス外コンポーネントがターゲットアプリケーションに埋め込まれる。ターゲットアプリケーションが、プロセス内コンポーネントのオブジェクトを作成するために、プロセス内コンポーネントの場所の特定を求める要求を発行すると、その要求はプロセス外コンポーネントに転送され、プロセス外コンポーネントのオブジェクトが作成される。プロセス外コンポーネントのオブジェクトはプロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録する。これにより、ターゲットアプリケーション以外の他のアプリケーションにおいても、作成されたプロセス外コンポーネントのオブジェクトのインタフェースをクエリして、それに記録されたプロセス内コンポーネントのオブジェクトのインタフェースを取得できるので、プロセス内コンポーネントのオブジェクトを直接動作させることが可能になる。
【００２０】
本発明の第１の態様によれば、プロセス内コンポーネントのオブジェクト作成方法であって、プロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録することのできるプロセス外コンポーネントを、アプリケーションに埋め込むステップと、アプリケーションを起動するステップと、プロセス外コンポーネントのオブジェクトを作成するために、プロセス内コンポーネントのオブジェクトを作成するためにアプリケーションから発行された、プロセス内コンポーネントの場所を特定するよう求める要求を、プロセス外コンポーネントに転送するステップと、プロセス外コンポーネントのオブジェクトによってプロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録するステップとを含む。
【００２１】
好ましくは、プロセス内コンポーネントに関する情報を取得し、オブジェクトを作成すべきプロセス内コンポーネントを決定するために、要求を受信したプロセス外コンポーネントにおいて当該要求を解析するステップをさらに含む。
【００２２】
好ましくは、要求をプロセス外コンポーネントへ転送するステップが、アプリケーションから発行された、プロセス内コンポーネントの場所を特定するための要求をインターセプトするステップと、プロセス外コンポーネントに関するアドレス情報を取得するステップと、プロセス外コンポーネントの場所を特定するステップと、場所が特定されたプロセス外コンポーネントへ当該要求を転送するステップとをさらに含む。
【００２３】
好ましくは、アプリケーション以外の他のアプリケーションにおけるクエリを介して、プロセス外コンポーネントのオブジェクトのインタフェースを取得可能であり、プロセス外コンポーネントのオブジェクトのインタフェースを介して、プロセス外コンポーネントのオブジェクトによって記録されたプロセス内コンポーネントのオブジェクトのインタフェースを取得可能である。
【００２４】
好ましくは、取得されたプロセス内コンポーネントのオブジェクトのインタフェースを介して、当該アプリケーション以外の他のアプリケーションにおいてプロセス内コンポーネントのオブジェクトを動作可能である。
【００２５】
好ましくは、アプリケーションが、Ｗｉｎｄｏｗｓベースのアプリケーションである。
【００２６】
本発明の第２の態様によれば、プロセス内コンポーネントのオブジェクトを作成するシステムであって、プロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録することのできるアプリケーション内に、プロセス外コンポーネントを埋め込むプロセス外コンポーネント埋め込み手段と、アプリケーションを起動するマスタ手段と、プロセス外コンポーネントのオブジェクトを作成するために、プロセス内コンポーネントのオブジェクトを作成するためにアプリケーションから発行された、プロセス内コンポーネントの場所を特定するよう求める要求を、プロセス外コンポーネントに転送するコンポーネントリダイレクト手段とを備え、作成されたプロセス外コンポーネントのオブジェクトが、プロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録する。
【００２７】
好ましくは、当該プロセス外コンポーネントが、プロセス内コンポーネントに関する情報を取得し、オブジェクトを作成すべきプロセス内コンポーネントを決定するために、要求を解析する情報解析手段をさらに含む。
【００２８】
好ましくは、コンポーネントリダイレクト手段が、アプリケーションから発行された、プロセス内コンポーネントの場所を特定するよう求める要求をインターセプトするための要求インターセプト手段と、プロセス外コンポーネントに関するアドレス情報を取得し、プロセス外コンポーネントの場所を特定して、場所が特定されたプロセス外コンポーネントに当該要求を転送する場所特定手段とを含む。
【発明の効果】
【００２９】
最も近似した関連技術と、すなわち特許文献１と比較して、本発明は少なくとも以下の効果において勝る。
プロセス外コンポーネントを使用してプロセス内コンポーネントオブジェクトのインタフェースを取得できるため、プロセス内コンポーネントオブジェクトを直接動作させることができる。
プロセス内コンポーネントのオブジェクトがプロセス外コンポーネントによって作成され、単一のプロセス内コンポーネントの異なるオブジェクトを個別に解析および処理する必要がないため、プログラミングの複雑性が軽減される。
【図面の簡単な説明】
【００３０】
上記およびその他の目的、特徴、並びに利点は、図面を参照しながら本発明の非限定的な実施例について詳述した以下の説明を読むことにより、さらに明らかになるであろう。
【００３１】
【図１】特許文献１による、アプリケーションをテストするためのシステムを構成する各手段を示す概略ブロック図である。
【図２】特許文献１による、アプリケーションをテストするための方法を示すフローチャートである。
【図３】特許文献１による、アプリケーションをテストするための方法の具体例を示す概略図である。
【図４】本発明の一実施例による、プロセス内コンポーネントのオブジェクトを作成するためのシステムを示す概略ブロック図である。
【図５】本発明の一実施例による、プロセス内コンポーネントのオブジェクトを作成するための方法を示すフローチャートである。
【図６】本発明の一実施例による、プロセス内コンポーネントのオブジェクトを作成するための方法の具体例を示す概略図である。
【００３２】
上記の図では、同一もしくは対応する手段については、その相関関係を示すために同一の参照記号を使用して示している。太い実線で囲んだ手段は、本発明の概念を反映する主要な手段である。
【発明を実施するための形態】
【００３３】
次に、図面を参照して本発明について説明する。以下の説明に含まれるいくつかの特定の実施例は本発明の具体例を説明することを唯一の目的として示したものであり、本発明の範囲を限定するものと解釈してはならない。なお、本発明の本質を曖昧にするのを避けるため、以下の説明では周知の構造や構成は省略している。
【００３４】
図４は、本発明の一実施例による、プロセス内コンポーネントのオブジェクトを作成するためのシステムを示す概略ブロック図である。以下では、当該システムの各手段について説明する。
・テストクライアントマスタモジュール１０１は、テストフローを管理するための、クライアントアプリケーションのマスタモジュールとして構成されている。
・プロセス外コンポーネントオブジェクトインタフェースクエリ手段１０３は、プロセス外コンポーネントオブジェクトのインタフェースをクエリするように構成されている。
・プロセス内コンポーネントオブジェクトインタフェース取得手段１０４は、プロセス外コンポーネントオブジェクトインタフェースクエリ手段１０３のクエリに従い、プロセス外コンポーネントオブジェクトのインタフェースを介して、プロセス外コンポーネントによって提供されるサービスにアクセスするように構成されている。
・プロセス内コンポーネント動作／データ取得手段１０５は、プロセス内コンポーネントを自由にかつ便利な方法で動作させ、プロセス内コンポーネントオブジェクトインタフェース取得手段１０４によって取得されたプロセス内コンポーネントオブジェクトのインタフェースを介して、プロセス内コンポーネントのデータを取得するための、サービス論理処理手段として構成されている。
・  テスト対象アプリケーションマスタモジュール２０１は、テスト対象アプリケーションを起動し、コンポーネントリダイレクト手段２０４やプロセス外コンポーネント手段２０５などの他のモジュールおよび手段をロードするための、テスト対象アプリケーションのマスタモジュールとして構成されている。
・  プロセス内コンポーネント手段２０２は、テスト対象アプリケーションのプロセス内でクライアントとして実行され、当該プロセスの一部として動作するための、テスト対象アプリケーションのプロセス内コンポーネント手段（例：．ｄｌｌまたは．ｏｃｘファイル）として構成されている。
・  コンポーネントリダイレクト手段２０４は、プロセス内コンポーネントのオブジェクトを作成するために、テスト対象アプリケーションから発行された、プロセス内コンポーネント手段２０２の場所を特定するよう求める要求を、プロセス外コンポーネント手段２０５へ転送するように構成されている。
・  プロセス外コンポーネント手段２０５は、プロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録する機能を提供するように構成されている。プロセス外コンポーネント手段２０５はさらに、記録されたプロセス内コンポーネントのオブジェクトのインタフェースを取得するサービスを外部に提供するように構成されている。これにより、他のアプリケーションは、プロセス外コンポーネント手段２０５のインタフェースをクエリすることによりこれにアクセスし、当該手段によって提供されるサービスを使用して、記録されたプロセス内コンポーネントのオブジェクトのインタフェースを取得することができる。
・  プロセス外コンポーネント埋め込み手段２０６は、プロセス外コンポーネント手段を（テスト対象の）アプリケーションに埋め込むように構成されている。
【００３５】
図４に示すように、コンポーネントリダイレクト手段２０４は要求インターセプト手段２０４１と場所特定手段２０４２とを備えることができる。ここで、要求インターセプト手段２０４１は、テスト対象アプリケーションを監視し、テスト対象アプリケーションから発行された、プロセス内コンポーネントのオブジェクトを作成するためにプロセス内コンポーネント手段２０２の場所を特定するよう求める要求をインターセプトするように構成されている。場所特定手段２０４２は、プロセス外コンポーネント手段２０５のアドレス情報を取得し、プロセス外コンポーネント手段２０５の場所を特定して、場所を特定されたプロセス外コンポーネント手段２０５への要求転送を可能にするように構成されている。
【００３６】
図４に示すように、プロセス外コンポーネント手段２０５は、要求を解析して、プロセス内コンポーネントに関する情報を取得し、オブジェクトを作成すべきプロセス内コンポーネントを決定するための情報解析手段２０５１をさらに備えることができる。
【００３７】
図５は、本発明の一実施例による、プロセス内コンポーネントのオブジェクトを作成するための方法を示すフローチャートである。
【００３８】
図５に示すように、当該方法が開始すると、テスト対象アプリケーションがまず起動される（ステップＳ５０１）。同時に、プロセス外コンポーネント手段２０５へプロセス内コンポーネント手段２０２の場所を特定するよう求める要求を転送するように構成された、コンポーネントリダイレクト手段２０４が開始される（ステップＳ５０２）。プロセス内コンポーネント手段の場所を特定し、プロセス内コンポーネント手段２０２を作成（ロード）するために、テスト対象アプリケーションがオペレーションシステムにプロセス内コンポーネント手段２０２に関する情報をクエリすると、その要求がプロセス外コンポーネント手段２０５に転送される（ステップＳ５０３）。
【００３９】
図４に示すように、コンポーネントリダイレクト手段２０４は要求インターセプト手段２０４１と場所特定手段２０４２とを含んで構成されている。テスト対象アプリケーションが、プロセス内コンポーネント手段２０２の場所を特定するよう求める要求をオペレーションシステムへ送信すると、要求インターセプト手段２０４１はその要求をインターセプトすることができる。場所特定手段２０４２は、要求されたプロセス内コンポーネントに関連付けられたプロセス外コンポーネント手段に関するアドレス情報を取得し、当該プロセス外コンポーネント手段の場所を特定することができる。これにより、コンポーネントリダイレクト手段は、場所を特定されたプロセス外コンポーネント手段へ当該要求を転送できるようになる。
【００４０】
プロセス外コンポーネント手段２０５は、要求に応じて、プロセス外コンポーネントのオブジェクトを作成する。その後、作成されたプロセス外コンポーネントのオブジェクトは、テスト対象アプリケーションによって要求されたプロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス外コンポーネントのオブジェクト内に、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録する（ステップＳ５０４）。これにより、テスト対象アプリケーションの開始手順が完了する（ステップＳ５０５）。
【００４１】
テストクライアントアプリケーションが、プロセス内コンポーネントのオブジェクトを動作させるためにデータを取得すると、当該アプリケーションのプロセス外コンポーネントオブジェクトインタフェースクエリ手段１０３はプロセス外コンポーネントオブジェクトのインタフェースをクエリすることができる。その後、プロセス内コンポーネントオブジェクトインタフェース取得手段１０４が、クエリされたインタフェースを介してプロセス外コンポーネントオブジェクトにアクセスし、プロセス外コンポーネントオブジェクトによって記録されたプロセス内コンポーネントオブジェクトのインタフェースを取得する（ステップＳ５０６）。これにより、テストクライアントアプリケーションのプロセス内コンポーネント動作／データ取得手段１０５は、プロセス内コンポーネントオブジェクトを便利な方法で直接動作させ、プロセス内コンポーネントオブジェクトインタフェース取得手段１０４によって取得されたプロセス内コンポーネントオブジェクトのインタフェースを介して、プロセス内コンポーネントオブジェクトのデータを取得することができる（ステップＳ５０７）。
【００４２】
図６は、本発明の一実施例による、プロセス内コンポーネントのオブジェクトを作成するための方法の具体例を示す概略図である。図６の具体例において動作されるプロセス内コンポーネントは、図３の具体例で示したのと同じＭｉｃｒｏｓｏｆｔ  ＯｆｆｉｃｅのスプレッドシートＡｃｔｉｖｅＸとする。
【００４３】
図６では、ブロック間をつなぐ接続線に付けられた番号は、当該例示的方法の実行順序を示す。
【００４４】
図６の具体例においては、テスト対象アプリケーションとコンポーネントリダイレクト手段がまず開始される。テスト対象アプリケーションが、プロセス内コンポーネントのオブジェクトの作成を求める要求をコンポーネントリダイレクト手段に送ると（ステップＳ１）、コンポーネントリダイレクト手段はその要求をプロセス外コンポーネントにリダイレクトする（ステップＳ２）。
【００４５】
別の具体例においては、レジストリテーブルを修正することができる。ここでは、レジストリテーブルに登録されたプロセス内コンポーネントのＤＬＬが、プロセス外コンポーネントをポイントするように修正される。テスト対象アプリケーションがプロセス内コンポーネントを作成しようとするとき、当該アプリケーションはレジストリテーブルにアクセスしてプロセス内コンポーネントのＤＬＬを取得する必要がある。この具体例では、テスト対象アプリケーションの要求は、プロセス外コンポーネントに転送される。したがって、テスト対象アプリケーションがオブジェクトの作成を求める要求をプロセス内コンポーネント手段に対して行うと、その要求はプロセス外コンポーネント手段に転送される。リダイレクトの機能はこのようにして実現される。
【００４６】
さらに他の具体例においては、要求インターセプト手段をテスト対象アプリケーション内に埋め込むことができる。図４に示すように、要求インターセプト手段はコンポーネントリダイレクト手段に内蔵される。この具体例では、要求インターセプト手段がオペレーションシステム上でテスト対象アプリケーションによって実行される処理を監視し、テスト対象アプリケーションからオペレーションシステムに対して発行された、プロセス内コンポーネントの場所を特定するよう求めるクエリ要求を検出すると、その要求をインターセプトし、コンポーネントリダイレクト手段がそれをプロセス外コンポーネントに転送する。
【００４７】
図６に示す具体例においては、プロセス外コンポーネントは、プロセス内コンポーネントであるスプレッドシートＡｃｔｉｖｅＸをカプセル化して有するＣＯＭである。この場合に作成されるのは、ＣＯＭオブジェクトである。ＣＯＭオブジェクトは、プロセス内コンポーネントであるスプレッドシートＡｃｔｉｖｅＸのオブジェクトを作成し、それをテスト対象アプリケーションに返す（ステップＳ３）。テスト対象アプリケーションが別のプロセス内コンポーネントを作成／ロードする必要がある場合は、ステップＳ１〜Ｓ３を繰り返せばよい。プロセス内コンポーネント（および対応するプロセス外コンポーネント）のすべてのオブジェクトが作成されると、テスト対象アプリケーションの開始手順が完了する。
【００４８】
その後、テストクライアントが、Ｗｉｎｄｏｗｓ  ＡＰＩである“ＣｏＣｒｅａｔｅＩｎｓｔａｎｃｅ”を使用して、ＣＯＭオブジェクトのインタフェースをクエリする（ステップＳ４）。その後、ＣＯＭオブジェクトにアクセスすることにより、スプレッドシートＡｃｔｉｖｅＸのオブジェクトのインタフェースを取得することができる（ステップＳ５）。そして、取得されたスプレッドシートＡｃｔｉｖｅＸオブジェクトのインタフェースを介して、スプレッドシートＡｃｔｉｖｅＸオブジェクトを動作させ、そのデータを取得することが可能になる（ステップＳ６）。
【００４９】
本具体例においては、スプレッドシートＡｃｔｉｖｅＸオブジェクトの動作とデータの取得は、以下のように行われる。
ｓｐｒｅａｄｓｈｅｅｔ．ＳｅｔＣｅｌｌＤａｔａ（１，１，２０）；
ｓｐｒｅａｄｓｈｅｅｔ．ＳｅｔＣｅｌｌＤａｔａ（１，２，３０）；
ｓｐｒｅａｄｓｈｅｅｔ．ＳｅｔＣｅｌｌＤａｔａ（１，３，“＝（Ａ１＋Ｂ１）”）；
ｓｐｒｅａｄｓｈｅｅｔ．ＳｈｏｗＡｂｏｕｔ（）．
【００５０】
図６の具体例を見れば、本発明の実施例によるプロセス内コンポーネントのオブジェクトの作成方法を用いることにより、プロセス内コンポーネントのオブジェクトの作成を求める要求をプロセス外コンポーネントにリダイレクトできることが分かる。プロセス外コンポーネントは、プロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントを記録する機能を提供することができる。そして、テストクライアントは、プロセス外コンポーネントのオブジェクトのサービスを呼び出すことにより、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを取得することができる。そのため、テスト対象アプリケーション以外のアプリケーションにおいて、プロセス内コンポーネントを容易かつ便利な方法で動作させることが可能となる。これにより、自動テストケースの記述を効率化することができる。
【００５１】
図６の具体例においては、プロセス内コンポーネントはプロセス外コンポーネント内にカプセル化される。そのため、プロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを外部に提供するためには、プロセス内コンポーネントの各々について、対応するプロセス外コンポーネントをテスト対象アプリケーションに埋め込む必要がある。これにより、同じプロセス内コンポーネントの異なるオブジェクトを別々に解析および処理する必要がなくなるため、テストプログラムの記述が効率化される。
【００５２】
上記では、図６の具体例を説明するためＷｉｎｄｏｗｓベースのアプリケーションを例にとったが、本発明は他のアプリケーションにも適用できることは、当該技術に精通する当業者には理解されるであろう。
【００５３】
他の具体例においては、すべてのプロセス内コンポーネントに共通するプロセス外コンポーネントを、テスト対象アプリケーションに埋め込むことができる。この場合、要求が共通のプロセス外コンポーネントにリダイレクトされると、プロセス外コンポーネントは要求を解析してプロセス内コンポーネントに関する情報を取得し、オブジェクトを作成すべきプロセス内コンポーネントを決定する。その後、プロセス外コンポーネントは決定されたプロセス内コンポーネントのオブジェクトを作成し、作成されたプロセス内コンポーネントのオブジェクトのインタフェースを記録する。このとき、動作させるプロセス内コンポーネント毎にプロセス外コンポーネントを埋め込む必要はない。そのため、テストプログラムの記述はさらに効率化される。
【００５４】
本明細書で開示される本発明の実施例のその他の実装は、上記で概説し以下に詳述する方法の実施例のステップおよび動作を実行するソフトウェアプログラムを備える。具体的には、１つの実施例は、コンピュータプログラムロジックが符号化されており、計算装置上で実行されると上記のスキームを提供するための関連の動作を提供する、コンピュータ読み取り可能な媒体を備えるコンピュータプログラム製品である。当該コンピュータプログラムロジックは、計算システムの少なくとも１つのプロセッサ上で実行されると、当該プロセッサを介して本発明の実施例による動作（方法）が実行される。本発明のこうした実装は、典型的には、光媒体（例：ＣＤ−ＲＯＭ）、フロッピーディスクもしくはハードディスクなどのコンピュータ読み取り可能な媒体上に設定または符号化されたソフトウェア、コード、またはその他のデータ構造体、１つ以上のＲＯＭ、ＲＡＭ、ＰＲＯＭチップ上のファームウェアもしくはマイクロコード、ASIC（Application Specific Integrated Circuit）や単一もしくは複数モジュール上にダウンロード可能なソフトウェアイメージもしくは共有データベースとして提供される。ソフトウェア、ファームウェア等の実装は、計算装置上にインストールすることにより、当該計算装置内の１つ以上のプロセッサを介して、本発明の実施例による技法を実行することができる。本発明によるシステムは、一連のデータ通信装置上や他のエンティティ内の計算装置上で動作するソフトウェアプロセスに関連して提供することも可能である。さらに、本発明によるシステムは、複数のデータ通信装置上で稼働する複数のソフトウェアプロセスや、一連の専用ミニコンピュータまたはシングルのコンピュータ上で稼働するすべてのソフトウェアプロセスに分散することもできる。
【００５５】
本発明の実施例は、厳密には、ソフトウェアプログラム、ソフトウェアおよびハードウェア、独立したソフトウェア、または独立した回路として実装できることは理解されるであろう。
【００５６】
上記の説明は本発明の好適な実施例のみを示したものであり、いかなる形であれ本発明を限定することを意図するものではない。したがって、いかなる変更、置換、改良も本発明の精神および原理から逸脱することなく行うことができ、そのすべては本発明の範囲に内包される。
【符号の説明】
【００５７】
２０１：テスト対象アプリケーションマスタモジュール
２０２：プロセス内コンポーネント手段
２０３：テストプロキシウィンドウ
１０１：テストクライアントマスタモジュール
１０２：テスト開始手段
３００：共有データ記憶手段
２０４：コンポーネントリダイレクト手段
２０４１：要求インターセプト手段
２０４２：場所特定手段
２０６：プロセス外コンポーネント埋め込み手段
２０５：プロセス外コンポーネント手段
２０５１：情報解析手段
１０３：プロセス外コンポーネントオブジェクトインタフェースクエリ手段
１０４：プロセス内コンポーネントオブジェクトインタフェース取得手段
１０５：プロセス内コンポーネント動作／データ取得手段
【図１】
2011210234.tif 000003
【図２】
2011210234.tif 000004
【図３】
2011210234.tif 000005
【図４】
2011210234.tif 000006
【図５】
2011210234.tif 000007
【図６】
2011210234.tif 000008
【外国語明細書】
2011210234000001.pdf