(57)【要約】リアルタイム複製を使用してソフトウェアをテストする方法及びシステムである。少なくともいくつかの例示的な実施形態は、第１のコンピュータシステムで実行される第１のソフトウェアプログラムと（試験者によって）相互作用するステップ（この相互作用によって第１のソフトウェアプログラムがある動作を実行することになる）と、第１のコンピュータシステムに結合された第２のコンピュータシステムで実行される第２のソフトウェアプログラムでこの動作を複製するステップ（第２のコンピュータシステムにおけるこの複製するステップは該相互作用するステップとリアルタイムで行われ、かつ、該複製するステップは試験者なしで行われる）と、第１のコンピュータシステムにおける動作の結果を第２のコンピュータシステムにおける動作の結果に対してプログラム的に分析するステップと、第２のコンピュータシステムにおける動作の結果が予期しないものであるときには（第１のコンピュータシステムを介して）試験者に通知するステップを含む方法である。
2011521328.tif 000002
【特許請求の範囲】
【請求項１】
テストをする方法であって、
第１のコンピュータシステムで実行される第１のソフトウェアプログラムとの試験者による相互作用を行うステップであって、該相互作用によって、ある動作が前記第１のソフトウェアプログラムで実行される、ステップと、
前記第１のコンピュータシステムに結合された第２のコンピュータシステムで実行される第２のソフトウェアプログラムで前記動作を複製するステップであって、前記第２のコンピュータシステムにおける複製は、前記相互作用を行うステップとリアルタイムで行われ、前記複製は、試験者が介在することなくなされる、ステップと、
前記第１のコンピュータシステムにおける前記動作の結果を、前記第２のコンピュータシステムにおける動作の結果に対してプログラム的に分析するステップと、
前記第２のコンピュータシステムにおける前記動作の結果が予期しないものであるときには、前記第１のコンピュータシステムを介して、前記試験者に通知するステップ
を含む、方法。
【請求項２】
前記複製するステップが、
前記第１のコンピュータシステムにおける前記第１のソフトウェアプログラムに関して前記動作の表現を記録するステップと、
前記表現をコンピュータネットワークを介して前記第２のコンピュータシステムに送るステップと、
前記動作を前記第２のソフトウェアプログラムに適用するステップ
をさらに含む、請求項１の方法。
【請求項３】
前記相互作用を行うステップが、第１のコンフィギュレーションを規定する前記第１のコンピュータシステムを介して相互作用を行うことをさらに含み、
前記複製するステップが、前記第１のコンフィギュレーションとは異なる第２のコンフィギュレーションを規定する前記第２のコンピュータシステムにおいて前記動作を複製することをさらに含むことからなる、請求項１の方法。
【請求項４】
前記相互作用を行うステップが、第１の言語でテキストを表示し及び受け付けるように構成されたソフトウェアプログラムと相互作用を行うことをさらに含み、
前記複製するステップが、第２の言語でテキストを表示し及び受け付けるように構成された第２のソフトウェアプログラムで複製することをさらに含むことからなる、請求項１の方法。
【請求項５】
前記相互作用を行うステップが、第１のタイムゾーンにおいて実行するように構成されたソフトウェアプログラムと相互作用を行うことをさらに含み、
前記複製するステップが、第２のタイムゾーンにおいて実行するように構成された第２のソフトウェアプログラムで複製することをさらに含むことからなる、請求項１の方法。
【請求項６】
前記相互作用を行うステップが、第１の通貨で貨幣価値を表示するように構成されたソフトウェアプログラムと相互作用を行うことをさらに含み、
前記複製するステップが、第２の通貨で貨幣価値を表示するように構成された第２のソフトウェアプログラムで複製することをさらに含むことからなる、請求項１の方法。
【請求項７】
テスト対象ソフトウェアを実行するように構成された主コンピュータシステムと、
コンピュータネットワークを介して前記主コンピュータシステムに結合された複数の副コンピュータシステム
を備えるシステムであって、
前記副コンピュータシステムは、前記テスト対象ソフトウェアのそれぞれの複製を実行するように構成され、
前記主コンピュータシステムは、人間のオペレータと前記テスト対象ソフトウェアとの間の相互作用の表現を記録し、及び、該相互作用の表現を前記複数の副コンピュータシステムに送るように構成され、
副コンピュータシステムの各々は、前記相互作用の表現を受け取って、前記相互作用の表現を、前記主コンピュータシステムにおける相互作用に対してリアルタイムで、前記テスト対象ソフトウェアのそれぞれの複製に適用するように構成され、
前記システムは、前記オペレータと前記テスト対象ソフトウェアとの相互作用の結果を、前記相互作用の表現を前記テスト対象ソフトウェアのそれぞれの複製に適用したそれぞれの結果に対して分析するように構成され、
前記システムは、前記主コンピュータシステムと任意の副コンピュータシステムとの間における結果が、前記テスト対象ソフトウェアの複製の予期しない動作を示しているときに、前記オペレータに警告するように構成されることからなる、システム。
【請求項８】
さらに、
前記主コンピュータシステムが、第１のコンフィギュレーションを、オペレーティングシステムのタイプ、ブラウザタイプ、及びハードウェア構成からなるグループから少なくとも１つが選択される機能として規定し、
前記副コンピュータシステムの各々が、前記主コンピュータシステムとは異なるコンフィギュレーションを規定することからなる、請求項７のシステム。
【請求項９】
副コンピュータシステムの各々が前記相互作用の表現を適用し、副コンピュータシステムの各々が、前記オペレータが前記テスト対象ソフトウェアと相互作用を行うために用いる言語とは異なる言語で前記相互作用の表現を適用するように構成される、請求項７のシステム。
【請求項１０】
副コンピュータシステムの各々が前記相互作用の表現を適用し、副コンピュータシステムの各々が、前記オペレータが前記テスト対象ソフトウェアと相互作用を行うために用いる通貨とは異なる通貨で前記相互作用の表現を適用するように構成される、請求項７のシステム。
【請求項１１】
プログラムを格納するコンピュータ読み取り可能媒体であって、
前記プログラムは、プロセッサによって実行されたときに、該プロセッサに、
前記プロセッサによって実行されるアプリケーションプログラムと人間との相互作用を観察し、
コンピュータネットワークを介して前記プロセッサに結合された遠隔にあるコンピュータシステムに、前記観察動作とリアルタイムで、前記相互作用の表現を送り、
前記プロセッサによって実行される前記アプリケーションプログラムと前記人間との相互作用の結果を判定し、
前記遠隔にあるコンピュータシステムによって得られた結果と比較したときの前記相互作用の結果が、前記遠隔にあるコンピュータシステムにおける予期しない結果を示している場合に前記人間に警告する
ようにさせることからなる、コンピュータ読み取り可能媒体。
【請求項１２】
前記プロセッサが前記人間に警告する前に、前記プログラムはさらに、前記プロセッサに、
前記遠隔にあるコンピュータシステムで実行される前記アプリケーションプログラムの複製に前記相互作用の表現を適用した結果の指標を、前記遠隔にあるコンピュータシステムから受け取り、
前記遠隔にあるコンピュータシステムから受け取った前記結果の指標と、前記プロセッサによって実行された前記アプリケーションプログラムと前記人間との間の相互作用の結果との間の関係を評価する
ようにさせることからなる、請求項１１のコンピュータ読み取り可能媒体。
【請求項１３】
前記プロセッサが前記人間に警告する前に、前記プログラムはさらに、前記プロセッサに、
前記プロセッサによって実行された前記アプリケーションプログラムと前記人間との間の相互作用の結果の指標を前記遠隔にあるコンピュータシステムに送り、
前記プロセッサによって実行された前記アプリケーションプログラムと前記人間との間の相互作用の結果と、前記相互作用の表現を前記遠隔にあるコンピュータシステムで実行された前記アプリケーションプログラムの複製に適用した結果との間の関係の指標を、前記遠隔にあるコンピュータシステムから受け取る
ようにさせることからなる、請求項１１のコンピュータ読み取り可能媒体。
【請求項１４】
さらに、
前記プロセッサが観察しているときに、前記プログラムは、前記プロセッサに、オペレーティングシステムのタイプ、ブラウザタイプ、及び、前記第１のコンピュータシステムのハードウェア構成からなるグループから少なくとも１つが選択される機能として第１のコンフィギュレーションを有するコンピュータシステムにおいて、前記プロセッサによって実行される相互作用を観察させ、
前記プロセッサが警告するときに、前記遠隔にあるコンピュータシステムによって取得された結果と比較した場合の前記相互作用の結果が、前記第１のコンフィギュレーションとは異なる第２のコンフィギュレーションを有する前記遠隔にあるコンピュータシステムにおいて予期しない結果を示した場合には、前記プログラムはさらに、前記プロセッサに警告させることからなる、請求項１１のコンピュータ読み取り可能媒体。
【請求項１５】
前記プロセッサが観察しているときに、前記プログラムは、前記プロセッサに、前記人間と、第１の言語用に構成されたアプリケーションプログラムとの相互作用を観察させ、
前記プロセッサが警告するときに、前記遠隔にあるコンピュータシステムによって取得された結果と比較した場合に前記相互作用の結果が、前記第１の言語とは異なる第２の言語用に構成された複製アプリケーションプログラムに関して予期しない結果を示した場合には、前記プログラムはさらに、前記プロセッサに警告させることからなる、請求項１１のコンピュータ読み取り可能媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
ソフトウェア開発の段階の１つはソフトウェアテストである。すなわち、ソフトウェアとの相互作用が予期された結果を生じることを確保するためにソフトウェアはテストされる。このことを説明するために、ソフトウェアテストを、機能テストとコンフィギュレーションテスト（または構成テスト）という２つの領域に概念的に分割することができる。機能テストでは、ソフトウェアの内部動作がテストされる。すなわち、このテストでは、ソフトウェアが設計の目的とされた機能を正しく実行するか否かが判定される。機能テストのサブコンポーネントは、ユーザーインターフェースを局所的な動作または国際的な動作についてテストすることである。たとえば、プログラムの基本的なタスクが、実行場所に関係なく同じ場合（たとえば、ショッピングカートソフトウェア）でも、ユーザーインターフェースの言語（たとえば、日本語、フランス語、英語）及び通貨の種類は異なる場合がある。
【０００２】
コンフィギュレーションテストでは、異なる動作コンフィギュレーション（コンフィギュレーションとは構成及び／または設定を意味する）でソフトウェアの動作がテストされる。たとえば、ウェブブラウザを通じてエンドユーザーによって実行されるジャバベースのプログラムのリリース前に、開発業者は、該ジャバベースのプログラムが、ハードウェア及び／またはソフトウェアコンフィギュレーションが異なるコンピュータシステムで、または、バージョンが異なるジャバで正しく動作するかを試験することができる。別の例は、ウェブアプリケーションを、異なるJ2EEサーバー（たとえば、WebSphere（ウェブスフィア）、WebLogic（ウェブロジック）、JBoss（ジェイボス））に実装できるか否かをテストすることである。
【０００３】
例示的な実施形態を詳細に説明するために添付の図面を参照する。
【図面の簡単な説明】
【０００４】
【図１】少なくともいくつかの実施形態にしたがうシステムを示す。
【図２】少なくともいくつかの実施形態にしたがうコンピュータシステムを示す。
【図３】少なくともいくつかの実施形態にしたがう方法を示す。
【発明を実施するための形態】
【０００５】
表記法及び用語法
特定のシステムのコンポーネントを参照するために、以下の説明及び特許請求の範囲を通じて特定の用語が使用される。当業者であれば理解するように、会社が異なると、同じコンポーネントでも異なる名称で参照する場合がある。本明細書では、呼び名は異なるが機能は同じコンポーネントを区別することは意図されていない。
【０００６】
以下の説明及び特許請求の範囲では、「含む」及び「備える」という用語は、制限をしない用法で使用されており、したがって、「…を含むが、…には限定されない」ことを意味するものと解釈されるべきである。また、「結合する」という用語は、間接的な接続または直接接続を意味することが意図されている。したがって、第１のデバイスが第２のデバイスに結合するという場合には、その接続は、直接接続によるかまたは間接的接続による。
【０００７】
第１のコンピュータシステムで実行される動作または処理（演算）を認識し、コンピュータネットワークを介して第２のコンピュータシステムにメッセージを送信し、及び、該第２のコンピュータシステムでその動作／処理を実行するのに時間を要するがために、該第１のコンピュータシステムにおける動作／処理が、該第２のコンピュータシステムにおける複製された動作／処理に対して、「リアルタイム」で、または、「実質的に同時に」行われることが無効とされるべきではない。
【０００８】
「プログラム的に」とは、動作（または処理）や機能が、コンピュータシステム上で実行されるプログラムによって実施されることを意味する。
【０００９】
コンピュータプログラムに関連する「複製」とは、「複製」元のプログラムと同じ基本的な機能を有するプログラムを意味し、「複製」としての状態は、場所（または地域）に固有のユーザーインターフェースの違いによって無効にされるべきではなく（たとえば、言語、タイムゾーン、時刻表示形式、または通貨の種類の違いによって無効にされるべきではない）、及び／または、同じプログラムのリリースバージョンの違いによって無効にはされるべきではない。
【００１０】
詳細な説明
以下の説明は本発明の種々の実施形態に向けられている。これらの実施形態のうちの１つ以上が好適でありうるが、開示した実施形態は、特許請求の範囲を含む本開示の範囲を制限するものとして解釈されるべきではなく、また、用いられるべきでもない。さらに、以下の説明は広く適用され、任意の実施形態の説明は、その実施形態の単なる例示に過ぎないことが意図されており、また、特許請求の範囲を含む本開示の範囲をその実施形態に限定することをほのめかすことを意図したものでもないことが当業者には理解されよう。
【００１１】
種々の実施形態は、複数のシステムにおけるユーザーアクションの同時複製によってソフトウェアをテストするためのシステム及び方法に向けられている。ソフトウェアをテストするためのシステムもまた、そのテストを実施するためにソフトウェアを使用するので、テストされるソフトウェアは、「テスト対象ソフトウェア」と呼ばれ、そのテストを容易にするために使用されるソフトウェアは「テスト複製ソフトウェア」と呼ばれる。しかしながら、このテスト複製ソフトウェアは、単なる複製以外のことも行うので、「テスト複製ソフトウェア」とう呼び名のゆえに、その機能を制限するように解釈されるべきではない。種々の実施形態にしたがうテストを、機能テスト（たとえば国際化テスト（internationalization testing））と、コンフィギュレーションテストという２つのカテゴリーに概念的に分割することができる。これらの各々について順に説明する。
【００１２】
機能テストでは、テスト対象ソフトウェアが、設計されたように、及び／または予期されたように動作することを確実にするために該テスト対象ソフトウェアの内部動作が分析される。たとえば、電子商取引を実施するように設計されたソフトウェアプログラム（すなわち、ショッピングカートソフトウェア）を、選択された品目が適切な量だけ「ショッピングカート」に適正に置かれること、該テスト対象ソフトウェアが適切に「チェックアウト（精算）」に移行すること、支払い情報が要求されて適切に受信されること、及び、購入された製品を適時に出荷することを確保するために、該ソフトウェアが他のプログラムと正しくインターフェースする（たとえば連携する）こと、を確実にするためにテストすることができる。
【００１３】
機能テストのサブコンポーネントは、ユーザーインターフェースをテストすることである。ソフトウェアプログラムの基本的な機能を、世界の任意の地域で使用することができるが、ユーザーインターフェースパラメータは、場所毎及び／または国毎に異なる。たとえば、プログラムの基本的なタスクは、実行場所に関係なく同じ場合がある（たとえば、ショッピングカートソフトウェア）が、ユーザーインターフェース言語（たとえば、日本語、フランス語、英語）、タイムゾーン、時刻表示形式、日表示形式、及び、通貨の種類が大きく異なる場合がある。したがって、機能テストは、基本的な機能がテストされない場合、または、同時にテストされる場合でも、ユーザーインターフェースが各地域に応じた適切な動作をするか否かについてテストすることを含むことができる。
【００１４】
コンフィギュレーションテストでは、テスト対象ソフトウェアは、様々なコンピュータシステム環境で適正に動作することを確保するために分析される。たとえば、ウェブブラウザを介してエンドユーザーによって実行されるジャバベースのプログラムのリリースの前に、開発業者は、該ジャバベースのプログラムが、様々なブラウザタイプ（たとえば、インターネットエクスプローラ（Internet Explorer（商標）、ファイアーフォックス（Firefox(商標））を有するコンピュータシステム上で正しく動作すること、該ジャバベースのプログラムが、様々なジャバランタイムエンジンで正しく動作すること、該ジャバベースのプログラムが、様々なオペレーティングシステム（たとえば、Windows （商標）XP、Linux（商標））を有するコンピュータシステム上で正しく動作すること、該ジャバベースのプログラムが、様々なオペレーティングシステムのバージョン及び／またはサブバージョンを有するシステム上で正しく動作すること、及び、該ジャバベースのプログラムが、様々なハードウェアタイプ（たとえば、Intel（商標）プロセッサ、AMD（商標）、様々なベンダーからのグラフィックアダプタ）を有するコンピュータシステム上で正しく動作すること、をテストすることができる。上述したように、テストを概念的に分割することができるが、テストは、機能テストとコンフィギュレーションテストの両方のテストを同時に含むことができ、したがって、かかる概念的分割を、どのようなテストを同時に実施できるかに関して限定を加えるものとして解釈すべきではない。説明が過度に複雑にならないようにするために、コンフィギュレーションテストについて最初に説明する。
【００１５】
図１は、少なくともいくつかの実施形態にしたがうシステム１００を示す。具体的には、このシステムは、主コンピュータシステム１０（一次コンピュータシステムともいう）を備える。主コンピュータシステム１０は、テストを行う人（試験者という）１６が、テスト対象ソフトウェア及びテスト複製ソフトウェア（これらのソフトウェアはいずれも主コンピュータシステム１０によって実行される）と相互作用できるようにするキーボード１２及びマウス１４を有する。主コンピュータシステム１０は、コンピュータネットワーク２０を介して複数の副コンピュータシステム（二次コンピュータシステムともいう）１８に結合する。少なくともいくつかの実施形態にしたがって、副コンピュータシステム１８の各々は、テスト対象ソフトウェアの複製を実行し、テスト複製ソフトウェアのあるバージョンもまた実行する。
【００１６】
図２は、例示的な主コンピュータシステム１０をより詳しく示した図である。具体的には、主コンピュータシステム１０は、ブリッジデバイス２６を介してメモリ装置（メモリデバイス）２４に結合されたプロセッサ２２を備える。１つのプロセッサ２２だけが図示されているが、複数プロセッサシステム、及び、「プロセッサ」が複数の処理コアを有するシステムを同じように実施することができる。プロセッサ２２は、プロセッサバス２８を介してブリッジデバイス２６に結合し、メモリ２４は、メモリバス３０を介してブリッジデバイス２６に結合する。メモリ２４は、任意の揮発性または不揮発性メモリ装置であり、または、ランダムアクセスメモリ（ＲＡＭ）装置、ダイナミックＲＡＭ（ＤＲＡＭ）装置、スタティックＤＲＡＭ（ＳＤＲＡＭ）装置、ダブルデータレートＤＲＡＭ（ＤＤＲ ＤＲＡＭ）装置、もしくは、磁気ＲＡＭ（ＭＲＡＭ）装置などのメモリ装置が配列されたものである。
【００１７】
ブリッジデバイス２６は、メモリ２４の読み出し及び該メモリ２４への書き込みを行うための制御信号をアサートするメモリコントローラを備え、これらの読み出しと書き込みのいずれも、ブリッジデバイス２６に結合されたプロセッサ２２及び他の装置によって（すなわち、ダイレクトメモリアクセス（ＤＭＡ）によって）行われる。メモリ２４は、プロセッサ２２に対するワーキングメモリであって、プロセッサ２２によって実行されるプログラムを格納し、及び、プロセッサ２２で実行されるプログラムによって使用されるデータ構造を格納する。いくつかの場合には、メモリ２４に保持されているプログラムは、実行される前に、他の装置（たとえば、後述するハードディスク装置３４）から複製される。
【００１８】
ブリッジデバイス２６は、プロセッサ２２をメモリ２４にブリッジ（または結合）するだけでなく、プロセッサ２２及びメモリ２４を他のデバイス（装置）にブリッジ（または結合）する。たとえば、例示的なコンピュータシステム１０は、スーパー入力／出力（Ｉ／Ｏ）コントローラ３２を備える。スーパーＩ／Ｏコントローラ３２は、種々のＩ／Ｏデバイスをコンピュータシステムにインターフェース（接続）する。例示的な主コンピュータシステム１０では、スーパーＩ／Ｏコントローラ３２は、不揮発性メモリ装置３４（ハードディスク装置（ＨＤ）など）、ポインティングデバイスすなわちマウス１４、及びキーボード１２を結合して使用できるようにする。スーパーＩ／Ｏコントローラ３２はまた、具体的には図示されていない他のデバイス（たとえば、コンパクトディスク読出し専用メモリ（ＣＤＲＯＭ）ドライブ、ユニバーサル・シリアル・バス（ＵＳＢ）ポート）を使用できるようにすることができ、それが多くのＩ／Ｏデバイスに対して使用できるがゆえに「スーパー」と呼ばれる。
【００１９】
さらに図２を参照すると、ブリッジデバイス２６は、さらに、プロセッサ２２及びメモリ２４をグラフィックアダプタ４０及びネットワークアダプタ４２にブリッジ（または結合）する。グラフィックアダプタ４０は、表示メモリを読み出し、及び、表示メモリに表示されるグラフィックイメージでモニタ４４を駆動するための任意の適切なグラフィックアダプタである。いくつかの実施形態では、グラフィックアダプタ４０は、グラフィックプリミティブ（または図形要素）がプロセッサ２２によって、及び／またはメモリ２４とグラフィックアダプタ４０の間におけるＤＭＡ書き込み（DMA write）によって書き込まれるところのメモリ領域を内部に有する。グラフィックアダプタ４０は、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）バスやアドバンストグラフィックポート（ＡＧＰ）バスなどの任意の適切なバスシステムを介してブリッジデバイスに結合する。いくつかの実施形態では、グラフィックアダプタ４０はブリッジデバイス２６と一体となっている。
【００２０】
ネットワークアダプタ４２は、主コンピュータシステム１０が、コンピュータネットワークを介して他のコンピュータシステムと通信できるようにする。いくつかの実施形態では、ネットワークアダプタ４２は、配線接続（たとえば、イーサネットネットワーク）を介してローカルエリアネットワーク（ＬＡＮ）やワイドエリアネットワーク（ＷＡＮ）へのアクセスを提供し、他の実施形態では、ネットワークアダプタ４２は、無線ネットワークプロトコル（たとえば、IEEE 802.11(b),(g)）を使ってＬＡＮまたはＷＡＮへのアクセスを提供する。さらに他の実施形態では、ネットワークアダプタ４２は、携帯電話向け無線ブロードバンドインターネット接続などの無線ブロードバンド接続を介してインターネットへのアクセスを提供する。したがって、副コンピュータシステム１８を、局所的に（すなわち、すぐ近くで）結合することができ、または、主コンピュータシステム１０から何マイルも離れたところに配置することができる。
【００２１】
図２は、主コンピュータシステム１０に関して説明されているが、この説明は、任意の副コンピュータシステム１８についても同様に当てはまる。しかしながら、以下の説明に基づいて明らかになる理由により、副コンピュータシステムは、Ｉ／Ｏデバイスを必ずしも実装する必要がなく（たとえば、キーボード及びマウスを省くことができる）、必ずしもモニタ４４を実装する必要がなく、また、いくつかの実施形態では、様々なハードウェア及びソフトウェアコンフィギュレーションを実装することができる。
【００２２】
図１を再度参照する。例示的なコンフィギュレーションテストでは、主コンピュータシステム１０は、テスト対象ソフトウェアとテスト複製ソフトウェアをロードして実行する。副コンピュータシステム１８の各々もまた、テスト対象ソフトウェアの複製、及び、テスト複製ソフトウェアのあるバージョンをロードして実行する。しかしながら、コンフィギュレーションテストでは、副コンピュータシステムは、主コンピュータシステム１０とは異なるコンピューティング環境を実装する。たとえば、副コンピュータシステム１８の各々は、異なるウェブブラウザを実装することができる（たとえば、１つはInternet Explorer（商標）（IE）6.0を実装し、他の１つはIE 7.0を実装し、第３のものはFirefox（商標）を実装する）。さらに他の例では、副コンピュータシステム１８の各々は、異なるオペレーティングシステムのタイプを実装することができる（たとえば、１つはWindows（商標）XPを実装し、１つはWindows（商標）Vista（商標）を実装し、１つはLinux（商標）を実装する）。さらに別の例では、副コンピュータシステムの各々は、異なるハードウェアコンフィギュレーションを実装することができる（たとえば、１つはIntel（商標）Core（商標）2 Duoを実装し、１つはIntel（商標）Pentium（商標）4を実装し、１つがAMD（商標）Athlon（商標）を実装する）。さらに他の例では、副コンピュータシステムの各々は、主コンピュータシステムと同じハードウェアを実装することができるが、主サーバーのミドルウェアプラットフォームとは異なるミドルウェアプラットフォームに配置されたアプリケーションサーバー（たとえば、ウェブサーバー、データベース）に接続することができる。
【００２３】
副コンピュータシステム１０の各々が正確にコンフィギュレーションされているか否かに関係なく、試験者１６は、主コンピュータシステム１０で実行されるテスト対象ソフトウェアと相互作用をする。試験者１６が主コンピュータシステム１０においてテスト対象ソフトウェアと相互作用をするときに、主コンピュータシステム１０で実行されるテスト複製ソフトウェアは、その相互作用の表現を生成する。たとえば、試験者１６がテキストボックスにデータを入力し、チェックボックスをチェックし、及び、（画面またはその他にある）入力プッシュボタンを押すと、テスト複製ソフトウェアは、データ、チェックボックス動作、及びボタン押下の表現を複製または生成する。テスト複写ソフトウェアは次に、副コンピュータシステムの各々に相互作用の表現を送る。副コンピュータシステム１８の各々は、これを受け取ると、該副コンピュータシステム１８上でそれらの動作または相互作用をテスト対象ソフトウェアにプログラム的に適用する。換言すれば、テスト複製ソフトウェアは、主コンピュータシステム１０における相互作用の表現に応答して、副コンピュータシステムにおいてテスト対象ソフトウェアと相互作用をする。少なくともいくつかの実施形態にしたがって、試験者１６とテスト対象ソフトウェアとの相互作用と、副コンピュータシステム１８の各々における対応するプログラム的な相互作用とはリアルタイムで（すなわち、即時に、または、ほぼ同時に）行われる。
【００２４】
いくつかの実施形態では、相互作用の表現を生成することに関して、相互作用の表現は、マウス位置、マウスボタンのアサート、及びキーボード入力の絶対的追跡である。副コンピュータシステム１８における受信テスト複製ソフトウェアの側面から見ると、一連のマウスの動き、マウスのアサート、及び／またはキーボード入力が受信され、それらの動き、アサート及び入力が、副コンピュータシステム１８において正確に複製される。
【００２５】
他の実施形態では、主コンピュータシステム１０におけるテスト複製ソフトウェアは、テスト対象ソフトウェアの実行コード及び／またはデータ構造を調べるので、相互作用の表現は、試験者がマウスの動きを追跡することなく相互作用した特徴を明確に識別することができる。この場合、受信テスト複製ソフトウェアは、マウスの動きを同じ様に正確に複製する必要はないが、それでもなお、副コンピュータシステム１８におけるテスト対象ソフトウェアとのより明確な（または明示的な）相互作用によって取得された相互作用は複製する。さらに、絶対的なマウスの動きではない相互作用の表現を用いることによって、主コンピュータシステムと副コンピュータシステム１８との間でユーザーインターフェースが異なる（たとえば、画面サイズが異なり、ポップアップウィンドウが副コンピュータシステム上では異なる位置に生じる）場合でも、副コンピュータシステムがそれらのそれぞれのテスト対象ソフトウェアと相互作用できるようにする。十分な情報が与えられている場合には、元の相互作用から、画面上の異なる位置にあるテキスト入力ボックス、チェックボックス、及びプッシュボタンの位置を特定する機能、及び、他のコンピュータシステムにおける変更された位置で相互作用を再生成（または再現）する機能を有するいくつかの市販されているコンピュータプログラムが存在する。市販されているそのような製品の１つは、カリフォルニア州パロアルトにあるヒューレット・パッカードカンパニーから市販されているQuick Test Professionalである。しかしながら、Quick TestProfessionalなどの製品の動作には、試験者とテスト対象ソフトウェアとの間の相互作用セッション全体を記録して、テストスクリプトを生成し、その後、その記録されたテストスクリプトを同じマシンまたは他のマシンに再度適用することが含まれる。換言すれば、一連の相互作用中の各相互作用は、副コンピュータシステムへはリアルタイムでは送られない。
【００２６】
種々の実施形態にしたがって、主コンピュータシステム１０におけるテスト対象ソフトウェアに関しては、試験者１６は、予期された動作をするか否かをチェックする責任がある。しかしながら、主コンピュータシステム１０で実行されるテスト複製ソフトウェアが、特定の相互作用の結果を分析して、該相互作用の結果の表現を生成する。同様に、副コンピュータシステム１８上におけるそのバージョンのテスト複製ソフトウェアが、それらのそれぞれの副コンピュータシステム１８におけるプログラム的な（プログラム上の）相互作用の結果の表現を生成する。いくつかの実施形態にしたがって、副コンピュータシステム１８の各々は、該結果のそれぞれの表現を主コンピュータシステム１０におけるテスト複製ソフトウェアに送信する。主コンピュータシステム１０におけるテスト複製ソフトウェアは、副コンピュータシステムの各々からの結果の表現に対して、主コンピュータシステムにおける相互作用の結果の表現を分析し、副コンピュータシステム１８における相互作用の結果が予期しないものであったときは試験者１６に警告する。１例として、試験者１６がテスト対象ソフトウェアと相互作用をして、その結果、特定のデータを含むポップアップウィンドウが生じた場合を考える。副コンピュータシステムのうちの１つでは、ポップアップウィンドウは生じず、別の副コンピュータシステムではポップアップウィンドウが生るが、データは異なる。この例示的な状況では、テスト複製ソフトウェアは、例示的な３つの副コンピュータシステム１８のうちの２つに予期しない結果が発生したことを、コンピュータシステム１０を介して、試験者１６に知らせる。試験者１６は、この場合、コンピュータシステム１０を通じて、副コンピュータシステム１８における結果を検討して、その予期しない結果が本当にエラーであるのか、それとも、異なるコンフィギュレーションに起因する単なる動作の相違であるのかを判定することができる。
【００２７】
代替の実施形態では、主コンピュータシステム１０は、結果の表現を副コンピュータシステム１８の各々に送信し、副コンピュータシステムには、主コンピュータシステム１０からの結果の表現を、それらのそれぞれのマシンにおけるプログラム的な（プログラム上の）相互作用からの結果を用いて分析するというタスクが与えられる。これらの実施形態では、分析結果が予期しない結果を明らかにしているときには、副コンピュータシステム１８の各々は、ある指標を主コンピュータシステム１０に送る。テスト対象ソフトウェアとの異なる相互作用間の相互作用の比較結果を特定する能力を有するいくつかの市販のコンピュータプログラムが存在する。そのような市販製品の１つは、上記のQuick Test Professionalである。しかしながら、ここでもまた、Quick Test Professionalなどの製品の動作は、試験者とテスト対象ソフトウェアとの間の相互作用セッション全体を記録してテストスクリプトを生成し、その後、その記録されたテストスクリプトを同じマシンまたは他のマシンに再度適用することが含まれる。したがって、かかる状況での結果の分析は、相互作用によって生成された結果をリアルタイムで比較しているのではなく、現在の結果を以前の記録セッションにおいて得られた結果と比較することを含んでいる。換言すれば、一連の相互作用中の各相互作用の結果は、副コンピュータシステムに対してリアルタイムでは送受信されず、結果が予期したものではなかったということに関する分析はリアルタイムでは行われない。
【００２８】
先に進める前に要約しておくと、少なくともいくつかの実施形態にしたがうコンフィギュレーションテストでは、主コンピュータシステム１０と副コンピュータシステム１８は異なるコンフィギュレーションを実装する。テスト対象ソフトウェアの複製は、コンピュータ１０、１８の各々で実行される。主コンピュータシステム１０で実行されるテスト複製ソフトウェアは、試験者１６とテスト対象ソフトウェアとの間の相互作用を観察し、その相互作用を記録し、その相互作用の表現を副コンピュータシステム１８にリアルタイムで送信する。副コンピュータシステムの各々はその相互作用を該副コンピュータシステムのそれぞれのテスト対象ソフトウェアに適用し、その結果が分析される。主コンピュータシステム１０では、その結果は試験者１６によって分析される。副コンピュータシステムにおける結果は、主コンピュータシステムにおける結果に対して分析され、予期しない結果が発見された場合には試験者に通知される。このようにして、試験者１６は、様々なコンピュータシステムのコンフィギュレーションにおいてテスト対象ソフトウェアを同時にテストすることができる。
【００２９】
さらに図１を参照して、今度は機能テストの説明に入るが、その特定の例として、ユーザーインターフェースが適切な地域的動作を行うかのテストについて説明する。機能テストの例示的なケースでは、主コンピュータシステム１０は、テスト対象ソフトウェア並びにテスト複製ソフトウェアをロードして実行する。副コンピュータシステム１８の各々もまた、テスト対象ソフトウェアの複製、及び、あるバージョンのテスト複製ソフトウェアをロードして実行する。機能テストの概念的分割のために、副コンピュータシステム１８の各々は、主コンピュータシステム１０と同じコンピューティングコンフィギュレーションを実装する。しかしながら、他の実施形態は、機能テストとコンフィギュレーションテストを同時に実行し、このため、同じコンフィギュレーションを実装しているコンピュータシステムを用いる機能テストの概念的分割は、本開示の範囲を限定するものと解釈されるべきではない。
【００３０】
試験者１６は、主コンピュータシステム１０で実行されるテスト対象ソフトウェアと相互作用をする。試験者１６が主コンピュータシステム１０においてテスト対象ソフトウェアと相互作用をすると、主コンピュータシステム１０で実行されるテスト複製ソフトウェアは、その相互作用の表現を生成する。たとえば、試験者１６が、ドロップダウンメニューを起動する位置を「クリック」すると、テスト複製ソフトウェアは、該メニュー相互作用の表現（たとえば、この特定の例における相互作用の表現を「SelectMenuItem ITEM NAME」とすることができる）を複製するかまたは生成する。次に、テスト複製ソフトウェアは、この相互作用の表現を副コンピュータシステムの各々に送信する。副コンピュータシステム１８の各々は該表現を受信すると、この相互作用を、該副コンピュータシステム１８におけるテスト対象ソフトウェアにプログラム的に適用する。コンフィギュレーションテストの場合と同様に、テスト対象ソフトウェアとの試験者１６の相互作用、及び、副コンピュータシステム１８の各々における対応するプログラム的な（プログラム上の）相互作用は、「リアルタイム」で（すなわち、即時に、または、ほぼ同時に）行われる。さらに、相互作用の表現を、マウス及び／またはカーソルの動きの高いレベルでの追跡とすることができ、または、テスト対象ソフトウェアの実行コード及び／またはデータ構造の低レベルの調査(lower-leveling delving)とすることができる。
【００３１】
種々の実施形態にしたがって、主コンピュータシステム１０におけるテスト対象ソフトウェアに関して、試験者１６には予期した動作がなされるか否かをチェックする責任がある。しかしながら、主コンピュータシステム１０で実行されるテスト複製ソフトウェアが、特定の相互作用の結果を分析して、該相互作用の結果の表現を生成する。同様に、副コンピュータシステム１８上のテスト複製ソフトウェアのあるバージョンが、それらのそれぞれの副コンピュータシステム１８におけるプログラム的な（プログラム上の）相互作用の結果の表現を生成する。いくつかの実施形態にしたがって、副コンピュータシステム１８の各々は、分析のために、並びに、副コンピュータシステム１８における相互作用の結果が予期したものではなかった場合に試験者１６に警告するために、そのそれぞれの結果の表現を、主コンピュータシステム１０上のテスト複製ソフトウェアに送る。
【００３２】
１例として、試験者１６がテスト対象ソフトウェアと相互作用をして、その結果、特定の選択項目を含むドロップダウンウィンドウが生じた場合を考える。副コンピュータシステムのうちの１つでは、ドロップダウンウィンドウは生じるが、間違った言語で表示され、別の副コンピュータシステムではドロップダウンウィンドウが正しい言語で現れるが、（言語を考慮に入れた）選択項目は異なる。この例示的な状況では、主コンピュータシステム１０で実行されたテスト複製ソフトウェアは、副コンピュータシステムの各々から受信した相互作用の表現に対して言語の翻訳を実行し、例示的な３つの副コンピュータシステム１８のうちの２つに予期しない結果が発生したことを試験者１６に知らせる。試験者１６は、この場合、コンピュータシステム１０を通じて、副コンピュータシステム１８における結果を検討して、該結果が予期しない結果であるか否かを判定して、その予期しない結果を検証し、及び／または、欠陥レベルを判定することができる。異なる言語によるドロップダウンメニューは、プログラムにおける任意の地域上の相違点の単なる例示に過ぎない。そのような地域上の相違点の限定的な一覧には、言語、広義の言語のカテゴリーを有する言語のバリエーション（たとえば、アメリカ英語、イギリス英語）、タイムゾーン、時刻表示形式、通貨の種類、及び、通貨フォーマットがある。
【００３３】
代替の実施形態では、主コンピュータシステム１０は、結果の表現を副コンピュータシステムの各々に送信し、副コンピュータシステムには、主コンピュータシステム１０からの結果の表現を、それらのそれぞれのマシンにおけるプログラム的な（プログラム上の）相互作用からの結果を用いて分析するというタスクが与えられる。上記の例示的なドロップダウンメニューのケースでは、副コンピュータシステム１８の各々は、必要とされる任意の翻訳を実行し、共通の言語で、２つのコンピュータシステム間における結果を分析する。これらの実施形態では、分析結果が予期しない結果を明らかにしているときには、副コンピュータシステム１８の各々は、ある指標を主コンピュータシステム１０に送る。
【００３４】
図３は、少なくともいくつかの実施形態にしたがう１方法を示す。具体的には、この方法は、開始（ブロック３００）してから、第１のコンピュータシステムで実行される第１のソフトウェアプログラム（すなわち、テスト対象ソフトウェア）と試験者が相互作用するステップへと進み、この相互作用は、ある動作（たとえば、演算その他の処理）を第１のソフトウェアプログラムに実行させる（ブロック３０４）。たとえば、試験者は、第１のソフトウェアプログラムと相互作用をして、第１のソフトウェアプログラムの機能をテストすることができ、または、第１のソフトウェアプログラムと相互作用をして特定のコンピュータシステムのコンフィギュレーションにおける第１のソフトウェアプログラムの動作をテストすることができる。この相互作用とほぼ同時に、この相互作用は、第１のコンピュータシステムに結合された第２のコンピュータシステムで実行される第２のソフトウェアプログラムで複製される（ブロック３０８）。種々の実施形態にしたがって、第２のコンピュータシステムにおける複製は、第１のコンピュータシステムにおける相互作用とリアルタイムで（すなわち、即時に、または、ほぼ同時に）行われる。しかしながら、第２のコンピュータシステムにおける複製は、その相互作用を実行する試験者が介在することなく行われる。換言すれば、第２のコンピュータシステムにおける複製された相互作用は、プログラム的に実行される。
【００３５】
さらに図３を参照すると、次に、第１のコンピュータシステムにおける動作の結果が、第２のコンピュータシステムにおける動作の結果に対してプログラム的に分析される（ブロック３１２）。いくつかの実施形態では、第２のコンピュータシステムは、この結果の表現を第１のコンピュータシステムに送信し、第１のコンピュータシステムは分析を実行する。他の実施形態では、第１のコンピュータシステムが、該第１のコンピュータシステムにおける結果の表現を第２のコンピュータシステムに送信し、第２のコンピュータシステムが分析を実行する。どのコンピュータシステムが分析を実行するかに関係なく、第２のコンピュータシステムにおける動作の結果が予期しないものであるときには、（第１のコンピュータシステムを介して）試験者に通知し（ブロック３１６）、該方法は終了する（ブロック３２０）。
【００３６】
本明細書において提供した説明から、説明したように生成されたソフトウェアを、適切な汎用のコンピュータハードウェアまたは特定用途向けのコンピュータハードウェアと組み合わせて、種々の実施形態にしたがうコンピュータシステム及び／またはコンピュータサブコンポーネントを製作すること、種々の実施形態の方法を実行するためのコンピュータシステム及び／またはコンピュータサブコンポーネントを製作すること、及び／または、種々の実施形態の方法の側面を実施するためにソフトウェアプログラムを格納するためのコンピュータ読み取り可能媒体を製作することは、当業者には容易に可能である。
【００３７】
上記の説明は、本発明の原理及び種々の実施形態を例示することを意図したものである。上記開示を十分に理解した当業者には、多くの変形形態及び修正形態が明らかになろう。添付の特許請求の範囲は、そのような全ての変形形態及び修正形態を包含するように解釈されるべきことが意図されている。
【図１】
2011521328.tif 000003
【図２】
2011521328.tif 000004
【図３】
2011521328.tif 000005
【国際調査報告】
2011521328.tif 000006
2011521328.tif 000007