Nothing Special   »   [go: up one dir, main page]

JP2006268858A - アプリケーションホスト環境においてユニットテストを実行する方法および装置 - Google Patents

アプリケーションホスト環境においてユニットテストを実行する方法および装置 Download PDF

Info

Publication number
JP2006268858A
JP2006268858A JP2006081608A JP2006081608A JP2006268858A JP 2006268858 A JP2006268858 A JP 2006268858A JP 2006081608 A JP2006081608 A JP 2006081608A JP 2006081608 A JP2006081608 A JP 2006081608A JP 2006268858 A JP2006268858 A JP 2006268858A
Authority
JP
Japan
Prior art keywords
test
environment
program
unit
adapter
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.)
Pending
Application number
JP2006081608A
Other languages
English (en)
Inventor
Brian R Crawford
アール.クロフォード ブライアン
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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006268858A publication Critical patent/JP2006268858A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3668Testing of software
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

【課題】ユニットテストが準備される開発環境を提供する。
【解決手段】ユニットテストは、プログラムユニットのより完全で正確なテストのためにホスト環境320において実行する。開発環境310では、ホスト環境320で作動しているアダプタ322にアクセスするためにテスト実行シム314を使用する。ホストアダプタ322は、特定のテストを実行する他のプログラムオブジェクトを呼び出すことができる。そのようなオブジェクトは、テスト対象ユニットに実行時バインドすることができる。アクセサクラスは特定のテスト対象ユニットへの実行時バインディングを容易にすることができ、開発環境310において制作されたテストがテスト対象ユニットにアクセスするために必要なコンテキストに応じた情報を使用できるようにすることも容易にする。
【選択図】図3

Description

