JP4961123B2 - 自動化されたテストケース実行に関して疎結合された自動化されたテストケース検証 - Google Patents

自動化されたテストケース実行に関して疎結合された自動化されたテストケース検証 Download PDF

Info

Publication number
JP4961123B2
JP4961123B2 JP2005234740A JP2005234740A JP4961123B2 JP 4961123 B2 JP4961123 B2 JP 4961123B2 JP 2005234740 A JP2005234740 A JP 2005234740A JP 2005234740 A JP2005234740 A JP 2005234740A JP 4961123 B2 JP4961123 B2 JP 4961123B2
Authority
JP
Japan
Prior art keywords
expected
application
state
test
test case
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.)
Active
Application number
JP2005234740A
Other languages
English (en)
Other versions
JP2006099742A (ja
Inventor
エム.ウルリッチ アダム
ディー.ギャラシャー マイケル
ジェー ハンター マイケル
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 JP2006099742A publication Critical patent/JP2006099742A/ja
Application granted granted Critical
Publication of JP4961123B2 publication Critical patent/JP4961123B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software

Landscapes

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

Description

本発明は、テスト用途のためのソフトウェアに関し、詳細には、かかるテストソフトウェアにおける期待結果と実結果の間の疎結合された(loosely coupled)比較に関する。
本出願は、本出願と共に出願された"System and Method for Selecting Test Case Execution Behaviors for Reproducible Test Automation"という名称の米国特許出願整理番号MSFT−4148、および本出願と共に出願された"Test Automation Stack Layering"という名称の米国特許出願整理番号MSFT−4150に関連している。
ソフトウェア開発のライフサイクルにおける主要ステージは、設計フェーズ、コーディングフェーズ、コード完成フェーズ、アルファフェーズ、ベータフェーズであり、そして最終的にはマーケットへのリリースとなる。設計フェーズ中に、このソフトウェア製品では、顧客の問題に対処することになり、このソフトウェア製品の機能が定義される。一般的に、この機能仕様の完成により、設計フェーズの終了が示される。コーディングフェーズについては、すでに開始されていてもよい。コード完成フェーズについては、このコードが書き終えられているが、必ずしもデバッグされているとは限らないときに到達される。アルファフェーズは、この製品が安定になる時点を示している。すなわち、主要なバグのほとんどが見出されている。ベータフェーズにおいて、この製品は、すべての主要なバグがなくなっていることが理想的である。したがって、残存するバグは、基本的に無害なものしかないはずである。この製品が最終的な品質保証チェックリストをパスするときには、この製品は、マーケットへのリリースの準備が整っている。
動作しないソフトウェアは誰も欲しないので、テストは、このライフサイクルのうちの重要な部分であり、いくつものフェーズにまたがる可能性がある。ソフトウェアテストは、テストケース(または、さらに可能性が高いのは1組のテストケース)を考案すること、このテストケースを入力として用いてこのソフトウェアを実行すること、ならびにこのテストケースを入力としてもつこのソフトウェアの性能が、この期待結果をもたらすことを検査することを含む。ソフトウェアテストは、人間が手動で行い、あるいはプログラム的に行うことができ、これについては自動化ソフトウェアテストと呼ばれる。理想的には、このソフトウェアのテストは、このソフトウェアのライフサイクルにおいてできる限り早期に開始すべきである。しかし、一般には、この設計フェーズが完了するまでは期待結果を決定することができないので、設計フェーズが完了するまで、このソフトウェアは、全くテストすることができない。一般的に、コーディングフェーズ中において、開発者は、コードを書くときに自分のコードを手作業でテストする。自動化ソフトウェアテストについては通常、この開発プロセスにおけるずっと後になるまで開始することができない。
時には、行われるテストが、コーディングするときに手作業でテストする開発者によってしか行われないこともある。しかし、自分自身の仕事をテストする開発者は、そのコードにそれほど気分的にお金を払いたくない誰かなら見出すことになるバグを見落としてしまう可能性が高い。さらに、この開発者のテストの範囲は、一般的に開発者のコードの機能、ならびに開発者のコードと限られた数の他のソフトウェアアプリケーションとの統合だけに限定されている。
これらの欠点に対処するために、多数のソフトウェア開発ハウスは、しばしば少なくとも部分的に自動化されたテスト技法を使用して、このソフトウェアのテストも行う別のソフトウェアテストグループを有する。一般的に、このテストグループは、テストケースを書き実行することにより、複数の機能および複数のアプリケーションにまたがる複雑なインタラクションについてテストを行う。この製品ライフサイクルにおいて、早ければ設計フェーズさえ含めて早期にこのテストグループが関与することにより、機能仕様の矛盾の識別、テストするのが困難な領域の識別などを含めて多くの利益が得られることについては、一般に合意がなされている。しかし、一般に、機能定義、実装およびUI(user interface:ユーザインターフェース)チューニングが絶えず変化する中で、各テストケースを最新に保つために必要とされる努力により、このアプローチは非現実的なものになってしまう。したがって、テストケースを書き実行することは、一般的に製品開発の最終段階で行われるあわただしい事柄となる。したがって、テスト、特に自動化テストは、永久に時勢に取り残されてしまう傾向にある。ソフトウェア製品のライフサイクルにおいてできる限り早期に、理想的にはその設計フェーズ中において、テストケースを書き、自動化テストを使用する方法があるとすれば、助けとなるはずである。
テストケーススイート(suite of test case)の開発は、これが行われるときはいつでも難しい課題となる。あるアプリケーションの特定の機能をテストするためには、非常に多数の組のテストを書く必要がある。例えば、あるアプリケーションは、マウス、キーボード、デジタイザ、ユーザ補助(accessibility)ソフトウェアを介して、プログラム的になど、ある機能との多数のインタラクションモード(mode of interaction)を可能にすることができる。したがって、この機能についての包括的テストを行うためには、テストスイートは、マウスを介してこの機能とインタラクションを行う1組のテスト、(ちょうどユーザが行うようにテキストをタイプして)キーボードを介してこの機能とインタラクションを行う1組、デジタイザを介してこの機能とインタラクションを行う1組、ユーザ補助ソフトウェアを介してこの機能とインタラクションを行ってデフォルトアクション(default action)を呼び出し、そうでなければユーザ補助アプリケーションを模倣する1組、およびこのアプリケーションのコーディングモデルを介してこの機能とインタラクションを行う1組などを含んでいる必要がある。生成されたテストケーススイートが、この機能またはアプリケーションの包括的テストを確実に行うようにし、さらにこの包括的テストを行うために書く必要があるテストケース総数を低減する方法があれば、助けとなるはずである。
さらに、これらのテストの各組におけるロジックの多くまたはすべては、他のテストの組におけるロジックと同一であり、一般的に処理結果の検証の多くまたはすべても同様に同一となる。したがって、多数のテストは、同一または非常によく似ており、単に実行オプションが変化しているだけである。例えば、前述の入力のすべての複数の形式では、期待結果が同一の可能性がある。したがって、これらの各入力ソースについてのテストケースを書くためには、一般的にこれらの各入力ソースについてのテストを実行するための別の方法を書く必要があり、このテストスクリプトの残りのほとんどを複製する必要がある。この同じテストを些細な変化だけで何度も何度も書くことは、うんざりするような時間のかかることである。この複製によるコーディングをなくし、またはかなり低減し、書く必要があるテストケースの総数を低減する方法があれば、助けとなるはずである。
(結果の検証、または検証と呼ばれる)このテストケースを実行した実結果が、期待結果と一致するかどうかを判定するために書かれるコードは、しばしばこのテストケース内に含まれる。特定の結果検証の詳細を変更し、あるいは新しい結果検証を追加するには、一般的に各テストケースの修正が必要になる。検証コードがこのテストケースから別になっており、テストケースを理解することがより簡単になり、この検証コードを再利用し維持することがより簡単になれば、助けとなるはずである。
実行の詳細は、しばしばこのテストケース中にハードコード化され、このテストケースが書かれる前にこの設計フェーズが完了していることが必要とされる。特定の実行の詳細ではなくて、ユーザアクションの観点からテストケースを定義し、その結果、このソフトウェア開発ライフサイクルにおいてより早期にテストケースを書くことができる方法があれば、助けとなるはずである。アプリケーションをテストすることは、このアプリケーションの初期開発における極めて重大なステップである。アプリケーションをテストすることは、このアプリケーションに対する修正を実装する際にも非常に重要である。開発者、科学者、製造業者などは、このテストフェーズに多くの努力を行う。かかるテストは、このアプリケーションが特定の刺激に対して期待される方法で応答するようにする助けを行う。このテストは、一般的にテストケースの実行と、テストケースの実行結果の検証を介して完了される。
テストケースは、一般的にアプリケーションに対して刺激を課する。テストケースはまた、このアプリケーションが、期待される方法で応答し、予期しない方法では応答しないことも検証する必要がある。包括的には、全体アプリケーション状態の多くを検証して、この刺激が期待結果をもたらし、予期せぬ結果はもたらさないようにする必要がある。
テストケースは、一般的にアプリケーションの特定の機能または態様をテストする目的のために実行される。同様に、このテストケースの結果の検証では、テストすることを意図した機能に焦点を合わせることもできる。しかし、このテストケースの実行は、このアプリケーション状態の他の態様に影響を及ぼすこともあり、またそれを変化させることもある。かかる態様は、このテストケースの目的からは逸脱しているように見えることもある。これらの逸脱した態様が非常に多いこともあり、このテストケースを開発するテスタ(tester)にとって、それらの態様のすべて、またはそのほとんどでさえ定量化し、または指定することが難しいこともある。
テストケースコードを書いてこのアプリケーション状態の多くを検証することは、様々な理由から問題があることが判明している。比較的簡単なアプリケーションでさえ、このアプリケーションを包括的にテストするには、おびただしい数のテストケースが必要とされることもある。各テストケースに対して非常に長い詳細にわたる検証コードを追加することは、たとえ解決できないタスクでないにしても手ごわいはずである。さらに、テストケースメンテナンスは通常、テストケース作成(以上ではないにしてもそれ)と同様に労働集約型の時間のかかるものである。アプリケーションが変更されるときには、このテストケースならびに検証コードも変更してこのアプリケーションと引き続き互換性があるようにする必要がある。各テストケースに非常に長い包括的な検証コーディングを追加することは、たとえ不可能でないにしてもかかるメンテナンスを非実用的にするはずである。
したがって、各テストケースと共に膨大でうんざりするような時間のかかる検証コードを書く必要なしに、アプリケーションに適用されるテストケースの結果を包括的に検証する必要がある。また、セットアップし、実行し、または維持する、このテスタによる最小限の明示的なアクションしか必要としない検証についての必要性も存在する。
テストケース実装の検証は、このテストケースから分離することができ、また専用の検証マネージャによって完了することもできる。このテストケースは、どのような検証も含む必要がないようにすることができ、実際に、このテスタは、実施されている検証のすべてについて知る必要があるとさえ限らない。各テストケースが、アクションの結果の特定の検証を可能にせずにアクションを実行できるように、この検証マネージャを使用して、1つまたは複数のテストケースを検証することができる。
専用検証マネージャを用いて、検証をより包括的なものにすることができる。この検証マネージャは、期待状態ジェネレータ(expected state generator)の大規模なライブラリを使用してテストケースの結果をより包括的に検証することができる。このライブラリ中に含まれる各期待状態ジェネレータは、アプリケーションの様々な別のコンポーネントおよび異なるコンポーネントに対して焦点を合わせることができる。ある期待状態ジェネレータでは、このテスタがこのテストケースの目的に特に関連すると考えることができるアプリケーション状態の一態様に焦点を合わせることができる。第2の期待状態ジェネレータでは、このテスタが、このテストケースの目的から逸脱しており、または無関係であると考えることができるアプリケーションの一態様に焦点を当てることもできる。したがって、テストケースに含まれる焦点の合わせられた検証を行う代わりに、このライブラリは、すべてのテストケースについての広範な検証を可能にすることができる。
この検証マネージャは、指定されたアプリケーションプロパティの期待値(expected value)をこれらの同じプロパティの実効値(actual value)と比較することによってテストケース結果を検証することができる。この比較を行う際に、この検証マネージャは、現行アプリケーション状態と期待アプリケーション状態が実質的に合っていないインスタンスを決定できることになる。最後に、この検証マネージャは、任意のテスト故障をそのテストケース、テストケースイグゼキュタ(test case executor)、または他の指定された任意のエンティティに対して伝えることもできる。
例えばこのテストケースがグラフィックアプリケーションを呼び出して青色の長方形を書くときに、ファイルメニュー上のボタンの状態が検証されていることさえテストケースが知らなくてもよいように、この検証プロセスは、完了することができる。この包括的な検証を得るに際しては、適切なパラメータを用いてこのアクションを実行すること以外に、このテスタについてのアクションは必要とされない。
さらに、この検証がアップデートまたは変更されるときに、テストケースのメンテナンスは、最小限にされ、または取り除かれる。例えば、アプリケーションがアップデートされ、それとも変更されるときに、この検証マネージャまたは期待状態ジェネレータは、継続してこのアプリケーションと整合しているようにするために同様にして改訂を要することもある。この検証はこのテストケースから分離できるので、このテストケースについては、どのようなメンテナンスも必要がないようにすることができる。
さらに、テストケースが、アプリケーションの特定のコンポーネントの故障をもたらすときには、さらにこの同じ故障についての通知を絶えず受け取ることなくテストケースを実行することもできる。この機能により、故障を考慮し、このアプリケーションのテストを継続して行う機会がもたらされる。
前述の概要、ならびに以下の例示の実施形態の詳細な説明については、添付図面を併せ読むときにさらに良好に理解されよう。本発明を例証する目的で、図面中には本発明の代表的な構成が示されている。しかし、本発明は、開示の特定の方法および手段だけに限定されるものではない。
概要
本発明の実施形態の一例においては、その検証プロセスは、そのテストケースから分離される。期待状態ジェネレータと呼ばれる各検証エレメントは、検証マネージャと呼ばれる専用デバイスに記憶することができる。各検証プロセスをこれらの個別のテストケースから分離することによって、各テストケースは、各テストケース中で検証コードを複製する必要なしに、より包括的に検証することができる。さらに、この検証マネージャは、それぞれが他とは独立に動作し、それぞれがそのアプリケーションの1つまたは複数のコンポーネントの期待状態を計算する非常に多くの期待状態ジェネレータを含むこともできる。検証は、オフライン、すなわちテストケース実行中以外の時、および/またはオンライン、すなわちテスト実行中に、完了することができる。
期待状態ジェネレータは、ローカル検証フレームワーク中に埋め込むこともでき、また動的にロードされ、ランタイムにおいて有効および無効にされる独立なオブジェクトとすることもできる。かかる期待状態ジェネレータは、データベースまたはネットワークロケーションからロードすることができる。基本的に、この期待状態ジェネレータは、この検証フレームワークにプラグインすることができる。
これらの個別のテストケースから検証を分離することにより、アプリケーションのより包括的なテストが可能になる。さらに、専用検証マネージャを有することにより、検証コードを各テストケース中に含める必要なしに、テストケースを検証することができるようになる。検証コードは各テストケース中に含まれていないので、アプリケーションにおける修正に対応するように検証アルゴリズムが変更されるときに、かかる変更がこれらのテストケースに影響を及ぼすことはない。したがって、検証をテストケースから分離することにより、これらのテストケースに対して必要とされるメンテナンスを減少させることができる。
コンピューティング環境の例
図1および以下の説明では、本発明の実施形態の一例を実装することができる適切なコンピューティング環境の簡潔な一般的な説明を行うことを意図している。しかし、ハンドヘルドデバイス、ポータブルデバイス、および他のすべての種類のコンピューティングデバイスが、本発明に関連して使用されることについて企図されていることを理解されたい。汎用コンピュータが以下では説明されているが、これは一例にすぎないものである。本発明は、ネットワークサーバのインターオペラビリティおよびインタラクションを有する小型軽量クライアント上で動作可能とすることもできる。したがって、本発明の実施形態の一例は、非常にわずかなまたは最小限のクライアントリソースしか関与していない、ネットワーク化されたホストサービスの環境、例えばこのクライアントデバイスが、単にワールドワイドウェブに対するブラウザまたはインターフェースとしてしか機能しないネットワーク環境中で実装することもできる。
必要ではないが、本発明は、開発者またはテスタが使用するためのAPI(application programming interface:アプリケーションプログラミングインターフェース)を介して実装し、または1つまたは複数のコンピュータ(例えば、クライアントワークステーション、サーバ、または他のデバイス)が実行する、プログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で説明されることになるネットワークブラウジングソフトウェア(network browsing software)内に含め、あるいはその両方を行うことができる。一般に、プログラムモジュールは、個々のタスクを実施し、または個々の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含んでいる。一般的にこのプログラムモジュールの機能は、様々な実施形態中で必要に応じて結合し、または分散することができる。さらに、本発明は、他のコンピュータシステムコンフィギュレーションを用いて実行することができることが当業者には理解されよう。本発明と共に使用するのに適したものとすることができる他のよく知られているコンピューティングシステム、コンピューティング環境、および/またはコンピューティングコンフィギュレーションには、それだけには限定されないが、PC(personal computer:パーソナルコンピュータ)、現金自動預け払い機、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラマブルな家電製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどが含まれる。本発明の一実施形態はまた、分散コンピューティング環境中でも実行することができ、ここでは、タスクは、通信ネットワークまたは他のデータ伝送媒体を介してリンクされるリモート処理デバイスによって実施される。分散コンピューティング環境においては、プログラムモジュールは、メモリストレージデバイスを含めて、ローカルコンピュータストレージ媒体中にもリモートコンピュータストレージ媒体中にも配置することができる。
したがって、図1は本発明を実装することができる適切なコンピューティングシステム環境100の一例を示すが、以上で明らかにされたように、コンピューティングシステム環境100は、適切なコンピューティング環境の一例にすぎず、本発明の用途または機能の範囲についてどのような限定を示唆することも意図してはいない。また、コンピューティング環境100は、例示の動作環境100中に示されるコンポーネントの任意の1つまたは組合せに関連したどのような依存性または要件を有するものとも解釈すべきではない。
図1を参照すると、本発明を実装するシステムの一例は、コンピュータ110の形態で汎用コンピューティングデバイスを含んでいる。コンピュータ110のコンポーネントは、それだけには限定されないが、処理装置120、システムメモリ130、およびこのシステムメモリを含めて様々なシステムコンポーネントを処理装置120に結合するシステムバス121を含むことができる。システムバス121は、メモリバスまたはメモリコントローラ、ペリフェラルバス、および様々なバスアーキテクチャのうちのどれかを使用したローカルバスを含めて、いくつかのタイプのバス構造のうちのどれにすることもできる。限定するものではないが例として、かかるアーキテクチャは、ISA(Industry Standard Architecture:業界標準アーキテクチャ)バス、MCA(Micro Channel Architecture:マイクロチャネルアーキテクチャ)バス、EISA(Enhanced ISA:拡張ISA)バス、VESA(Video Electronics Standards Association:ビデオエレクトロニクス規格協会)ローカルバス、および(メザニン(Mezzanine)バスとしても知られている)PCI(Peripheral Component Interconnect:ペリフェラルコンポーネント相互接続)バスを含んでいる。
コンピュータ110は、一般的に様々なコンピュータ読取り可能媒体を含んでいる。コンピュータ読取り可能媒体は、コンピュータ110がアクセスすることができる使用可能な任意の媒体とすることができ、揮発性媒体および不揮発性媒体、着脱可能媒体および固定媒体を含んでいる。限定するものではないが例として、コンピュータ読取り可能媒体は、コンピュータストレージ媒体および通信媒体を含むことができる。コンピュータストレージ媒体は、コンピュータ読取り可能命令、データ構造、プログラムモジュール、他のデータなどの情報の記憶のための任意の方法または技術で実装される揮発性媒体および不揮発性媒体、着脱可能媒体および固定媒体を含んでいる。コンピュータストレージ媒体は、それだけには限定されないが、RAM(random access memory:ランダムアクセスメモリ)、ROM(read−only memory:読取り専用メモリ)、EEPROM(Electrically−Erasable Programmable Read−Only Memory:電気的に消去可能なプログラマブルな読取り専用メモリ)、フラッシュメモリまたは他のメモリ技術、CDROM(compact disc read−only memory:コンパクトディスク読取り専用メモリ)、DVD(digital versatile disk:デジタル多用途ディスク)または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは所望の情報を記憶するために使用することができ、コンピュータ110によってアクセスすることができる他の任意の媒体を含んでいる。通信媒体は、一般的に搬送波や他の搬送メカニズムなどの被変調データ信号の形のコンピュータ読取り可能命令、データ構造、プログラムモジュールまたは他のデータを実施し、任意の情報配信媒体を含んでいる。この用語「被変調データ信号」は、その1つまたは複数の特性が、その信号中の情報を符号化するようにして設定または変更された信号を意味する。限定するものではないが例として、通信媒体は、有線ネットワークや直接配線接続などの有線媒体と、音響、RF(radio frequency:無線周波数)、赤外線、他の無線媒体などの無線媒体を含んでいる。以上のうちの任意の組合せもまた、コンピュータ読取り可能媒体の範囲内に含められるべきである。
システムメモリ130は、ROM131やRAM132などの揮発性メモリ、および/または不揮発性メモリの形態のコンピュータストレージ媒体を含んでいる。起動中などにコンピュータ110内のエレメント間で情報を転送する助けをする基本ルーチンを含むBIOS(basic input/output system:基本入出力システム)133は、一般的にROM131に記憶される。RAM132は一般的に、処理装置120にとって直ちにアクセス可能であり、または処理装置120によって現在動作させられており、あるいはその両方が行われるデータおよび/またはプログラムモジュールを含んでいる。限定するものではないが例として、図1は、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137を示している。RAM132は、他のデータおよび/またはプログラムモジュールを含むこともある。
コンピュータ110は、他の着脱可能/固定の、揮発性/不揮発性コンピュータストレージ媒体を含むこともできる。例にすぎないが、図1は、固定不揮発性磁気媒体から情報を読み取り、それに情報を書き込むハードディスクドライブ141、着脱可能な不揮発性磁気ディスク152から情報を読み取り、それに情報を書き込む磁気ディスクドライブ151、ならびにCD−ROMや他の光媒体など着脱可能な不揮発性光ディスク156から情報を読み取り、またはそれに情報を書き込む光ディスクドライブ155を示している。この例の動作環境中で使用することができる他の着脱可能/固定の、揮発性/不揮発性コンピュータストレージ媒体には、それだけには限定されないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどが含まれる。ハードディスクドライブ141は、一般的にインターフェース140などの固定メモリインターフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は、一般的にインターフェース150などの着脱可能なメモリインターフェースによってシステムバス121に接続される。
前述の図1に示すこれらのドライブおよびこれらに関連するコンピュータストレージ媒体は、コンピュータ110のためのコンピュータ読取り可能命令、データ構造、プログラムモジュール、および他のデータのストレージを提供する。図1において、例えばハードディスクドライブ141は、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147を記憶するものとして示されている。これらのコンポーネントは、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137と同じまたは異なるものとすることが可能である。オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147には、少なくともこれらが異なるコピーであることを示すためにここでは異なる番号が付与されている。ユーザは、キーボード162や一般的にマウス、トラックボールまたはタッチパッドと呼ばれるポインティングデバイス161などの入力デバイスを介してコンピュータ110にコマンドおよび情報を入力することができる。他の入力デバイス(図示せず)は、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどを含むことができる。これらおよび他の入力デバイスはしばしば、システムバス121に結合されるユーザ入力インターフェース160を介して処理装置120a〜fに接続されるが、これらは、パラレルポート、ゲームポートまたはUSB(universal serial bus:ユニバーサルシリアルバス)など他のインターフェースおよびバス構造によって接続することもできる。
モニタ191または他のタイプのディスプレイデバイスもまた、ビデオインターフェース190などのインターフェースを介してシステムバス121に接続される。モニタ191に加えて、コンピュータはまた、スピーカ197やプリンタ196など他のペリフェラル出力デバイスを含むこともでき、これらの出力デバイスは、出力ペリフェラルインターフェース195を介して接続することができる。
コンピュータ110は、リモートコンピュータ180など1つまたは複数のリモートコンピュータに対する論理接続を使用してネットワーク環境中で動作することもできる。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の共通ネットワークノードとすることができ、一般的にコンピュータ110に関連して以上で説明したエレメントの多くまたはすべてを含んでいるが、メモリストレージデバイス181だけしか、図1には示していない。図1に示す論理接続は、LAN(local area network:ローカルエリアネットワーク)171およびWAN(wide area network:ワイドエリアネットワーク)173を含んでいるが、他のネットワークを含んでいてもよい。かかるネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットにおいて、一般的なものである。
LANネットワーキング環境中で使用されるときには、コンピュータ110は、ネットワークインターフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーキング環境中で使用されるときには、コンピュータ110は、一般的にインターネットなどのWAN173上で通信を確立するためのモデム172または他の手段を含んでいる。モデム172は、内蔵または外付けとすることができるが、ユーザ入力インターフェース160または他の適切なメカニズムを介してシステムバス121に接続することができる。ネットワーク環境においては、コンピュータ110に関連して示すプログラムモジュール、またはその一部分は、このリモートメモリストレージデバイスに記憶することもできる。限定するものではないが例として、図1は、リモートアプリケーションプログラム185をメモリデバイス181上に常駐するものとして示している。図に示すこれらのネットワーク接続は、例示的なものであり、コンピュータ間で通信リンクを確立する他の手段を使用することもできることが理解されよう。
コンピュータ110または他のクライアントデバイスは、コンピュータネットワークの一部分として展開できることが当業者には理解することができよう。この点で、本発明は、任意数のメモリユニットまたはストレージユニット、ならびに任意数のストレージユニットまたはボリュームにまたがって行われる任意数のアプリケーションおよびプロセスを有する任意のコンピュータシステムに関する。本発明の一実施形態は、リモートストレージまたはローカルストレージを有する、ネットワーク環境中で展開されるサーバコンピュータおよびクライアントコンピュータを伴う環境に対して適用することができる。本発明は、プログラミング言語機能、解釈機能および実行機能を有するスタンドアロンコンピューティングデバイスに適用することもできる。
テストケース実行に関して疎結合されたテストケース検証のためのシステムおよび方法
図2は、本発明の一実施形態による、テストケース実行に関して疎結合されたテストケース検証のためのテスト検証システム1のブロック図である。このシステム1は、図1に関して説明したコンピュータ110とすることもできるコンピュータ上に常駐することができる。システム1は、以下のもの、即ち検証マネージャ30、テストケース20、コンペアラ35、期待アプリケーション状態データ構造36、現行アプリケーション状態データ構造37、およびデータベース31のうちの1つまたは複数を含むことができる。このシステムは、テストすべきアプリケーション10を含むことができる。このアプリケーション10は、任意のプロセス、マシン、製品、または組成物、あるいはその任意の改良とすることができる。アプリケーション10はまた、任意のプログラム、ソフトウェア、ハードウェア、デバイス、メカニズム、または材料、あるいはその任意の改良とすることもできる。例えば、アプリケーション10は、任意のコンピューティングシステム上で実行されるソフトウェアプログラムであってもよい。また、例えばアプリケーション10は、あるデバイスが、ドアノブを叩いて、このドアノブ、このドアノブが取り付けられたドア、このドアに取り付けられたヒンジ、このヒンジが取り付けられたドアフレームなどの強度、弾力性、操作性をテストするドアテストメカニズムであってもよい。アプリケーション10については、最初のアプリケーションの開発中、以前のアプリケーションのアップデートされたバージョン、エンドユーザが何らかの方法で修正している以前にリリースされたアプリケーションなどであってもよい。
アプリケーション10は、図1においてテストケース20a、b、c...fなどによって表される1つまたは複数のテストケースによってテストすることができる。テストケース20a〜fは、統合テストまたは機能テストのために呼び出すことができる。統合テストは、複数の相互作用するコンポーネントが結合し、一緒に動作し、互いに影響を及ぼす方法についてテストする。機能テストにおいては、このテストケースは、テストケースの特定の機能動作に対して焦点を合わせる。
一般に、各テストケース20a〜fは、アプリケーション10に対して適用すべき明確なパラメータを伴う明確なアクションを含んでいる。これらのテストケース20a〜fはそれぞれ、アプリケーション10が実行すべき1つまたは複数のステップを含むことができる。これらの各テストケース20a〜fは、アプリケーション10に適用される1つのテスト、または一連のテストであってもよい。テストケース20a〜fは、例えばC、C#、C++、パスカル(Pascal)、オブジェクト指向言語などの適切な任意のプログラミング言語で書くことができる。テストケース20a〜f、またはテストケース20a〜fの組合せでは、例えばグラフィックアプリケーションを呼び出して、様々なカラーの他の形状を含むドキュメント上に青色の長方形を描くことができる。テストケース20a〜fはまた、コンピュータプログラミング言語に無関係とすることもできる。例えば、テストケース20aは、ドアに取り付けられたドアノブに対して4フィート(121.9センチメートル)上に30°の角度でつるされた10ポンド(4.54kg)のモール(maul)の手動レリーズ(manual release)を呼び出すことができる。この明細書の全体にわたって提供されるグラフィックアプリケーション、ドアノブアプリケーションおよび他の任意の例は、本出願の請求範囲を決して限定するものではなく、その代わりに理解を容易にするために説明される例示の実施形態にすぎないことが理解されよう。
図2に示すテストケース20a〜fはそれぞれ、アプリケーション10の異なる態様をテストすることができる。テストケース20a〜fは、単に可能性のあるテストケースを表しているにすぎず、アプリケーション10をテストする任意数のテストケース20a〜fが存在し得ることを理解されたい。さらに、各テストケース20a〜fは、同時にまたは異なる時刻に実行することもできることを理解されたい。さらに、例えばテストケース20aは、1回実行することができるが、テストケース20eは、10回実行することもできることを理解されたい。さらに、テストケース20a〜fは、テスタによって実行することもできることを理解されたい。代替実施形態においては、これらのテストケースは、テストケースイグゼキュタまたは同様なデバイスによって実行することができる。
本発明の実施形態の一例においては、テストケース20a〜fは、検証マネージャ30と直接情報をやりとりすることができる。本発明の代替実施形態においては、テストケース20a〜fは、検証マネージャ30と情報をやりとりする他のサブルーチンを呼び出すことができる。テストケース20a〜fは、どのようにして検証が完了したかについて知らないこともある。例えば、多くのテストケース20a〜fが、青色の長方形を必要とする場合に、青色の長方形を描くサブルーチンを書くこともできる。このサブルーチンは、検証マネージャ30と情報をやりとりすることができる。このサブルーチンを使用したテストケース20a〜fは、このサブルーチンが青色の長方形を描くことを知っているはずであるが、このサブルーチンが検証マネージャ30と情報をやりとりしていることについては必ずしも知っているとは限らないはずである。
検証マネージャ30は、期待状態ジェネレータ32t〜z、コンペアラ35、期待アプリケーション状態データ構造36,および現行アプリケーション状態データ構造37を含むことができる。各期待状態ジェネレータ32t、u...zなどの期待状態ジェネレータは、1つまたは複数の特定のコンポーネント、データポイント、またはプロパティに関連づけることもできる。例えば、テストケース20a〜fのうちの1つ、一部、またはすべてがアプリケーション10を呼び出して、ある位置に青色の長方形を描くグラフィックアプリケーションをテストすることに関しては、期待状態ジェネレータ32t〜zは、このアプリケーション状態の異なるコンポーネントに焦点を合わせることができる。期待状態ジェネレータ32tは、この長方形のカラーに焦点を合わせることができる。期待状態ジェネレータ32uは、この長方形の位置に焦点を合わせることができる。期待状態ジェネレータ32vは、新しく描かれた青色の長方形と同じドキュメント上の三角形のロケーションなど、このテストケース20a〜fの実行からのあまり明らかでない結果に対して焦点を合わせることもできる。代わりに、期待状態ジェネレータ32u、32vは、一体化することができ、またこのドキュメント上のあらゆる形状のロケーションに関係のある1つの期待状態ジェネレータ(図示せず)によって置き換えることもできる。期待状態ジェネレータ32wは、新しいドキュメントをオープンするオプションなど、このツールバー上の関係のないオプションのステータスに焦点を合わせることができる。
また例えば、テストケース20a〜fがモールを用いてドアノブを叩くことにより、ドアに取り付けられたドアノブを個別にまたは一括してテストする場合には、期待状態ジェネレータ32tは、このドアノブの回転する機能に焦点を合わせることができる。期待状態ジェネレータ32uおよび32vは、このドアに取り付けられた上側ヒンジおよび下側ヒンジに焦点を合わせることができ、あるいは一体化することもでき、またこのヒンジの状態に関係のある1つの期待状態ジェネレータ(図示せず)によって置き換えることもできる。期待状態ジェネレータ32wは、このドアノブ周囲のこのドアの木材部分に焦点を合わせることもできる。他の期待状態ジェネレータは、アプリケーション10の他のエリアに焦点を合わせることもできる。
期待状態ジェネレータ32t〜zのすべては、1つまたは複数のテストケース20a〜fがアプリケーション10に適用されるときに呼び出すことができ、あるいは期待状態ジェネレータ32t〜zの1つまたは一部だけを呼び出すこともできる。実施形態の一例においては、期待状態ジェネレータ32t〜zは、テストケース20a〜fと独立に実行することができ、したがってこれらのテストケースと疎結合とすることができる。このようにして、テストケース20a〜fは、テストケース20a〜fの適用中にどの期待状態ジェネレータ32t〜zを呼び出すべきかをこの検証マネージャに対して指定する必要はない。テストケース20a〜fは、この場合には検証メカニズムを含まないこともある。実際に、テストケース20a〜fは、任意の検証が行われることについて知らなくてもよいこともある。検証マネージャ30は、テストケース20a〜fの結果を検証する責任を負うこともあり、またテストケース20a〜fの目的が、アプリケーション10に対して特定のパラメータを用いて刺激を与えることだけに制限されることもある。
しかし、実施形態の一例と整合して、テストケースが、検証コーディングを含むことができることが当業者には理解されよう。特にテストケース20a〜fを実行する目的が、特定の問題が是正されているかどうかを判定することにある場合には、このようになる場合もある。代替実施形態においては、テストケース20a〜fは、呼び出すべき1つまたは複数の期待状態ジェネレータ32t〜zを指定することもでき、ある種の他の期待状態ジェネレータ32t〜zを使用すべきでないことを指定することもできる。
テストケース20a〜fから検証を分離することにより、この検証は、テストケース20a〜fについてより包括的なものにすることができる。検証マネージャ30は、以前には個々のテストケースの一部分であったこともある期待状態ジェネレータ32t〜zを含むことができる。例えば、検証マネージャ30は、青色の正方形、赤色の円、黄色の三角形、または楕円を描き、プルダウンメニュー上のオプションを使用し、マウスまたはそのキーボードの使用を介して様々なユーザ入力に応答するなどのグラフィックアプリケーションの機能をテストするように設計された従来技術のテストケース20a〜fの期待状態ジェネレータ32t〜zを含むことができる。これらのテストケースのそれぞれは、このテストケースのアクションの目的に焦点を合わせた特定の検証を含んでいるはずである。期待状態ジェネレータ32を含む専用の検証マネージャ30を用いて、グラフィックアプリケーションにおいて青色の長方形を描くテストケース20a〜fは、より包括的に検証することができる。検証マネージャ30は、青色の長方形、赤色の円、黄色の三角形、プルダウンメニュー、マウスおよびキーボードによる入力などに特有の期待状態ジェネレータ32を呼び出すことができる。このようにして、この青色の長方形を描くことを求めて呼び出すテストケース20a〜fは、期待状態ジェネレータ32t〜zを呼び出して、アプリケーション10上のテストケース20a〜fの明らかな効果およびそれほど明らかでない効果を検査することができる。このテスタは、例えばこの青色の長方形が描かれるときにこの赤色の円が検証されつつあることを知らなくてよいことさえある。これらのテスト結果が、この赤色の円がテストケース20a〜fによる影響を受けずにいるようになっている場合、またこれが期待結果であった場合には、このテスタおよび/またはテストケースは、この赤色の円が検証されたことを知らなくてもよい。しかし、この赤色の円が思いがけなくわずかに移動した場合には、検証マネージャ30は、予期せぬ結果が起こったことをこのテスタに警告することができる。
同様に、テストケース20a〜fが、モールを用いてドアに取り付けられたドアノブを叩くことに関与する場合には、この検証プロセスは、このドアノブに対するテストの効果だけでなく、このドア、ドアフレーム、ヒンジなどに対するテストの効果も決定することを含むことができる。
さらに、アプリケーション10が変更され、アップデートされるなどの場合に、テストケース20a〜fの検証は、あまり影響を受けずにいることもできる。アプリケーション10が動作する方法を変更し得るアプリケーション10の新しいバージョンを作成することもできる。これにしたがって、テストケース20を、変更する必要があることもある。例えば、グラフィックアプリケーションをテストするためのテストケース20a〜fは、青色の長方形の描画をそれがどのように呼び出すかについての改訂を必要とすることもある。また例えば、テストすべき新しいドアノブが以前のバージョンよりも大きな弾力性を有する場合、ドアに取り付けられたドアノブをテストするテストケース20a〜fは、モールの重さおよび高さを変更する必要があることもある。しかし、期待状態ジェネレータ32はそれぞれ、変更する必要がないこともある。このグラフィックアプリケーションの例においては、期待状態ジェネレータ32は、アプリケーション10が変更される以前と同様にして、新しい青色の正方形、既存の赤色の円、黄色の三角形、および楕円のロケーションを検査し続けることができる。同様に、期待状態ジェネレータ32は、この新しいドアノブが追加され、テストケース10が修正される以前と同様にして、そのドアノブ、そのドア、そのヒンジ、およびそのドアフレームを検証することができる。
期待状態ジェネレータ32t〜zは、検証マネージャ30を介してデータベース31と情報をやりとりすることができる。データベース31は、期待状態ジェネレータ32に情報を提供し、その結果、この期待状態ジェネレータは、テストケース20からのアプリケーション10の期待状態をより良好に決定できるようにもなる。例えば、テストケース20a〜fは、モールを用いてドアに取り付けられたドアノブを叩くことを伴うこともある。期待状態ジェネレータ32aは、またこのドアに取り付けられた1/8インチ(3.17ミリメートル)の厚さ、2インチ(5.08センチメートル)の長さの黄銅ヒンジに対するテストケースの効果を決定することができる。それを行う際に、この期待状態ジェネレータ32aは、データベース31に照会して、例えば黄銅の引張り強度に関する情報を検索することができる。代替実施形態においては、各期待状態ジェネレータ32は、検証マネージャ30とは独立の1つまたは複数のデータベース31と情報をやりとりすることができる。代わりに、各期待状態ジェネレータ32は、プラグ可能なコンポーネントから情報を検索し、または情報を受け取ることもできる。
期待状態ジェネレータ32t〜zは、コンペアラ35と情報をやりとりすることができる。図2に示すように、コンペアラ35は、検証マネージャ30の一部分とすることができる。しかし、コンペアラ35は、この検証マネージャの外側に配置することもできることが当業者には理解されよう。この場合には、このコンペアラは、検証マネージャ30および/または期待状態ジェネレータ32と情報をやりとりすることができる。コンペアラ35は、期待状態データ構造36を実効状態データ構造37と比較することができる。
より詳細には、1つまたは複数のテストケース20a〜fが、実行されようとしているときに、テストケース20a〜fまたはテストイグゼキュタは、検証マネージャ30に通知することができる。検証マネージャ30は、このアプリケーションの現行グローバル状態のスナップショットを取ることができる。すなわち、この検証マネージャは、このアプリケーションのプロパティの現行値の、メモリへのコピーを行うことができる。次いで、検証マネージャ30は、実行すべき待ち状態にあるテストケース20について期待状態ジェネレータ32に通知することができる。実施形態の一例においては、テストケース20a〜f中において関与し得るこれらの期待状態ジェネレータ32だけについて通知することができる。代替実施形態においては、期待状態ジェネレータ32のすべてについて通知することもできる。
このアクション、および実行されようとしているアクションのパラメータ、ならびにこの現行グローバル状態の、検証マネージャのスナップショットに基づいて、各期待状態ジェネレータ32は、アプリケーション10上のテストケース20a〜fの見込みのある実行から、このアプリケーションのコンポーネントに関するその期待結果状態を計算する。例えば、アプリケーション10がグラフィックアプリケーションであり、テストケース20a〜fが、一括して青色の長方形の描画を必要とする場合には、各期待状態ジェネレータ32は、このアクションに関するその期待アプリケーション状態を決定する。期待状態ジェネレータ32tは、この結果が長方形を含むべきことを決定することができる。期待状態ジェネレータ32uは、この長方形が青色であるべきことを決定することができる。期待状態ジェネレータ32vは、この長方形から離れた赤色の円に焦点を合わせることができ、その期待状態が、テストケース20によって変更されないままに留まるべきことを決定することができる。各期待状態ジェネレータは、この期待コンポーネント状態を検証マネージャ30に対して伝え、検証マネージャ30は、コンペアラ35中の期待アプリケーション状態データ構造36にこのデータを配置することができる。このようにして、検証マネージャ30は、テストケース20a〜fの実行に先立ってグローバル期待アプリケーション状態を有することができる。さらに、これは、このグローバル期待アプリケーション状態をいつでもオンデマンドで決定することができることを意味している。テストケース20a〜fの実行からの期待結果は、決定論的とすることができる。代わりに、期待状態ジェネレータ32t〜zが非決定論的な結果が受け入れ可能であることを理解する場合には、期待結果は、非決定論的とすることもできる。
テストケース20が完了すると、検証マネージャ30は、別のスナップショットを取ることもでき、またこのアプリケーションのプロパティの現行値の、メモリへのコピーを行うこともできる。このスナップショットは、アプリケーションの現行グローバル状態を示すことができる。このプロパティの現行値は、現行アプリケーション状態データ構造37に記憶することができる。次いで、コンペアラ35は、期待アプリケーション状態データ構造36を現行アプリケーション状態データ構造37と比較する。どのような不一致も、さらなる注目を認可することができるエリアを指し示している。代替実施形態においては、データ構造36、37を、比較を実施するための適切な手段に送ることができる。例えば、この比較は、XML(extensible markup language:拡張マークアップ言語)の使用を介して完了することもできる。
期待アプリケーション状態データ構造36と現行アプリケーション状態データ構造37の間の不一致は、このテスタに警告し、代替的な結論をもたらすこともある。この期待アプリケーション状態と現行アプリケーション状態の間の不一致は、アプリケーション10が、適切な方法で動作していないエリアを示すこともある。かかるケースでは例えば、ソースコードのデバッギングまたは材料の構造の変更を必要とすることもある。すなわち例えば、テストケース20a〜fが、青色の正方形の描画をもたらすように意図されており、代わりにテストケース20a〜fが、赤色の正方形が描画される結果をもたらす場合には、このテスタは、アプリケーション10を修正しテストケース20a〜fを再び実行したいと思うこともある。このテスタがこのアプリケーションを開発する人でない場合には、このテスタは、バグをバグ追跡システムに記録し、電子メールを送信し、開発者のオフィスに歩いて行き、または他の何らかの通知システムを使用して、この開発者にこの正しくない動作(この赤色の正方形)について通知することができる。また例えば、テストケース20a〜fが動作し続けるドアノブをもたらすように意図されていたが、代わりにドアノブを叩くモールが、このドアからこのドアノブをノックしてはずしてしまった場合には、このテスタは、より強度の高いファスナ(fastener)を使用して、このドアノブをこのドアに保持したいと思うこともある。代わりに、このテスタがこのドアを製造してもいない場合には、このテスタは、このドア製造業者に、より強度の高いファスナを使用するように勧めることができる。
不一致は、期待状態ジェネレータ32の期待アプリケーション状態が非現実的であったことを示すこともできる。かかるケースでは、期待状態ジェネレータ32に対する変更を認可することができる。例えば、テストすべきアプリケーション10は、グラフィックアプリケーションとすることができる。1つまたは複数のテストケース20a〜fは、マウスを使用して長方形を描くことを含むことができる。この場合に、1つまたは複数の期待状態ジェネレータ32は、完全な長方形が描かれることを期待することができる。マウスを用いて完全な長方形を描くことがアプリケーション10において現実的に可能ではない場合に、コンペアラ35は、このテストがこの結果長方形における不完全性のために失敗したことを示すことができる。この場合には、テスタは、この適用可能な期待状態ジェネレータ32に許容範囲を追加して、基本的に長方形であるが全く完全ではない長方形を含む期待アプリケーション状態を可能にすることもできる。
実施形態の一例においては、期待状態ジェネレータ32は、テストケース20a〜f中で呼び出されるアクションおよびパラメータだけでなく、この現行アプリケーション状態にも基づいて期待状態を決定することができる。これにより、検証マネージャ30は以前のテストケース故障を考慮に入れ、これらの故障に基づいて期待状態を決定することができるようになる。例えば、テストケース20a〜fは、モールを用いてドアに取り付けられたドアノブを叩くことに関与することもある。このテストケースを実行する際に、このドアに取り付けられたヒンジが、損傷を受ける場合、将来のテストケース20a〜fについてのこのヒンジの検証では、この以前の損傷に基づいて故障が示されないこともある。代わりに、検証マネージャ30は、この以前の損傷を考慮に入れて、このヒンジの期待状態を決定することもできる。
図3Aは、疎結合された検証を実施する方法の一例の流れ図を示している。検証方法200は、テストケース20a〜fを用いてステップ205から開始することができる。代替実施形態においては、テストケースイグゼキュタが、この検証マネージャに対して開始イベントを送り、または検証マネージャ30を呼び出すことができる。この開始イベントまたは呼出しから、検証マネージャ30は、待ち状態にあるテストケース20について通知を受けることができる。テストケース20a〜fは、このアクションのパラメータを含むアプリケーション10に課されることになる明確なアクションを含むことができる。通知を受けると、検証マネージャ30は、この現行グローバル状態のスナップショットを取ることができる。ステップ210において、検証マネージャ30は、どの期待状態ジェネレータ32が待ち状態にあるテストケース20a〜fに関与し得るかを決定し、この適用可能な期待状態ジェネレータ32に通知することができる。代わりに、検証マネージャ30は、待ち状態にあるテストケース20a〜fについて期待状態ジェネレータ32のすべてに通知することもできる。ステップ215において、期待状態ジェネレータ32は、テストケース20a〜fの適用可能なアクションおよびパラメータを検討することになる。その1つまたは複数のコンポーネントのプロパティの現行値に基づいて、この期待状態ジェネレータは、テストケース20の完了に応じて期待される期待コンポーネント状態を計算することができる。次いで、通知済みの各期待状態ジェネレータ32は、その期待コンポーネント状態を検証マネージャ30に送ることができる。このデータは、コンペアラ35の期待アプリケーション状態データ構造36に記憶することができる。適用可能な期待状態ジェネレータ32のすべてが期待コンポーネント状態データを用いて報告したときには、(ステップ220において)検証マネージャ30は、グローバル期待アプリケーション状態を有することになる。次いでステップ225において、検証マネージャ30は、テストケース20を実行することができることについてテストケース20a〜fまたはテストイグゼキュタに通知することができる。このようにして、コントロールは、テストケース20a〜f(またはテストイグゼキュタ)に対して戻される。ステップ230において、テストケース20a〜fを実行することができる。
図3Bは、図3Aの流れ図に継続している。ステップ235において、テストケース20a〜fは、このグローバルスナップショットをアップデートして実行することができる。テストケース20の完了に応じて、ステップ240において、検証マネージャ30は、テストケース20a〜fが完了していることについて通知を受けることができる。ステップ245において、検証マネージャ30は、現行アプリケーション状態のスナップショットを取ることができる。このスナップショットは、このアプリケーション上におけるこのテストケースの実際の結果を反映することができる。このスナップショットはまた、このアプリケーションのプロパティの値を表すこともできる。ステップ250において、検証マネージャ30は、現行アプリケーション状態データ構造37にこのスナップショットを記憶することができる。次いでステップ255において、検証マネージャ30は、この期待アプリケーション状態データと現行アプリケーション状態データを比較し、ステップ260においてこの全体的な比較結果、またはこのプロパティの期待値および現行値が実質的に同じでない場合の任意の結果を報告することができる。本発明の代替実施形態においては、期待状態および現行状態のスナップショットをテストケースの実行中に完了することができる。すなわち、ステップ210ないし260のうちのすべてまたは一部をテストケース内で複数回実行することができる。
期待状態データ構造36および現行状態データ構造37の比較は、検証マネージャ30内において完了することができる。代わりに、データ構造を拡張マークアップ言語(XML)に直列出力し(serizlize out)、その結果XMLを用いてこの比較を完了することもできるようになる。かかるケースにおいては、このXMLがデータ構造36と37を比較し、これらの結果を検証マネージャ30、テストケース20、またはこのテストイグゼキュタに送ることができる。本発明の代替実施形態においては、コンペアラ35は、このテストケース実行プロセスから分離することができる。この分離により、テストケース実行に関係のない時にこの期待アプリケーション状態と現行アプリケーション状態の間の比較を完了できるようにすることができる。かかる場合には、この期待状態データおよび現行状態データは、データベースまたは他のデータストアに保存することもでき、またコンピュータメモリに保存することもできる。
本発明の実施形態の一例において、検証マネージャ30は、この個々の検証結果のうちの結果を通知することもでき、またこの期待アプリケーション状態データと現行アプリケーション状態データが異なる(すなわち、故障が存在しているときの)これらのインスタンスだけを通知することもできる。この通知は、このテストケースが実行を終了した後のある時に行うことができ、このテストケースに全く関係のない手段を介して届けることもできる。例えば、コンペアラ35は、検証結果を指定された連絡先に電子メールすることもできる。
この同じテストケース20a〜fが再び実行される場合、あるいは異なるテストケース20a〜fが実行される場合には、図3A〜3Bに示す方法200のステップのすべてが必要とされるとは限らないこともあることを理解されたい。例えば、検証マネージャ30は、このコンペアラ35中に待ち状態にあるテストケース20についての期待状態データ構造を含むこともある。その場合には、検証マネージャ30は、テストケース20a〜fが実行されるのに先立って、期待状態ジェネレータ32から期待コンポーネント状態データを取得する必要がないこともある。したがって、方法200のすべてのステップが、テストケース20a〜fが実行されるごとに完了される必要があるとは限らない。
図4は、本発明の代替実施形態による、テストケース実行に関して疎結合されたテストケース検証のためのシステムの一例のブロック図である。この代替実施形態においては、1つまたは複数のテストケース20a〜fをアプリケーション10に対して適用することができる。以上で説明したように、テストケース20a〜fは、統合テストケースでもよく、あるいは機能テストケースでもよい。一般に、各テストケース20a〜fは、アプリケーション10に適用すべき明確なパラメータを伴う明確な刺激を有する。テストケース20a〜fはそれぞれ、アプリケーション10が実行すべき1ステップまたは非常に多数のステップとすることができる。各テストケース20a〜fは、アプリケーション10が動作する1つのテストまたは一連のテストとすることができる。検証マネージャ30は、期待アプリケーション状態データ構造36、および現行アプリケーション状態データ構造37を有するコンペアラ35を含むことができる。以上で説明したように、コンペアラ35は、検証マネージャ30から分かれており、検証マネージャ30と情報をやりとりするものでもよいことを理解されたい。さらに、期待状態ジェネレータ32x〜zは、検証マネージャ30から分かれていてもよい。この期待状態ジェネレータ32は、検証マネージャ30と情報をやりとりすることができる。この期待状態ジェネレータ32と検証マネージャ30の機能は、図2に関して説明したこれらの機能と同様または同じものとすることができる。各期待状態ジェネレータ32t〜zが焦点を合わせることができるコンポーネントは、アプリケーション10内のデータポイントとすることができる。このデータポイントは、プロパティ値とすることができ、したがって各期待状態ジェネレータ32t〜zは、テストケース実行に先立って検証マネージャ30に期待プロパティ値を供給することができる。さらに、この期待状態ジェネレータ32は、他の期待状態ジェネレータ32を含むことができる。この期待状態ジェネレータ32は、検証マネージャ30と情報をやりとりすることができる。さらに、この期待状態ジェネレータ32は、プラグ可能なコンポーネントとすることができる1つまたは複数のデータベース31a〜bと情報をやりとりすることもできる。
例えば、テストケース20a〜fがモールを用いてドアに取り付けられたドアノブを叩くことに関与する場合、期待状態ジェネレータ32xは、このドアに取り付けられたヒンジの期待状態を決定することができる。それを行う際に、期待状態ジェネレータ32xは、期待状態ジェネレータ32x1を呼び出して、このヒンジの下側部分について報告することができる。同様に、期待状態ジェネレータ32xは、期待状態ジェネレータ32x2を呼び出して、このヒンジの上側部分について報告することができる。期待状態ジェネレータ32xは、期待状態を決定する際にこのデータを結合し、この結合済みのデータを、適切な時刻に、検証マネージャ30に対して伝えることができる。さらに、期待状態ジェネレータ32xがこのドアに取り付けられた1/8インチ(3.17ミリメートル)の厚さの、2インチ(5.08センチメートル)の長さの黄銅ヒンジに対するテストの効果を決定する場合に、期待状態ジェネレータ32xは、データベース31aに照会して、例えば、黄銅の引張り強度に関する情報を検索することができる。
本明細書中で説明している様々な技法は、ハードウェアまたはソフトウェア、あるいは適切な場合にはこれら両者の組合せに関連して実装することができる。したがって、本発明の方法および装置、あるいはそのある種の態様または一部分は、フロッピー(登録商標)ディスク、CD−ROM、ハードドライブ、または他の任意のマシン読取り可能ストレージ媒体などの有形媒体の形で実施されるプログラムコード(すなわち、命令)の形態を取ることができ、ここで、このプログラムコードがコンピュータなどのマシンにロードされ、それによって実行されるときに、このマシンは、本発明を実行するための装置になる。プログラマブルコンピュータ上でプログラムコードを実行する場合には、このコンピューティングデバイスは、一般的にプロセッサと、(揮発性および不揮発性のメモリおよび/またはストレージエレメントを含めて)プロセッサによって読取り可能なストレージ媒体と、少なくとも1つの入力デバイスと、少なくとも1つの出力デバイスとを含むことになる。例えば、データ処理APIなどの使用を介して、本発明のドメイン特有のプログラミングモデル態様の作成および/または実装を利用することができる1つまたは複数のプログラムは、高レベル手続き型プログラミング言語またはオブジェクト指向プログラミング言語で実装されて、コンピュータシステムと情報をやりとりすることが好ましい。しかし、この1つ(または複数)のプログラムは、必要に応じてアセンブリ言語またはマシン語で実装することができる。いずれにしても、この言語は、コンパイラ言語またはインタープリタ言語とすることができ、ハードウェア実装と組み合わせることができる。
本発明は、様々な図面に示す好ましい実施形態に関連して説明してきたが、本発明を逸脱することなく本発明の同じ機能を実施するために、他の実施形態も使用することができ、またこれら説明した実施形態に変更および追加を行うこともできることを理解されたい。本明細書全体にわたって、2つの主要な例、すなわち仮想グラフィックアプリケーションを取り扱う一方の例、およびドアに取り付けられたドアノブを伴う他方の例が提供されている。これらの特定の例は、理解を高めるために提供されている。本発明は、決してグラフィックアプリケーションまたはドアに取り付けられたドアノブを伴うアプリケーションだけに限定されるものではない。さらに、本発明は、任意のプロセス、マシン、製品、組成物、プログラム、ソフトウェア、ハードウェア、デバイス、メカニズム、または材料、あるいはこれらの任意の改良を含めて、任意のアプリケーションを含む任意のテストに含めることができる。したがって、本発明は、どのような一実施形態だけにも限定すべきではなく、そうではなくて添付の特許請求の範囲に従う広がりと範囲で解釈すべきである。
テストケース実行に関して疎結合されたテストケース検証の態様を実装することができるコンピューティング環境の一例を示すブロック図である。 本発明の一実施形態による、テストケース実行に関して疎結合されたテストケース検証のためのシステムのブロック図である。 本発明の一実施形態による、テストケース実行に関して疎結合されたテスト検証のための方法の流れ図である。 本発明の一実施形態による、テストケース実行に関して疎結合されたテスト検証のための方法の流れ図である。 本発明の代替実施形態による、テストケース実行に関して疎結合されたテストケース検証のためのシステムのブロック図である。
符号の説明
10 アプリケーション
20a、20b、20c、20d、20e、20f テストケース
30 検証マネージャ
31 データベース
32t、32u、32v、32w、32x、32y、32z 期待状態ジェネレータ
35 コンペアラ
36 期待状態
37 現行状態

Claims (26)

  1. アプリケーションに適用されるアクションの複数の結果を検証するためのシステムであって、前記アクションはテストケースにより定義され、前記システムは、
    互いに独立に、かつ前記テストケースと独立に動作し、各々が前記アプリケーションに前記アクションを適用することの結果として前記アプリケーションの1または複数のコンポーネントの期待コンポーネント状態を計算し、期待アプリケーション状態をアップデートするための複数の期待状態ジェネレータと、
    現行アプリケーション状態を保持し、前記期待アプリケーション状態を前記現行アプリケーション状態と比較するための検証マネージャと
    を備えることを特徴とするシステム。
  2. 前記複数の期待状態ジェネレータは、前記アクションの実行に先立って前記期待コンポーネント状態を決定することを特徴とする請求項1に記載のシステム。
  3. 前記複数の期待状態ジェネレータは、オンデマンドで前記期待コンポーネント状態を決定することを特徴とする請求項1に記載のシステム。
  4. 前記複数の期待状態ジェネレータは、前記期待コンポーネント状態を前記検証マネージャに伝えることを特徴とする請求項1に記載のシステム。
  5. 前記複数の期待状態ジェネレータは、前記検証マネージャの外部にあることを特徴とする請求項4に記載のシステム。
  6. 前記複数の期待状態ジェネレータと情報をやりとりするコンポーネントデータベースをさらに備え、前記コンポーネントデータベースは、前記期待状態ジェネレータが前記コンポーネントの前記期待コンポーネント状態を決定する際に円滑にすることを特徴とする請求項4に記載のシステム。
  7. 前記アクションを実行するための、前記検証マネージャと情報をやりとりし、前記検証マネージャから独立したテストケースをさらに含むことを特徴とする請求項1に記載のシステム。
  8. 前記アクションは、
    刺激と、
    パラメータと
    を含むことを特徴とする請求項1に記載のシステム。
  9. 前記アクションは、機能テストおよび統合テストのうちの少なくとも一方であることを特徴とする請求項1に記載のシステム。
  10. 期待アプリケーション状態データ構造と、現行アプリケーション状態データ構造とをさらに備えることを特徴とする請求項1に記載のシステム。
  11. 前記期待アプリケーション状態データ構造は、前記複数の期待状態ジェネレータから受け取った情報を含むことを特徴とする請求項10に記載のシステム。
  12. 前記現行アプリケーション状態データ構造は、前記検証マネージャから受け取った情報を含むことを特徴とする請求項10に記載のシステム。
  13. 前記検証マネージャは、前記期待アプリケーション状態を前記現行アプリケーション状態とオフラインで比較することを特徴とする請求項1に記載のシステム。
  14. 前記検証マネージャは、前記期待アプリケーション状態を前記現行アプリケーション状態とオンラインで比較することを特徴とする請求項1に記載のシステム。
  15. 前記複数の期待状態ジェネレータは、データベースおよびネットワークロケーションのうちの少なくとも一方からロードされることを特徴とする請求項1に記載のシステム。
  16. 前記検証マネージャは、前記期待アプリケーション状態の前記現行アプリケーション状態との比較の通知を提供することを特徴とする請求項1に記載のシステム。
  17. 前記通知は、オフラインで完了されることを特徴とする請求項16に記載のシステム。
  18. アプリケーションに適用されるアクションの結果を検証するための方法であって、前記アクションはテストケースにより定義され、前記方法は、
    前記アプリケーションの現行アプリケーション状態を保存するステップと、
    前記アプリケーションに適用すべきアクションから期待アプリケーション状態を計算するステップであって、
    複数の期待状態ジェネレータの各々により、前記アプリケーションに前記アクションを適用することの結果として前記アプリケーションの1または複数のコンポーネントの期待コンポーネント状態を計算し、前記複数のジェネレータが、互いに独立に、かつ前記テストケースと独立に動作するステップ
    を含むステップと、
    前記期待アプリケーション状態を保存するステップと、
    前記アクションを実行するステップと、
    前記アプリケーションの前記現行アプリケーション状態をアップデートするステップと、
    前記アプリケーションの前記期待アプリケーション状態と前記アプリケーションの前記現行アプリケーション状態とを比較するステップと
    を備えることを特徴とする方法。
  19. 最初の現行状態のコピーを作成するステップをさらに備えることを特徴とする請求項18に記載の方法。
  20. 前記アプリケーションの複数のコンポーネントについて複数の期待コンポーネント状態を受け取るステップをさらに備えることを特徴とする請求項18に記載の方法。
  21. 前記複数の期待コンポーネント状態は、期待アプリケーション状態データ構造に記憶されることを特徴とする請求項20に記載の方法。
  22. 前記複数の期待状態ジェネレータは、前記期待アプリケーション状態を前記現行アプリケーション状態と比較するための検証マネージャの外部に設置されることを特徴とする請求項21に記載の方法。
  23. 前記期待アプリケーション状態と前記現行アプリケーション状態と等しくない場合に、テスタに通知するステップをさらに含むことを特徴とする請求項18に記載の方法。
  24. 前記アプリケーションの現行アプリケーション状態を保存するステップは、前記アクションが適用された後に完了することを特徴とする請求項18に記載の方法。
  25. 前記期待アプリケーション状態を保存するステップは、前記アクションが完了する前に完了することを特徴とする請求項18に記載の方法。
  26. コンピュータにより実行されたときに、請求項18ないし25のいずれかに記載の方法を実行する命令を記憶したことを特徴とするコンピュータ読取り可能記憶媒体。
JP2005234740A 2004-09-29 2005-08-12 自動化されたテストケース実行に関して疎結合された自動化されたテストケース検証 Active JP4961123B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/953,437 US7823132B2 (en) 2004-09-29 2004-09-29 Automated test case verification that is loosely coupled with respect to automated test case execution
US10/953,437 2004-09-29

Publications (2)

Publication Number Publication Date
JP2006099742A JP2006099742A (ja) 2006-04-13
JP4961123B2 true JP4961123B2 (ja) 2012-06-27

Family

ID=35429157

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005234740A Active JP4961123B2 (ja) 2004-09-29 2005-08-12 自動化されたテストケース実行に関して疎結合された自動化されたテストケース検証

Country Status (10)

Country Link
US (1) US7823132B2 (ja)
EP (1) EP1650664A3 (ja)
JP (1) JP4961123B2 (ja)
KR (1) KR101122852B1 (ja)
CN (1) CN100507870C (ja)
AU (1) AU2005203492B2 (ja)
BR (1) BRPI0503443A (ja)
CA (1) CA2517036A1 (ja)
MX (1) MXPA05009207A (ja)
RU (1) RU2390826C2 (ja)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070088606A1 (en) * 2005-10-17 2007-04-19 Homefeedback.Com, Inc. Data collection and dissemination system with terminal having literature distribution
US7853479B2 (en) * 2005-10-17 2010-12-14 Showing Suite, Inc. Data collection and dissemination system with literature distribution and email follow-up
US20080115114A1 (en) * 2006-11-10 2008-05-15 Sashank Palaparthi Automated software unit testing
WO2008074526A2 (en) * 2006-12-18 2008-06-26 International Business Machines Corporation Method, system and computer program for testing software applications based on multiple data sources
US8739131B2 (en) * 2007-05-04 2014-05-27 International Business Machines Corporation Completing functional testing
US7921329B2 (en) * 2007-05-09 2011-04-05 Microsoft Corporation Worker thread corruption detection and remediation
US7865779B2 (en) * 2007-08-23 2011-01-04 International Business Machines Corporation Server side logic unit testing
US8595119B2 (en) * 2008-02-15 2013-11-26 New York Mercantile Exchange, Inc. Symbolic language for trade matching
CN101751248B (zh) * 2008-11-28 2013-01-02 国际商业机器公司 为Web应用设计时间敏感的性能测试用例的方法和系统
US8869111B2 (en) * 2009-01-15 2014-10-21 Infosys Limited Method and system for generating test cases for a software application
US8589884B2 (en) * 2009-01-15 2013-11-19 Infosys Limited Method and system for identifying regression test cases for a software
US8161459B2 (en) * 2009-01-15 2012-04-17 Infosys Technologies Limited Method and system for generating functional test cases
US8607152B2 (en) * 2009-06-11 2013-12-10 International Business Machines Corporation Management of test artifacts using cascading snapshot mechanism
TW201101170A (en) * 2009-06-26 2011-01-01 Ibm Computer apparatus and method for processing graphic user interface (GUI) objects
US9454463B2 (en) * 2010-10-05 2016-09-27 Infinera Corporation Rapid automation front-end framework library and executable graphic user interface testing system and method
US8954930B2 (en) * 2010-12-17 2015-02-10 Sap Se System and method for reducing test effort by object risk analysis
CN102098190B (zh) * 2011-02-22 2013-05-15 浪潮(北京)电子信息产业有限公司 一种Web项目的自动开发测试系统及方法
CN102799515B (zh) * 2011-05-24 2016-01-20 腾讯科技(深圳)有限公司 应用程序测试方法及装置
US9552281B2 (en) * 2011-12-28 2017-01-24 Verisign, Inc. Utilizing a test automation tool in a test automation environment
US8930761B2 (en) 2012-08-30 2015-01-06 International Business Machines Corporation Test case result processing
US8861284B2 (en) 2012-09-18 2014-10-14 International Business Machines Corporation Increasing memory operating frequency
CN103914368B (zh) * 2012-12-31 2017-05-24 百度国际科技(深圳)有限公司 一种安全软件性能的测试方法、系统及装置
US9311223B2 (en) * 2013-05-21 2016-04-12 International Business Machines Corporation Prioritizing test cases using multiple variables
US9317415B2 (en) 2013-06-03 2016-04-19 Google Inc. Application analytics reporting
US9058425B2 (en) * 2013-11-13 2015-06-16 Bank Of America Corporation Software metrics assessment system
CN104298599B (zh) * 2014-10-21 2017-09-15 卡斯柯信号有限公司 嵌入式软件运行时故障的在线自检与切片恢复方法及装置
CN106844190B (zh) * 2015-12-07 2022-06-07 中兴通讯股份有限公司 测试脚本自动生成方法及装置
ITUB20160830A1 (it) * 2016-02-18 2017-08-18 Giovanni Fiengo Sistema per il collaudo automatizzato di dispositivi elettronici e/o applicazioni software e rispettivo metodo di collaudo automatizzato
KR101865879B1 (ko) 2016-04-27 2018-06-12 주식회사 하렉스인포텍 선승인에 의한 금융거래 제공 시스템 및 그 방법
US10037263B1 (en) * 2016-07-27 2018-07-31 Intuit Inc. Methods, systems, and articles of manufacture for implementing end-to-end automation of software services
US10481969B2 (en) 2017-02-07 2019-11-19 Microsoft Technology Licensing, Llc Configurable system wide tests
CN110389815B (zh) * 2018-04-18 2023-09-12 阿里巴巴集团控股有限公司 任务处理方法、装置及系统
KR102313845B1 (ko) * 2019-03-11 2021-10-18 아주큐엠에스 주식회사 오브젝트 기반 스크립트를 이용한 게임 테스트 장치 및 그 방법
TWI760691B (zh) * 2020-02-12 2022-04-11 瑞昱半導體股份有限公司 自動測試軟體相容性的方法、測試裝置與系統
CN111324540B (zh) * 2020-03-02 2023-08-04 北京同邦卓益科技有限公司 一种接口测试方法及装置
US11792482B2 (en) 2020-10-14 2023-10-17 Dish Network L.L.C. Visual testing based on machine learning and automated workflow
KR102344661B1 (ko) * 2020-12-29 2021-12-30 쿠팡 주식회사 예상 결과값을 토대로 정보를 제공하는 방법 및 이를 이용한 연산 장치
US11989120B2 (en) * 2021-05-25 2024-05-21 Dish Network L.L.C. Visual testing issue reproduction based on communication of automated workflow
US11675681B2 (en) 2021-09-21 2023-06-13 International Business Machines Corporation Configuration of weighted address pools for component design verification

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4696003A (en) * 1986-03-10 1987-09-22 International Business Machines Corporation System for testing interactive software
US4819233A (en) * 1987-04-08 1989-04-04 Westinghouse Electric Corp. Verification of computer software
US5157782A (en) * 1990-01-31 1992-10-20 Hewlett-Packard Company System and method for testing computer hardware and software
US5335342A (en) * 1991-05-31 1994-08-02 Tiburon Systems, Inc. Automated software testing system
JPH05224995A (ja) * 1992-02-13 1993-09-03 Nec Corp 情報処理装置の試験方式
US5600789A (en) 1992-11-19 1997-02-04 Segue Software, Inc. Automated GUI interface testing
US5513315A (en) 1992-12-22 1996-04-30 Microsoft Corporation System and method for automatic testing of computer software
US5634098A (en) * 1995-02-01 1997-05-27 Sun Microsystems, Inc. Method and apparatus for environment-variable driven software testing
US6067639A (en) 1995-11-09 2000-05-23 Microsoft Corporation Method for integrating automated software testing with software development
US6023580A (en) 1996-07-03 2000-02-08 Objectswitch Corporation Apparatus and method for testing computer systems
US5881237A (en) * 1996-09-10 1999-03-09 Ganymede Software, Inc. Methods, systems and computer program products for test scenario based communications network performance testing
ID21808A (id) * 1996-12-20 1999-07-29 Matsushita Electric Ind Co Ltd Metoda rekaman optik dan perekam optik
US6128759A (en) 1998-03-20 2000-10-03 Teradyne, Inc. Flexible test environment for automatic test equipment
US6587969B1 (en) 1998-06-22 2003-07-01 Mercury Interactive Corporation Software system and methods for testing the functionality of a transactional server
US6236993B1 (en) * 1998-06-24 2001-05-22 Victor V. Fanberg Computer file comparison method
JP2001005690A (ja) * 1999-06-21 2001-01-12 Nec Ic Microcomput Syst Ltd プログラムテストシステム
US6505324B1 (en) 2000-10-05 2003-01-07 International Business Machines Corporation Automated fuse blow software system
US7117411B2 (en) 2000-10-27 2006-10-03 Tekelec Methods and systems for testing communications network components
US6941546B2 (en) 2001-08-01 2005-09-06 International Business Machines Corporation Method and apparatus for testing a software component using an abstraction matrix
US6986125B2 (en) 2001-08-01 2006-01-10 International Business Machines Corporation Method and apparatus for testing and evaluating a software component using an abstraction matrix
CA2358563A1 (en) 2001-10-05 2003-04-05 Ibm Canada Limited - Ibm Canada Limitee Method and system for managing software testing
US6993748B2 (en) 2001-10-26 2006-01-31 Capital One Financial Corporation Systems and methods for table driven automation testing of software programs
US6871327B2 (en) 2002-03-04 2005-03-22 Sun Microsystems, Inc. Method and apparatus for extending coverage of GUI tests
DE60308505T2 (de) 2002-05-11 2007-01-18 Accenture Global Services Gmbh Verfahren und system zur automatischen prüfung von software
US7159021B2 (en) 2002-06-27 2007-01-02 Microsoft Corporation System and method for testing peer-to-peer network applications
JP3964770B2 (ja) * 2002-10-09 2007-08-22 株式会社東芝 光ディスク装置及び光ディスク装置の制御方法
US8386852B2 (en) * 2002-11-05 2013-02-26 Hewlett-Packard Development Company, L.P. Automated recording and replaying of software regression tests
US7730461B2 (en) 2002-12-30 2010-06-01 International Business Machines Corporation Software tool configured to generate test cases characterized by a linear range of integral values
US7203928B2 (en) * 2002-12-31 2007-04-10 Sun Microsystems, Inc. Method and system for generating and maintaining uniform test results
US7165191B1 (en) * 2004-01-29 2007-01-16 Sun Microsystems, Inc. Automated verification of user interface tests on low-end emulators and devices
US7773774B2 (en) * 2004-06-28 2010-08-10 Xerox Corporation Dynamic test pattern composition for image-analysis based automatic machine diagnostics
US7398514B2 (en) 2004-09-29 2008-07-08 Microsoft Corporation Test automation stack layering
US7457989B2 (en) 2004-09-29 2008-11-25 Microsoft Corporation System and method for selecting test case execution behaviors for reproducible test automation

Also Published As

Publication number Publication date
EP1650664A3 (en) 2009-12-23
RU2390826C2 (ru) 2010-05-27
AU2005203492B2 (en) 2010-10-28
KR20060050387A (ko) 2006-05-19
EP1650664A2 (en) 2006-04-26
JP2006099742A (ja) 2006-04-13
AU2005203492A1 (en) 2006-04-13
US20060075303A1 (en) 2006-04-06
CN100507870C (zh) 2009-07-01
BRPI0503443A (pt) 2006-05-09
US7823132B2 (en) 2010-10-26
CA2517036A1 (en) 2006-03-29
CN1755646A (zh) 2006-04-05
KR101122852B1 (ko) 2012-03-22
RU2005126693A (ru) 2007-02-27
MXPA05009207A (es) 2006-04-03

Similar Documents

Publication Publication Date Title
JP4961123B2 (ja) 自動化されたテストケース実行に関して疎結合された自動化されたテストケース検証
JP4950454B2 (ja) テスト自動化のスタック階層化
JP5258152B2 (ja) 再現可能なテストの自動化に関するテストケース実行挙動を選択するシステムおよび方法
US11762717B2 (en) Automatically generating testing code for a software application
Berner et al. Observations and lessons learned from automated testing
US8984489B2 (en) Quality on submit process
US7051316B2 (en) Distributed computing component system with diagrammatic graphical representation of code with separate delineated display area by type
US8813030B2 (en) Detecting plug-in and fragment issues with software products
US8515876B2 (en) Dry-run design time environment
JP2010231782A (ja) 機能自動化のための方法およびシステム
US11138097B2 (en) Automated web testing framework for generating and maintaining test scripts
King et al. An integrated self-testing framework for autonomic computing systems.
Knüppel et al. Experience Report on Formally Verifying Parts of OpenJDK's API with KeY
WO2022239549A1 (ja) バージョン管理方法、バージョン管理のプログラム、および、バージョン管理のシステム
CN116932414B (zh) 界面测试用例的生成方法、设备及计算机可读存储介质
Farchi et al. Random Test Generation of Application Programming Interfaces
Ritchie Test Frameworks
Ihrig et al. Logging, Debugging, and Testing

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080808

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110620

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110628

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110928

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111115

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120215

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120326

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

Free format text: PAYMENT UNTIL: 20150330

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250