本発明は一般に、ソフトウェア開発に関し、具体的にはソフトウェアコンポーネントのテストに関する。
多くの場合、ソフトウェアが開発、変更、または最適化される際、ソフトウェアをテストすることが望ましい。ソフトウェアは「ブラックボックス」としてテストされる場合があるが、これはつまり、ソフトウェアを活性化するために入力が適用され、これに応じて生成される出力が観察され、適正に機能するソフトウェアに予想される応答と比較されることを意味している。このように行うテストは通常、既存の外部インターフェース、すなわち動作中にソフトウェアとデータを交換するために使用されるインターフェースを使用してソフトウェアに適用される入力および出力に依存している。
図1Aは、そのようなテスト手法を示している。開発環境110およびホスト環境120が使用される。テストは、開発環境110において準備される。テスト対象のプログラムは、ホスト環境120において動作する。ホスト環境120は、インターフェース122および124を含んでいる。
開発環境は多くの場合、プログラムを作成またはテストする開発者のコンピュータ上で確立されたプロセスである。開発環境は、開発者のプログラムの作成またはテストの作成を支援するツールを提供するコンポーネント、テストを実行するためのテスト環境を提供するコンポーネントなど、複数のコンポーネントを備えることができる。ホスト環境は多くの場合、同一のコンピュータまたは別個のコンピュータ上のプロセスである。ホスト環境は、人間のユーザーまたは開発環境のいずれかによってホストアプリケーションにテストが開始されるときに、オペレーティングシステムによって作成される。
開発環境110は、エージェント112を含んでいる。エージェント112は、個々のテストのタイミングおよび順序付けを制御するソフトウェアプログラムである。エージェント112はまた、これらのテストの結果を予想される結果と比較することができ、テストの結果を処理するかまたは人間の開発者あるいはシステムの他の部分に報告することができる。エージェント112は、114A、114B、および114Cなどのテストを呼び出す。図示されている実施形態において、エージェント112は、テストアダプタ113を通じてテストを呼び出す。実行される各テストは、すべてのテストへの標準インターフェースをエージェント112に提供する各自のテストアダプタを有することができる。各々のテストは入力を適用し、ホスト環境120内で実行しているテスト対象プログラムからの出力を観察する。
ホスト環境120は、拡張可能インターフェースを通じてアドインプログラムを受け入れられるアプリケーションによって作成することができる。たとえば、Word(商標)文書処理アプリケーションまたはExcel(商標)スプレッドシートアプリケーションのようなマイクロソフト(登録商標)Office(商標)アプリケーションスイートのアプリケーションは、アドインプログラムを受け入れる。アドインプログラムは、ユーザー作成のものであっても、他のソースからのものであってもよい。アドインプログラムは、1つまたは複数のユニットから形成することができる。さらに、ホスト環境は、テストされることもある1つまたは複数のユニットを含むことができる。図1Aにおいて、テストされるホスト環境120内のユニットは、総称的に、126A、126B、および126Cなどのユニットによって示される。
ユニットは、ブラックボックステストを使用してテストされる。ブラックボックステストの場合、テスト対象のプログラムは、インターフェース122または124などの外部インターフェースを通じてアクセスされる。たとえば、図1Aは、インターフェース122を通じて入力を適用し、インターフェース124を通じて結果を取得するテスト114A...114Cを示している。実際の結果と予想される結果を比較することにより、テスト対象のプログラムのパフォーマンスを検証することができる。
ブラックボックスとしてソフトウェアをテストすることの欠点は、ユニットのすべてに完全に実行するために多くの入力または入力の組み合わせが必要になることである。さらに、特定の入力のセットに応じて予想された出力が観察されないために障害が検出される場合は、障害を修正するために変更する必要のある特定のコードのユニットを識別することが困難になる。
アプリケーションプログラムをテストする代替の手法は、図1Bに示されている。図1Bでは、ユニット126Aなどのテスト対象のユニットは、テスト環境130にロードされる。「テストハーネス(test harness)」と呼ばれることもあるエージェント112は、テスト154の呼び出しなどによって、実行されるテストの選択および順序付けを同様に制御する。しかし、図1Bの例では、テストはテスト対象の単一ユニットで行われ、開発環境またはテスト環境において実行される。
開発環境130は、書き込みテストにおいて開発者を支援するツールを含んでいる。たとえば、マイクロソフトVisual Studio(商標)開発環境は、開発者がテストを制作し、これらのテストの実行を制御し、結果を分析できるようにするツールを含んでいる。マイクロソフトVisual Studio開発環境に含まれているツールの1つの機能は、インテリセンス(IntelliSense)として知られている。インテリセンス機能は、コードエディタのユーザーにコンテキストに応じたヘルプを提供する。たとえば、ユーザーがプログラム内の変数にアクセスするコードを制作している場合、インテリセンス機能は、そのプログラム内の変数のリストをユーザーに提供し、使用すべき正しい変数をユーザーがすばやく選択できるようにするか、またはユーザーが命令の入力を始めるとコードエディタが正しく命令を完了するようにできる。
Visual Studio開発環境を使用して図1Aに示されるテスト構成のためのテストを作成するテスト開発者は、テスト対象のコードを含むホスト環境のプロジェクトが、テストプログラムを含む開発環境のプロジェクトにおいて参照される場合、インテリセンス機能を使用することができる。ただし、あるプロジェクトを参照する別のプロジェクトにおいて使用できるのは、そのプロジェクトからのパブリックインターフェースだけである。したがって、インテリセンス機能は、テスト対象のユニットの非パブリック部分にアクセスするのには使用することができない。
ソフトウェアのユニットをテストする改良された方法を備えることが望ましいと考えられる。
本発明は、テストをホスト環境で実行できるようにする、ソフトウェアユニットのテストを実行する方法に関する。ホスト環境内のテストは、ホストがテスト対象ユニットを適切に初期化して、ホストアプリケーションによって提供されるコンテキスト情報がテスト中に使用できるようにすることを保証する。したがって、より完全で正確なテストが可能である。もう1つの態様において、開発環境とホスト環境との間のインターフェースは、テスト対象ソフトウェアのメソッド、プロパティおよびその他のパラメータが、たとえ非パブリックであっても、開発環境で使用可能にするような方法で提供することができる。この機能により、動的にインスタンス化されるプログラムのテストの生成が可能になる。さらに、特定のユニットのテストプログラムを準備する開発者にコンテキストに応じた情報を提供することを可能にする。
1つの態様において、本発明は、第1の環境において動作するプログラムをテストする方法に関する。そのような方法は、少なくとも1つのユニットがテストされる複数のユニットを有するプログラムをテストする場合に有用である。この方法は、第2の環境においてテストエージェントを実行するステップを備える。テストエージェントは、テスト対象ユニットをテストするために実行されるテストを指定する。テストエージェントの実行に応じて、指定されたテストが第1の環境において実行される。このテストは、テスト対象ユニットのパフォーマンスを示すテスト結果を生成する。第1の環境において動作する指定されたテストからのテスト結果は、第2の環境において動作するテストエージェントに伝達される。
もう1つの態様において、本発明は、第1の環境において動作するプログラムをテストする方法に関する。この方法は、少なくとも1つのユニットがテスト対象である複数のユニットを有するプログラムをテストする場合に有用である。この方法は、第1の環境においてプログラムをロードするステップ、および第1の環境においてオブジェクトのインターフェースを公開するステップを備えている。オブジェクトは、インターフェースを通じて提供される情報に応じてテストアダプタをロードするために使用される。テストアダプタは、テスト対象ユニットのテストを実行する。
さらにもう1つの態様において、本発明は、複数のホスト環境の1つにおいて動作するプログラムのユニットをテストするためにテストプログラムが開発される開発環境を提供するソフトウェアシステムを実装するステップを実行するためのコンピュータ実行可能命令を有するコンピュータ可読媒体であって、このコンピュータ実行可能命令は、テストエージェントを作成するステップと、複数のホストアダプタの1つを作成するステップで、各ホストアダプタは複数のホスト環境の1つにおいてテストプログラムの実行を呼び出すためにテストエージェントによって使用されるように構成されるステップとを実行するコンピュータ可読媒体に関する。
添付の図面は、請求の範囲を縮小することを意図して描かれたのではない。図面において、さまざまな図に示されている各々の同一またはほぼ同一のコンポーネントは、類似した番号で表されている。明瞭さを期すため、すべての図面においてすべてのコンポーネントにラベル付けされているわけではない。
図1Bによって示されているテスト方法の欠点は、テスト対象ユニット126Aが開発環境130において実行されることである。テスト対象ユニット126Aがホスト環境120からのコンテキスト情報を必要とする場合、その情報はテスト中に使用することができない。ホスト環境120からコンテキスト情報にアクセスするかまたはこれに依存するテスト対象ユニット126Aの一部を実行するテスト対象のユニット126Aの任意のテストは、失敗する可能性が高い。テストは、テスト対象ユニットが正しくない結果を返したため、またはテスト対象ユニットがコンテキスト情報なしで動作できなかったために失敗することがある。
さらに、図1Bの方法は、テスト対象のコードが実行時に構築される場合には使用することができない。たとえば、ASP.NETは、実行時の条件が、作成されるコードを定義できるようにするプログラミング環境である。そのようなコードに対して、テストハーネスは、コードが定義されるまで構築することができない。
図2Aは、テスト実行のための望ましいアーキテクチャを示している。開発環境110において実行されるエージェント112は、テスト214を呼び出す。テスト214は、ホスト環境120で実行するテスト対象のユニット226にアクセスする。それがプログラムされる特定のアプリケーションおよび言語に応じて、テスト対象ユニット226は、ホスト環境120におけるアドインプログラムまたはアプリケーションプログラムの関数、プロシージャ、メソッド、オブジェクト、またはその他の構成体(construct)の1つまたは組み合わせであってもよい。
図2Bは、代替の実施形態を示している。図2Bの実施形態において、テスト214は、ホスト環境120内で実行され、開発環境110のエージェント112と通信する。この実施形態において、テスト214はさらに、ホスト環境120からコンテキスト情報に直接アクセスすることができる。
図2Aおよび図2Bに示される構成により、テスト対象のユニット226がそのホスト環境においてテストされるようにできる。テスト対象ユニット226がホスト環境120の属性、変数、またはその他のパラメータに依存する場合、テストされるときにそれらの属性、変数、またはその他のパラメータにアクセスすることができる。同様に、テスト対象ユニット226の動作がホスト環境120で行われる初期化に依存する場合、テスト対象ユニット226はテストに先立ってホスト環境において初期化される。従来技術のテスト構成と比較すると、図2Aまたは図2Bのアーキテクチャで実施されるテストは、実際の動作条件をより正確に表現し、ホスト環境120の一部のパラメータに依存するテスト対象ユニット226のコードの一部を実行しようとする場合に失敗するかまたは例外条件を作成する可能性は低い。
図2Aまたは図2Bに示されているアーキテクチャは、テスト対象ユニット226が非パブリックインターフェースを含む場合など、一部の状況において増強することができる。本明細書で使用されているように、「非パブリック」インターフェースという用語は、インターフェースがプログラミング言語の標準機能を使用して定義されるプログラム領域の外部のコードからプログラミング言語の標準機能を使用してアクセスできないインターフェースを意味している。「非パブリック」インターフェースの例には、「インターナル(internal)」、「プロテクテッド(protected)」、または「プライベート(private)」と呼ばれるものがある。たとえば、一部のプログラミング言語においてプログラムは「プロジェクト」で作成される。別のあるプロジェクトを参照することにより、あるプロジェクト内のパブリックインターフェースはもう一方のプロジェクト内で使用できるようになるが、非パブリックインターフェースはそれが定義されているプロジェクト内でしか使用することができない。
テスト対象ユニット226が動的にインスタンス化されるか、コンパイルされるか、あるいはテスト214がコンパイルされるかまたは別の方法で生成される時点で使用できない場合は、追加のコンポーネントが望ましい。これらのシナリオにおいて、増強は、開発環境110における、インテリセンス機能を含むようなツールが、たとえテスト対象ユニット226の変数、メソッドまたはその他のパラメータに関する情報に直接アクセスできなくても、テスト対象ユニット226を実行するテストを制作するために必要なコンテキストに応じた情報を適切に表示できるようにすることができる。
図3は、たとえテスト対象ユニット226が直接アクセス可能ではない場合でも、テスト対象ユニット226をそのホスト環境120においてテストされるようにできるテストアーキテクチャの代替実施形態を示している。図3の実施形態はまた、商用開発環境において望ましいと考えられるカプセル化を示している。たとえばカプセル化により、開発環境は、比較的少数の追加ソフトウェアコンポーネントだけが新しい各ホスト環境または新しい各テストとインターフェースをとる複数のホスト環境および複数のテストと接続して使用できるようになる。
図3の実施形態において、エージェント312は開発環境310で実行される。従来技術におけるように、エージェント312は、テストの実行を調整し、テストの結果を受け取り、ユーザーとのインターフェースをとるか、あるいはテストの結果を報告または使用するプログラムである。この例において、エージェント312は、C#プログラミング言語で書かれた関数であるが、任意の適切なプログラミング構成体を使用してエージェントを実装することができる。
示されている実施形態において、エージェント312は、テスト実行シム(test execution shim)314と対話する。テスト実行シム314は、従来技術においてエージェントによって呼び出されるテストアダプタ113などのテストアダプタに取って代わる。テスト実行シム314のインターフェースがテストアダプタ113へのインターフェースと同じ場合、テストエージェント312は従来技術におけるように、あるいは任意の他の適切な方法で構築することができる。
テスト実行シム314は、ホスト環境320に特有の任意のインターフェースをカプセル化する。商用開発環境において、開発システムは、ホスト環境320のタイプをリフレクションするように設定できるホストタイプ属性を認識することができる。複数のホストアダプタが使用可能であり、同じ開発環境が複数のホスト環境にテストを準備するために使用できるようにする。たとえば、同じ開発環境を使用して、マイクロソフトWord文書処理アプリケーションまたはマイクロソフトExcelスプレッドシートアプリケーション用に作成されたアドインプログラムのテストを開発することができる。本明細書に説明されている実施形態において、ホストタイプごとに1つのテスト実行シムがあってもよい。この例において、各テスト実行シムはVisual Basicの関数のセットであるが、任意の適切なプログラミング構成体を使用してテスト実行シムを実装することができる。
テスト実行シム314は、インターフェースの片側にホスト環境で動作するプログラムを提供する。ここで、そのインターフェースの反対側は、ホスト環境320のホストアダプタ322によって提供される。図3において、通信はインターフェース122を通じて行われることが示されている。さらに一般的には、テスト実行シム314とホストアダプタ322との間の通信は、任意の適切な通信チャネルを通じて行うことができる。開発環境310およびホスト環境320の特定の実装に応じて、適切な通信チャネルの例には、共用メモリスペース、名前付きパイプ、RPCインターフェース、またはCOMインターフェースが含まれる。もう1つの例として、通信チャネルは、市販されている.NETホスト環境で「リモーティング(remoting)」構成体を使用して作成することができる。
動作中、ホスト環境320(または一部のアドインプログラム)は、ホスト環境がテストモードで操作されていることを認識して、ホストアダプタ322を初期化する。ホストアダプタ322の初期化の一部として、ホストアダプタ322へのインターフェースは、開発環境において実行するプログラムに使用可能になる。テストモードで動作中であっても、ホスト環境320はテスト対象ユニット226をロードして初期化し、テスト対象のユニット226がホスト環境に存在するようにする。特定のホスト環境および特定のテスト対象ユニットに応じて、ホスト環境320はテストモードでテスト対象ユニット226の実行を初期化する場合もしない場合もある。さらに、特定の実装に応じて、テスト対象ユニットの実行は行われるテストによって、または他の適切な方法で呼び出すことができる。
ホスト環境と開発環境との間の通信チャネルにより、開発環境のエージェント312はホスト環境のテスト330の実行を初期化して制御し、テスト330の実行の結果を受け取ることができる。
ホストアダプタ322の特定の実装は、ホスト環境320によって決まる。一例として、ホスト環境320がマイクロソフトOfficeアプリケーションである場合、ホストアダプタ322はVisual Basicの関数のセットとすることができる。ホストアダプタの一例を与える擬似コードは、本明細書の後段のコンピュータプログラムリストに含まれている。
ホスト環境がテストモードに置かれるメカニズムはまた、開発環境の実装によって決まる。ASP.NETホスト環境の例では、テストの実行はHTTPモジュールの使用を伴う。テスト実行シム314は、テストモードが入力されることを指定するヘッダを含むHTTP要求の送信をトリガすることができる。要求はさらに、テストされるユニットも示すことができる。テストモードを初期化するために使用される特定のメカニズムにはかかわりなく、テスト対象ユニット226はホスト環境320において初期化される。
ホストアダプタ322は、特定のテスト330を呼び出す。さらなる抽象化のために、ホストアダプタ322はテストアダプタ(図3には図示せず)を通じて特定のテストメソッドにアクセスすることができる。各テストは、すべてのテストアダプタがホストアダプタ322への共通インターフェースを提示して、各自のテストアダプタを有することができる。このようにして、ホスト環境には1つのホストアダプタ322が必要になるが、このホスト環境において任意の数のテストを呼び出すことができる。テストを実行する場合にテストに提供されるパラメータの数およびタイプなど、各テストの特定の要件はテストアダプタにカプセル化することができる。
いったん呼び出されると、テスト330はテスト対象ユニット226と対話してテスト対象ユニットを活性化させ、活性化に対するその応答を観察する。特定のテスト対象ユニットの構造および機能と行われるテストの特性に応じて、テスト対象ユニット226に活性化を提供するさまざまな形態が可能である。たとえば、テストは、そのユニットのメソッドを呼び出し、メソッド呼び出しの引数としてあらかじめ決められた値を与えることにより、テスト対象ユニットに活性化を提供することができる。
図3の実施形態では、テスト330はアクセサ(accessor)を通じてテスト対象ユニット226にアクセスする。アクセサは、ユニットのメソッド、プロパティ、クラスまたはその他のパラメータを判別するためにリフレクションを使用するプログラムである。アクセサは、テスト対象ユニット226へのアクセサクラスの実行時バインディングによって作成することができる。アクセサクラスが使用される場合、テスト開発者は、テスト対象ユニットの詳細を知ることなくアクセサクラスを参照するテスト330のようなテストプログラムを作成することができる。
アクセサクラスの実行時バインディングによってアクセサを作成する1つの方法は、「リフレクション」を使用することである。「リフレクション」は、ユニットが、メソッド、プロパティ、クラスまたはその他のパラメータに関する情報を保持するデータ構造体を読み取れるようにする多くのプログラミング言語の特性である。リフレクションされた情報は、アクセサ332をインスタンス化するために使用して、テストのターゲットである特定のテスト対象ユニット226にアクセスできるようになっている。
アクセサ332の実行時バインディングは、テスト対象ユニット226が動的にインスタンス化される場合に特に有利である。アクセサ332は、テスト対象ユニット226がインスタンス化される前であっても使用可能であるため、テスト対象ユニット226にアクセスするために必要な情報は開発環境310において使用可能であり、インテリセンスのような機能が、開発中のテストまたはテスト対象ユニット226を有するプログラムのコンテキストに応じた情報を表示するために必要な情報を備えることができるようになる。このようにして、テスト330は、コードを認可するために一般に使用可能なあらゆる種類のツールを使用して作成することができる。
別個のアクセサを使用してテスト対象ユニット226によってリフレクションされた情報を受信する必要はない。1つの代替実施形態の例として、同じ機能をテスト330に組み込むこともできる。
テスト330が結果を生成すると、それらの結果はエージェント312に渡して戻すことができる。結果は、ホストアダプタ322を通じて渡すことができる。代替として、結果は、開発環境に直接渡すことができる。たとえば、エージェント312またはテスト実行シム314は、パブリックインターフェースを含むことができる。テスト330は、エージェント312またはテスト実行シム314の後に開発環境において作成することができるので、エージェント312またはテスト実行シム314のインターフェースはテスト330がアクセスできるようにすることができる。
図3は、開発環境310においてエージェントによって実行されるコマンドに応じてホスト環境320で初期化され実行されるテスト対象ユニット226の一般化された表現である。一般化された表現は、特定のテスト対象コードがテストのコンパイル時に不明であるかまたは使用可能でなくても、テストを開発環境において開発できるようにする機能を含んでいる。そのようなテストアーキテクチャは、開発環境およびホスト環境と互換性のある任意の適切な手法で実装することができる。
図4は、開発環境で作成されたテストがASP.NET環境を代表するホスト環境において実行されるプロセスの図である。この例のテストは、Webサイトを実装するアプリケーションプログラムの動作を検証することができる。説明される実施形態において、開発環境は、説明されるようにインターフェースを容易にするためにテスト対象のWebサイトのweb.configファイルにアクセスすることができる。
1つまたは複数のテストを制作したのち、人間のユーザーは、開発環境310のコマンドラインインターフェースを通じてテストを呼び出すことができる。図4の例において、テストを実行することにより、エージェント410は開発環境310で稼働し、テストの実行を制御する。この実施形態において、エージェント410は、C#言語で作成されたプログラムとすることができる。これは、実行されるテストを作成するために使用した同じ開発環境で稼働することも、あるいは、全く別個の開発環境または異なるコンピュータ上でも稼働することができる。
特定のホスト環境においてユニットをテストするため、エージェント410はそのホスト環境にインターフェースをとるように適合されるテスト実行シム412をインスタンス化する。この例において、テスト実行シム412は、ASP.NETホスト環境へのインターフェースを含んでいる。開発環境は、実行されるテストごとに複数のテスト実行シムを含むことができる。各テスト実行シムは、異なるホスト環境に対してホストアダプタとしての役割を果たすことができる。
説明される実施形態において、テスト実行シムは、それが対話を行う特定のホスト環境にはかかわりなく、定義済みフォーマットのインターフェース432を備えている。このようにして、エージェント410は、任意のテスト実行シムとやりとりすることができる。各テストは、エージェント410が任意の望ましいテストにアクセスできるインターフェースを提供されるように、別個のテスト実行シム412を有することができる。テスト実行シム412は、テスト対象ユニットを含むホスト環境320のアプリケーションにアクセスするコマンドを送信する。ホスト環境がASP.NET環境であると説明されている実施形態において、アクセスはHTTP要求を発行することにより行われる。HTTP要求は、テストされるプログラムまたはプログラムオブジェクトを指定する。この例において、プログラムオブジェクトはURLによって識別されるページである。HTTP要求は、ホスト環境がテストモードで呼び出される必要があることと、さらにテストのターゲットである特定のURLとを示す。
ホスト環境320は、テスト実行シム412によって送信された要求に応答する。要求に応じて、HTTPモジュール450が呼び出される。モジュール450によって代表される特定のHTTPモジュールは、テスト実行シム412からの要求に応じて具体的に作成することができる。要求に応じて以前呼び出されたモジュールが破棄されている場合は、新しいモジュールが使用される。しかし、未使用のモジュールが破棄されていない場合は、要求の処理に使用することができる。ASP.NETのステートレス(stateless)の特性により、HTTPモジュールの再使用はASP.NETホスト環境において可能である。他のホスト環境は、異なる動作を行うことができる。HTTPモジュール450の特定のフォーマットおよび作成の方法は、ホスト環境320の実装によって決まり、テスト要求に応答する任意の適切な方法を使用することができる。
テスト実行シム412からの要求に応じて、HTTPモジュール450はホスト環境における通常の処理に従ってターゲットページを初期化する。このようにして、テスト対象ユニットはホスト環境によって適切に初期化され、テストの準備が整う。この例では、ターゲットページはテスト対象ユニット460として示されている。さらに、HTTPモジュール450はホストアダプタ454をロードし、これをテスト実行シム412に登録し、これによりホストアダプタ454へのインターフェースをテスト実行シム412に公開する。
ホストアダプタ454は、開発環境310へのインターフェースを提供する。図4の例では、ホストアダプタ454はC#関数として実装される。
ホストアダプタ454は、開発環境で実行しているプログラムによってアクセスできるインターフェース480を備えている。ホスト環境320がASP.NETによって提供される、説明される実施形態において、他の環境のプログラムによるアクセスを対象としたあるソフトウェアプログラムへのインターフェースは、あるプログラムが別のプログラムに登録できるようにする.NETリモーティング構成体を通じて公開することができる。ここで、ホストアダプタ454とインターフェースをとるために必要な情報は、.NETレジスタコマンドを使用してインターフェース436を通じてテスト実行シム412が使用できるようになる。
インターフェース480がテスト実行シム412に登録されると、テスト実行シム412はインターフェース480を通じてホストアダプタ454と通信することができる。インターフェース480を通じて、テスト実行シム412は、特定のテストを実行するために使用されるテストアダプタ456上の情報を要求することができる。任意の適切なコマンドを使用して情報を取得することができるが、この例ではインターフェース480のメソッドが使用される。このように、テスト実行シム412はこの場合も、テストアダプタ456のインターフェース482にアクセスすることができる。この実施形態において、テストアダプタ456は、ホスト環境において実行されるすべてのテストの一貫したインターフェースを提供するラッパー(wrapper)である。テストアダプタ456は、C#関数として、または他の適切な方法で実装することができる。
テストアダプタ456は、テスト対象ユニット460で実行される特定のテスト416に特有のユニットテストアダプタ458のインスタンスを作成する。ユニットテストアダプタ458は、C#関数として、または任意の他の適切な方法で実装することができる。テストアダプタ456は、ユニットテストアダプタ458のアクセサと見なすことができる。ユニットテストアダプタ458は、実行時に決定された特定のテスト416を呼び出すことによって特定のテスト対象ユニットに実行時バインドすることができる。実行時バインディングに必要な情報は、リフレクションを通じてまたは他の適切な方法でテスト416から得ることができる。
ユニットテストアダプタ458は、テストアダプタ456との通信が可能なインターフェース484を含んでいる。インターフェース484は、開発環境310で実行するプログラムが、公開されたインターフェース482を通じて通信できるので、開発環境310において公開される必要はない。
ユニットテストアダプタ458はテスト416を呼び出し、テスト416がホスト環境320で実行できるようにする。代替として、テスト関数は、ユニットテストアダプタ458に直接組み込むことができる。
ロードされて正しく構成されると、テスト416は実行することができる。テスト416は、ユニットテストアダプタ458によってロードし、実行できるDLLモジュールにあってもよいが、任意の適切な形態を使用することができる。特定のコマンドおよびコンテキストデータは、開発環境310とホスト環境320の間の確立されているインターフェースを通じて提供することができる。結果は、インターフェース430を通じてエージェント410に戻すことができる。
開発環境とホスト環境のテスト対象ユニットとの間のインターフェースを提供する特定の方法は、ホスト環境の特性によって異なることがある。たとえば、ホスト環境がマイクロソフトOfficeアプリケーションスイートのアプリケーションである場合、テストターゲットとしてWebページを指定するのではなく、開発環境のテストアダプタによって送信されたテスト要求は、テスト対象ユニットを含む特定の文書を指定することができる。
単一のテストを実行するステップは、1つの例において行われる順序に1、2、...9と番号付けされている。ステップ1は、テスト実行シム412とやりとりしているエージェント410を表す。ステップ2は、テスト要求をホスト環境320に送信しているテスト実行シム412を表す。ステップ3は、ホストアダプタ454のインターフェースを登録するHTTPモジュール450を表す。ステップ4は、テスト実行シム412と、テスト実行シム412がテストアダプタ456のインターフェース482を通じて通信できるようにするホストアダプタ454との間の情報の交換を示す。ステップ5は、テスト実行シム412とテストアダプタ456の間の、テストを実行するために必要な情報の通信を表す。ステップ6は、テストを実行するプロセス内のテストアダプタ456とユニットテストアダプタ458との間の通信を示す。ステップ7は、ユニットテストアダプタ458とテスト416との間の通信を示す。テスト416は、それがどのように構成されるべきかについてのデータを含むことができる。さらに、データは、テストを実行する過程の間交換することができる。ステップ8は、テスト対象ユニット460をターゲットとするテストを構成するために必要な、テスト対象ユニット460からのテストアダプタ458によって取得された情報を示す。ステップ9は、開発環境においてテストの結果がエージェント410に送信されて戻されることを示す。ステップは、単一のテストの実行中のデータおよび制御の両方のフローの例を提供するために番号付けされている。実際の実装において、ステップは示されている順序で実行される必要はない。さらに、各々のステップは単一回数で行われる必要はない。たとえば、テストアダプタ414は、複数のインスタンスでコマンドまたはデータをテストアダプタ456に送信することもできる。
図4は、単一テスト416の実行を示している。実際のアプリケーションプログラムのテストにおいては、テストラン時に複数のテストを実行することができる。エージェント410は、テストラン時に多くのテストの起動を制御する可能性が高い。テストランにおける各テストは、各自のテスト実行シム412を使用することができる。テストラン全体に適用可能な属性またはその他の設定は、エージェント410において提供することができる。単一テストに適用可能な属性またはその他の設定は、テスト実行シム412、ユニットテストアダプタ458またはテスト416を通じて適用することができる。
たとえば、テストへの完全なURLがテストごとに指定される必要はない。むしろ、特定のマシンを指定する部分のようなURLのある部分をテスト環境において1度指定することができる。URLへのそれ以降のすべての参照は、そのマシンを参照するように導くことができる。たとえば、特定のページを指定する部分のような、マシンに依存しない部分は、実行されるユニットテストごとに指定することができる。
図5は、前述のソフトウェア構成により可能になる開発環境のさらなる態様を示している。図5は、開発環境310でテストを開発している人間のプログラマが使用できるような、テストエディタへのインターフェース500を示している。インターフェース500は、人間のプログラマがテストプログラムを書いている場合の、文510のようなプログラム文を表示している。
インターフェース500はさらに、本明細書においてポップアップウィンドウとして示されている、補足表示領域512を含んでいる。補足表示領域は、テストプログラムの作成中に人間のユーザーに関連する情報を表示するために使用することができる。この例では、補足表示領域512は、このテストプログラムのターゲットであるテスト対象ユニットにアクセスするために使用されるアクセサに関する情報を表示する。
たとえテストが作成される時点でテスト対象ユニットが定義されていない場合であっても、これにアクセスするために必要な情報は、図5に示すようにアクセサを通じて使用可能にすることができる。このようにして、インテリセンスのような機能は、開発環境において動作することができる。
説明される実施形態において、表示される特定の情報はコンテキストによって決まる。図5に示されている例では、人間のユーザーは命令510の部分をタイプ入力した。命令510は、コードアクセサ内の変数への部分参照を含んでいるが、これはテスト対象ユニットにアクセスするために使用することができる。命令のその部分は、タイプ入力された内容がコードアクセサ内で定義されている変数の名前によって完成される必要があることを識別するのに十分である。したがて、ポップアップウィンドウ512は、コードアクセサ内で定義される変数のリストを含んでいる。変数の完全名を入力するのではなく、ユーザーはポップアップウィンドウ512のリストから対象とする変数を選択することができる。リストから項目を選択することは、その項目の完全な識別子をタイプ入力するようユーザーに求める場合に比べてより簡単であり、エラーを生じる可能性も低くなる。
この手法は、変数の名前を単に表示することに限定されることはない。他のコンテキスト情報に関連して一部の命令が選択のセットを識別するのに十分な情報を提供する場合はいつでも、選択のリストが提示される。手法は、関数、インターフェース、またはプログラムで使用できるその他の構造体に適用することができる。選択肢のセットの識別および表示は、従来技術の場合と同様に行うことができる。ホスト環境においてテスト対象ユニットを実行する手法は、図5に表示されるタイプの情報を作成するために必要な情報を使用できるようにするアクセサの使用に適合する。
本発明の少なくとも1つの実施形態のいくつかの態様について説明してきたが、当業者にはさまざまな変更、修正、および改良が容易に考案されることを理解されたい。
たとえば、前述のソフトウェアアーキテクチャは、ホスト環境および開発環境が実行される特定のハードウェアアーキテクチャに依存しない。ホスト環境および開発環境は、同一のシングルプロセッサシステムまたはマルチプロセッサシステム上で実行することができる。「リモーティング」は、1つのコンピュータ上で異なるホストアプリケーションを実行することにより作成された異なる環境の間で行われることができ、別個の物理ロケーションのコンピュータ、サーバー、またはその他のプロセッサ上で実行するプロセス間で行われる必要はない。
さらに、図2から図4のような図は、開発環境またはホスト環境で実行するソフトウェアコンポーネントを示している。テストは、それがその環境内で使用可能なメソッド、プロパティ、およびその他のコンテキスト情報にアクセスできる場合に、ホスト環境で実行していると言われる。プログラムを作成または呼び出すために使用されるアプリケーションは、プログラムが実行する環境を指示する必要はない。
さらに、プログラムが実行するハードウェアは、その実行環境を決定づける必要はない。具体例として、PDAまたはスマートフォンなどの携帯型電子機器用のアプリケーションをテストすることが望ましい場合、ホスト環境と開発環境との間のすべての対話を.NETリモーティングを通じて行う別個のリモートプラットフォームとしてホスト環境を扱うことが望ましい。代替として、エージェントおよびテストプログラムのすべてまたは一部を、実行する携帯型電子機器にロードすることが望ましい場合もある。
本明細書で使用されているように、テスト対象ユニットで通常は非パブリックであるメソッドおよび変数がアクセサプログラムを通じてリフレクションされることが説明される。さらに一般的には、テスト対象ユニットの任意のパラメータはリフレクションされうる。アクセサプログラムを通じてリフレクションすることができるパラメータの特性またはタイプは、特定のテスト対象ユニットまたはテストが作成されるプログラミング言語によって異なることがある。
テスト結果から作成される用途は、本発明を限定するものではない。テスト結果は、テスト対象ユニットのパフォーマンスの一部の態様に関するデータを提供することができる。パフォーマンス情報の特定のタイプは、特定のテストプログラムによって決まる。パフォーマンス情報は、ユニットが望ましい動作結果を提供するかどうかを示すことができる。代替として、パフォーマンス情報は、ユニットの実行時間に関する情報またはテストの実行中に使用された処理リソースに関する情報を提供することができる。
もう1つの例として、テスト対象ユニットにアクセスする特定のメソッドも、変更されうる。抽象化(abstraction)を使用することは必要ない。代替として、さらに多くの抽象化のレベルを使用することもできる。一例として、図4は、ユニットテストアダプタ458を通じてテストアダプタ456がテスト416にアクセスすることを示している。抽象化の追加のレベルは、ラッパーアラウンドテスト(wrapper around test)416を提供することなどにより、提供することができる。代替として、テストアダプタ456を直接にテスト416にアクセスさせることなどによって、より少ない抽象化のレベルを使用することもできる。
一般に、図で別個のブロックを含むように図示されているプログラムは、簡単にするためにこのような方法で示されている。複数のブロックによって示される関数は、単一の関数、Webページ、またはその他のプログラム要素に結合することができる。代替として、単一ブロックで実行するように示される関数は、複数のプログラム要素により実現することができる。前述の1つのブロックの関数が複数のプログラム要素により実現される場合、この集合体中のこれらのプログラム要素は、単一の機能ブロックであると見なすことができる。逆に、1つのプログラム要素が複数ブロックとして示されている関数を実現する場合、そのブロックは、任意のまたはすべての機能ブロックの実装と見なすことができる。
このような代替方法、変更、および改良は、本開示の一部となることを意図し、本発明の趣旨および範囲内にあることを意図する。したがって、上記の説明および図は、例示のために示されているに過ぎない。
本発明の前述の実施形態は、多数ある方法のどの方法でも実施することができる。たとえば、諸実施形態は、ハードウェア、ソフトウェア、またはこれらの組み合わせを使用して実施することができる。ソフトウェアで実施される場合、ソフトウェアコードは、単一コンピュータで提供されるかまたは複数コンピュータ間で分散されるかにはかかわりなく、任意の適切なプロセッサまたはプロセッサの集合で実行することができる。
さらに、本明細書において概説されているさまざまな方法またはプロセスは、各種のオペレーティングシステムまたはプラットフォームのいずれかを使用する1つまたは複数のプロセッサ上で実行可能なソフトウェアとしてコーディングすることができる。さらに、そのようなソフトウェアは、いくつかの適切なプログラミング言語および/または従来のプログラミングツールまたはスクリプトツールのいずれかを使用して作成することができ、さらに実行可能機械語コードとしてコンパイルすることができる。
この点において、本発明の1つの実施形態は、1つまたは複数のコンピュータまたはその他のプロセッサで実行されるとき、前述の本発明のさまざまな実施形態を実施する方法を実行する1つまたは複数のプログラムで符号化される(たとえばコンピュータメモリ、1つまたは複数のフロッピー(登録商標)ディスク、コンパクトディスク、光ディスク、磁気テープなどの)コンピュータ可読媒体(または複数のコンピュータ可読媒体)を対象としている。1つまたは複数のコンピュータ可読媒体は、そこに格納される1つまたは複数のプログラムが、1つまたは複数の異なるコンピュータまたはその他のプロセッサにロードされて前述の本発明のさまざまな態様を実施することができるように、移植可能にすることができる。
本明細書において「プログラム」という用語は一般的な意味で、コンピュータまたはその他のプロセッサをプログラムして前述の本発明のさまざまな態様を実施するために使用される任意のタイプのコンピュータコードまたは命令のセットを指すために使用される。さらに、本実施形態の1つの態様によれば、実行されるときに本発明の方法を実行する1つまたは複数のコンピュータプログラムが単一のコンピュータまたはプロセッサに存在する必要はなく、本発明のさまざまな態様を実施するために複数の異なるコンピュータまたはプロセッサ間にモジュラ方式で分散できることを理解されたい。
「パラメータ」、「オブジェクト」および「メソッド」などの用語もまた、一般的な意味で使用されている。一部のプログラミング言語は、値を関数に渡すことに関連して「パラメータ」を定義するが、本明細書においてこの用語は、一般的に情報の任意の部分を参照するために使用されている。同様に、一部のプログラミング言語は、特定のプログラミング構成体を参照するために「オブジェクト」および「メソッド」などの用語を使用する。特に明確に指示されていない限り、本明細書に使用されているそのような用語はそのような構成体のみに限定されることはない。
本発明のさまざまな態様は、単独で、組み合わせで、あるいは前述の実施形態で具体的には説明されていないさまざまな配置で使用することができるため、その適用は、上記の説明で示されているかまたは図に示されているコンポーネントの詳細および配置に限定されることはない。たとえば、ある実施形態で説明されている態様は、別の実施形態で説明されている態様といかなる形でも組み合わせることができる。
請求項において請求項の要素を変更するために「第1の」、「第2の」、「第3の」などの順序を示す用語を使用することはそれだけで、ある請求項の要素の別の要素に対する優先度、優先順位、または順序を、あるいは方法の動作が実行される時間的な順序を暗示するものではないが、特定の名前を持つある請求項の要素と、同じ名前を持つ(順序を示す用語の使用を除いて)別の要素とを区別するためのラベルとして使用されているに過ぎない。
さらに、本明細書において使用される表現法および用語は説明を目的としており、限定的なものと見なされるべきではない。本明細書において、「含む(including)」、「含む、備える(comprising)」、または「有する(having)」、「含む(involving)」、およびその変形の使用は、それ以降に記載される項目とその等価物および追加の項目を包含することを意図している。
コンピュータプログラムリスト
ASP.NETで実行するように構成されたテストのサンプルを以下に示す。
Figure 2006268858
ホストアダプタの実装のための擬似コードの例を以下に示す。
Figure 2006268858
テスト実行シムは、以下の形式のインターフェースを通じてそのようなホストアダプタと通信することができる。
Figure 2006268858
クラスがテスト対象ユニットに実行時バインドするときにアクセサを作成するために使用できる単純なアクセサクラス定義の例を以下に示す。
Figure 2006268858
従来技術におけるブラックボックステストを示す概略図である。 従来技術におけるユニットテストを示す概略図である。 本発明の実施形態によるユニットテストを示す概略図である。 本発明の代替実施形態によるユニットテストを示す概略図である。 本発明のもう1つの実施形態によるユニットテストを示す概略図である。 本発明のもう1つの実施形態によるユニットテストを示す概略図である。 本発明の一実施形態によるユーザーインターフェースを示す概略図である。
符号の説明
110,310 開発環境
112,312,410 エージェント
120,320 ホスト環境
124 パブリック
214,330,416 テストA
226,460 テスト対象ユニット
314,412 テスト実行シム
122 パブリック
322,454 ホストアダプタ
450 Httpモジュール
456 テストアダプタ
458 ユニットテストアダプタ

Claims (20)

  1. 第1の環境において動作するプログラムをテストする方法であって、前記プログラムは少なくとも1つのテスト対象ユニットを含む複数のユニットを有し、
    a)第2の環境においてテストエージェントを実行するステップであって、前記テストエージェントは少なくとも1つのテスト対象ユニットをテストするために実行されるテストを指定するステップと、
    b)前記テストエージェントの実行に応答して、前記第1の環境において、指定されたテストを実行するステップであって、前記テストはテスト対象ユニットのパフォーマンス特性を示すテスト結果を生成するステップとを備えることを特徴とする方法。
  2. 前記第1の環境において実行する前記指定されたテストから前記第2の環境において実行する前記テストエージェントにテスト結果を伝達するステップをさらに備えることを特徴とする請求項1に記載の方法。
  3. 前記第1の環境において、指定されたテストを実行するステップは、前記第1の環境においてオブジェクトを作成するステップ、および前記オブジェクトを前記第2の環境のオブジェクトに登録するステップを含むことを特徴とする請求項2に記載の方法。
  4. 指定されたテストを実行するステップは、
    a)前記第1の環境においてテストオブジェクトを実行するステップと、
    b)前記第2の環境の前記オブジェクトと前記テストオブジェクトとの間で前記第1の環境の前記オブジェクトを通じて通信するステップとをさらに備えることを特徴とする請求項3に記載の方法。
  5. 指定されたテストを実行するステップは、前記第1の環境においてテストアダプタを実行するステップと、前記テストアダプタを使って前記指定されたテストを呼び出すステップとを含むことを特徴とする請求項2に記載の方法。
  6. 指定されたテストを実行するステップは、前記テストアダプタを使って前記指定されたテストを示すパラメータを受け取るステップと、前記パラメータに応じて選択されたテストを呼び出すステップとをさらに備えることを特徴とする請求項5に記載の方法。
  7. 前記第1の環境は、拡張可能インターフェースを備え、テストアダプタを実行するステップは、前記拡張可能インターフェースを通じて提供されるコマンドに応答してテストアダプタを前記第1の環境において実行するステップを備えることを特徴とする請求項5に記載の方法。
  8. 前記テスト対象ユニットは非パブリックインターフェースを有し、指定されたテストを実行するステップは、その非パブリックインターフェースを通じて前記テスト対象ユニットを実行するステップを備えることを特徴とする請求項1に記載の方法。
  9. 第1の環境において動作するプログラムをテストする方法であって、前記プログラムはユニットの少なくとも1つがテスト対象ユニットである複数のユニットを有し、
    a)前記第1の環境に前記プログラムをロードするステップと、
    b)前記第1の環境においてオブジェクトのインターフェースを公開するステップと、
    c)前記インターフェースを通じて提供される情報に応じてテストアダプタをロードするために前記オブジェクトを使用するステップと、
    d)少なくとも1つのテスト対象ユニットのテストを実行するためにテストアダプタを使用するステップとを備えることを特徴とする方法。
  10. 前記第2の環境において実行するテストエージェントの実行に応答して前記インターフェースを通じて情報を提供するステップをさらに備えることを特徴とする請求項9に記載の方法。
  11. 第2の環境においてテストエージェントの実行に応答して情報を提供するステップは、開発環境において前記テストエージェントを実行するステップを備えることを特徴とする請求項10に記載の方法。
  12. 第2の環境において実行するテストエージェントの実行に応答して前記インターフェースを通じて情報を提供するステップは、前記第1の環境の属性に基づいてテスト実行シムを選択するステップと前記テスト実行シムを通じて前記インターフェースにアクセスするステップとを備えることを特徴とする請求項10に記載の方法。
  13. 前記第1の環境をテストモードに置くステップをさらに備えることを特徴とする請求項9に記載の方法。
  14. 前記第1の環境において前記プログラムをロードするステップは、アプリケーションプログラムにアドインプログラムをロードするステップを備えることを特徴とする請求項9に記載の方法。
  15. 前記第1の環境は第1のプロセスに作成され、前記第2の環境は第2のプロセスに作成されることを特徴とする請求項10に記載の方法。
  16. a)前記第1の環境においてユニットのパラメータをリフレクションするステップと、
    b)前記テストアダプタを構成するために前記リフレクションされたパラメータを使用するステップとをさらに備えることを特徴とする請求項9に記載の方法。
  17. 複数のホスト環境の1つにおいて動作するプログラムのユニットをテストするためにテストプログラムが開発される開発環境を提供するソフトウェアシステムを実施するステップを実行するためのコンピュータ実行可能命令を有するコンピュータ可読媒体であって、前記コンピュータ実行可能命令は、
    a)テストエージェントを作成するステップと、
    b)複数のホストアダプタの1つを作成するステップであって、各ホストアダプタは、複数のホスト環境の1つにおいてテストプログラムの実行を呼び出すために前記テストエージェントによって使用されるように構成されるステップとを実行することを特徴とするコンピュータ可読媒体。
  18. 前記ソフトウェアシステムは、
    a)テストプログラムの命令の一部を指定するユーザーから入力を受け取るステップと、
    b)前記プログラムのユニットにアクセスするために前記テストプログラムの前記命令で使用されるパラメータに関するコンテキストに応じた情報をユーザーからの入力に応答して選択的に表示するステップとを実行するコンピュータ実行可能命令をさらに備えることを特徴とする請求項17に記載のコンピュータ可読媒体。
  19. 前記ソフトウェアシステムは、前記ユニットからリフレクションされた前記プログラムの前記ユニットに関連するパラメータを受け取るステップを実施するコンピュータ実行可能命令をさらに備えることを特徴とする請求項18に記載のコンピュータ可読媒体。
  20. 前記ソフトウェアシステムは、前記ユニットからリフレクションされた前記プログラムの前記ユニットに関する情報に基づいてテストプログラムを構成するオブジェクトを作成するコンピュータ実行可能命令をさらに備えることを特徴とする請求項17に記載のコンピュータ可読媒体。
JP2006081608A 2005-03-23 2006-03-23 アプリケーションホスト環境においてユニットテストを実行する方法および装置 Pending JP2006268858A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/087,260 US7954088B2 (en) 2005-03-23 2005-03-23 Method and apparatus for executing unit tests in application host environment

Publications (1)

Publication Number Publication Date
JP2006268858A true JP2006268858A (ja) 2006-10-05

Family

ID=36847827

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006081608A Pending JP2006268858A (ja) 2005-03-23 2006-03-23 アプリケーションホスト環境においてユニットテストを実行する方法および装置

Country Status (5)

Country Link
US (1) US7954088B2 (ja)
EP (2) EP2560100A1 (ja)
JP (1) JP2006268858A (ja)
KR (1) KR101246967B1 (ja)
CN (1) CN1838089B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012512489A (ja) * 2008-12-16 2012-05-31 マイクロソフト コーポレーション デバッギングのためのユーザ・スクリプト・コードの変換
JP2022008782A (ja) * 2020-06-28 2022-01-14 バイドゥ オンライン ネットワーク テクノロジー(ペキン) カンパニー リミテッド デバイスデバッグ環境の構築方法及び装置

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8572437B2 (en) * 2005-07-20 2013-10-29 International Business Machines Corporation Multi-platform test automation enhancement
KR20070035266A (ko) * 2005-09-27 2007-03-30 삼성전자주식회사 소프트웨어 검사방법
US20080115114A1 (en) * 2006-11-10 2008-05-15 Sashank Palaparthi Automated software unit testing
US7809988B1 (en) * 2006-12-29 2010-10-05 The Mathworks, Inc. Test environment having synchronous and asynchronous distributed testing
US7945921B2 (en) * 2007-03-01 2011-05-17 Microsoft Corporation Cross application domain late binding to non-local types
KR100946417B1 (ko) * 2007-09-14 2010-03-09 주식회사 신한은행 프로그램 소스코드 테스트 방법
US8245186B2 (en) * 2008-04-03 2012-08-14 Microsoft Corporation Techniques for offering and applying code modifications
US10169199B2 (en) 2008-06-10 2019-01-01 Microsoft Technology Licensing, Llc Automatic model-specific debugger extensions
US8707264B2 (en) * 2010-05-18 2014-04-22 Salesforce.Com, Inc. Methods and systems for testing methods in a multi-tenant database environment
US8745581B2 (en) 2010-06-21 2014-06-03 Touch Technologies, Inc. Method and system for selectively copying portions of a document contents in a computing system (smart copy and paste
KR101459867B1 (ko) * 2010-06-28 2014-11-13 현대자동차주식회사 시스템 테스트 장치
US8826239B2 (en) 2010-10-06 2014-09-02 International Business Machines Corporation Asynchronous code testing in integrated development environment (IDE)
CN102567198B (zh) * 2010-12-30 2014-12-10 中国移动通信集团公司 对应用程序在物理系统环境中进行测试的系统及其方法
EP2687989B1 (en) * 2011-03-15 2022-05-11 Hyundai Motor Company Communication test device and method
JP2013069077A (ja) * 2011-09-21 2013-04-18 Canon Inc システム、情報処理装置およびその制御方法、画像形成装置およびその制御方法、並びにプログラム
WO2015122872A1 (en) * 2014-02-11 2015-08-20 Hewlett Packard Development Company, L.P. Client application profiling
US9514031B2 (en) 2014-09-22 2016-12-06 International Business Machines Corporation Auto-deployment and testing of system application test cases in remote server environments
CN105117243B (zh) * 2015-07-30 2018-07-24 北京奇虎科技有限公司 一种获取应用程序的启动时间的方法和装置
US9823997B2 (en) * 2015-08-11 2017-11-21 Bank Of America Corporation Production resiliency testing system
US10223247B2 (en) * 2016-07-05 2019-03-05 Red Hat, Inc. Generating pseudorandom test items for software testing of an application under test (AUT)
US10372597B2 (en) * 2017-05-03 2019-08-06 International Business Machines Corporation Software testing and verification

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09120366A (ja) * 1995-03-03 1997-05-06 Sun Microsyst Inc 分散アプリケーション・プログラムをデバッグする分散デバッグのためのシステムおよび方法
JP2001051871A (ja) * 1999-08-09 2001-02-23 Ricoh Co Ltd リモートデバッグ装置
JP2002189617A (ja) * 2000-12-22 2002-07-05 Nec Corp 評価システム、及び評価方法

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5751941A (en) * 1996-04-04 1998-05-12 Hewlett-Packard Company Object oriented framework for testing software
US6083281A (en) * 1997-11-14 2000-07-04 Nortel Networks Corporation Process and apparatus for tracing software entities in a distributed system
US6035303A (en) * 1998-02-02 2000-03-07 International Business Machines Corporation Object management system for digital libraries
US6754891B1 (en) * 1998-08-31 2004-06-22 Red Hat, Inc. Debugger system using tracepoints for computer software
US6356946B1 (en) * 1998-09-02 2002-03-12 Sybase Inc. System and method for serializing Java objects in a tubular data stream
US6633888B1 (en) * 1999-02-03 2003-10-14 International Business Machines Corporation Method and apparatus for visually creating and testing object oriented components
US6609130B1 (en) * 1999-02-19 2003-08-19 Sun Microsystems, Inc. Method for serializing, compiling persistent textual form of an object-oriented database into intermediate object-oriented form using plug-in module translating entries according to grammar
US6438559B1 (en) * 1999-04-02 2002-08-20 Sybase, Inc. System and method for improved serialization of Java objects
US6477701B1 (en) * 1999-09-30 2002-11-05 Seiko Epson Corporation Version-adaptive serialization and deserialization of program objects in an object-oriented environment
US20010054172A1 (en) * 1999-12-03 2001-12-20 Tuatini Jeffrey Taihana Serialization technique
US20020010781A1 (en) * 1999-12-30 2002-01-24 Tuatini Jeffrey Taihana Shared service messaging models
US7237230B2 (en) * 2001-03-23 2007-06-26 S2 Technologies, Inc. System and method for generating data sets for testing embedded systems
US6745208B2 (en) * 2001-05-31 2004-06-01 International Business Machines Corporation Method and apparatus for synchronizing an XML document with its object model
US20040201600A1 (en) * 2001-12-14 2004-10-14 Microsoft Corporation Methods and system for providing an XML-based interface description language
US6931409B2 (en) * 2002-01-08 2005-08-16 International Business Machines Corporation Method, apparatus, and program to efficiently serialize objects
US7437713B2 (en) * 2002-01-10 2008-10-14 Microsoft Corporation Automated system that tests software on multiple computers
US7246358B2 (en) * 2002-04-09 2007-07-17 Sun Microsystems, Inc. Methods, system and articles of manufacture for providing an extensible serialization framework for an XML based RPC computing environment
US7150004B2 (en) * 2002-08-21 2006-12-12 International Business Machines Corporation Programmatically serializing complex objects using self-healing techniques
US7143310B2 (en) * 2003-01-22 2006-11-28 Sun Microsystems Inc. Generating standalone MIDlets from a testing harness
US7334162B1 (en) * 2003-01-29 2008-02-19 Sun Microsystems, Inc. Dynamic distribution of test execution
US20040215797A1 (en) * 2003-04-28 2004-10-28 Sun Microsystems, Inc. Creating and analyzing an identifier indicating whether data is in an expected form
US7404186B2 (en) * 2003-05-28 2008-07-22 Microsoft Corporation Signature serialization
US7386836B2 (en) * 2003-06-09 2008-06-10 International Business Machines Corporation Maintaining multiple valid concurrent serialized object versions
US20050071809A1 (en) * 2003-09-29 2005-03-31 Greggory Pulley System and method for serializing objects in a compiled programming language
US7467374B2 (en) * 2003-11-05 2008-12-16 Microsoft Corporation Serialization for structured tracing in managed code
US7676785B2 (en) * 2004-02-13 2010-03-09 Microsoft Corporation Hosted application as a designer in an integrated development environment
US7661096B2 (en) * 2004-02-13 2010-02-09 Microsoft Corporation Interaction with nested and non-nested streams
US7398469B2 (en) * 2004-03-12 2008-07-08 United Parcel Of America, Inc. Automated test system for testing an application running in a windows-based environment and related methods
US7366956B2 (en) * 2004-06-16 2008-04-29 Hewlett-Packard Development Company, L.P. Detecting data races in multithreaded computer programs
JP4902282B2 (ja) * 2006-07-12 2012-03-21 株式会社日立製作所 業務システム構成変更方法、管理コンピュータ、および、業務システム構成変更方法のプログラム
CN101398779A (zh) * 2007-09-26 2009-04-01 国际商业机器公司 测试逻辑与服务器端对象的松耦合式测试方法和系统
US7860983B1 (en) * 2008-08-11 2010-12-28 The United States Of America As Represented By The Secretary Of The Navy Enterprise identity orchestration server

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09120366A (ja) * 1995-03-03 1997-05-06 Sun Microsyst Inc 分散アプリケーション・プログラムをデバッグする分散デバッグのためのシステムおよび方法
JP2001051871A (ja) * 1999-08-09 2001-02-23 Ricoh Co Ltd リモートデバッグ装置
JP2002189617A (ja) * 2000-12-22 2002-07-05 Nec Corp 評価システム、及び評価方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012512489A (ja) * 2008-12-16 2012-05-31 マイクロソフト コーポレーション デバッギングのためのユーザ・スクリプト・コードの変換
US9632909B2 (en) 2008-12-16 2017-04-25 Microsoft Technology Licensing, Llc Transforming user script code for debugging
JP2022008782A (ja) * 2020-06-28 2022-01-14 バイドゥ オンライン ネットワーク テクノロジー(ペキン) カンパニー リミテッド デバイスデバッグ環境の構築方法及び装置

Also Published As

Publication number Publication date
KR101246967B1 (ko) 2013-04-01
EP2560100A1 (en) 2013-02-20
US20060218446A1 (en) 2006-09-28
CN1838089B (zh) 2010-10-13
CN1838089A (zh) 2006-09-27
KR20060102479A (ko) 2006-09-27
EP1705567A2 (en) 2006-09-27
US7954088B2 (en) 2011-05-31
EP1705567A3 (en) 2010-04-28

Similar Documents

Publication Publication Date Title
JP2006268858A (ja) アプリケーションホスト環境においてユニットテストを実行する方法および装置
EP3030969B1 (en) Automated application test system
US8954929B2 (en) Automatically redirecting method calls for unit testing
CN104756086B (zh) 用于调试依领域而定的语言的系统和方法
EP3301575B1 (en) Using an element in a first model to call a portion of a second model
US8201143B2 (en) Dynamic mating of a modified user interface with pre-modified user interface code library
Saraswat Java is not type-safe
US8887141B2 (en) Automatically modifying a native code module accessed from virtual machine bytecode to determine execution information
US20080320071A1 (en) Method, apparatus and program product for creating a test framework for testing operating system components in a cluster system
US20080209405A1 (en) Distributed debugging for a visual programming language
US10042658B1 (en) Automatically adding bytecode to a software application to determine network communication information
JP2006099737A (ja) テスト自動化のスタック階層化
US10275236B2 (en) Generating related templated files
CN117422026B (zh) 一种基于risc-v架构的处理器验证系统
US7385927B2 (en) Methods and structure for improved testing of embedded systems
US7500149B2 (en) Generating finite state machines for software systems with asynchronous callbacks
Heidenreich et al. Safe composition of transformations
Busch et al. Model transformers for test generation from system models
JP2005174045A (ja) ソースプログラム変換装置、ソースプログラム変換方法、ソースプログラム変換プログラム、および、プログラム記録媒体
Böckenkamp roslaunch2: versatile, flexible and dynamic launch configurations for the robot operating system
Vuli et al. Maximizing test asset re-use across MIL, SIL, and HIL development platforms
CN119065974A (zh) 自动化测试方法、装置、设备及存储介质
CN114490398A (zh) 用于对消费方对象进行测试的方法、装置、设备
Ballance Co-Developing IP and SoC Bring-up with PSS
Ballance Co-Developing Firmware and IP with PSS

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090223

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111031

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111213