JP2005293578A - 属性を介して制御されるテストケース継承 - Google Patents

属性を介して制御されるテストケース継承 Download PDF

Info

Publication number
JP2005293578A
JP2005293578A JP2005091718A JP2005091718A JP2005293578A JP 2005293578 A JP2005293578 A JP 2005293578A JP 2005091718 A JP2005091718 A JP 2005091718A JP 2005091718 A JP2005091718 A JP 2005091718A JP 2005293578 A JP2005293578 A JP 2005293578A
Authority
JP
Japan
Prior art keywords
test
subclass
hierarchy
test method
attribute
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
JP2005091718A
Other languages
English (en)
Other versions
JP2005293578A5 (ja
Inventor
Michael Paul Robinson
ポール ロビンソン マイケル
Iv Orville Jay Potter
ジェイ ポッター ザ フォース オービル
Peter Gerber
ガーバー ピーター
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 JP2005293578A publication Critical patent/JP2005293578A/ja
Publication of JP2005293578A5 publication Critical patent/JP2005293578A5/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/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61GTRANSPORT, PERSONAL CONVEYANCES, OR ACCOMMODATION SPECIALLY ADAPTED FOR PATIENTS OR DISABLED PERSONS; OPERATING TABLES OR CHAIRS; CHAIRS FOR DENTISTRY; FUNERAL DEVICES
    • A61G17/00Coffins; Funeral wrappings; Funeral urns
    • A61G17/08Urns
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61GTRANSPORT, PERSONAL CONVEYANCES, OR ACCOMMODATION SPECIALLY ADAPTED FOR PATIENTS OR DISABLED PERSONS; OPERATING TABLES OR CHAIRS; CHAIRS FOR DENTISTRY; FUNERAL DEVICES
    • A61G17/00Coffins; Funeral wrappings; Funeral urns
    • A61G17/007Coffins; Funeral wrappings; Funeral urns characterised by the construction material used, e.g. biodegradable material; Use of several materials
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B65CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
    • B65DCONTAINERS FOR STORAGE OR TRANSPORT OF ARTICLES OR MATERIALS, e.g. BAGS, BARRELS, BOTTLES, BOXES, CANS, CARTONS, CRATES, DRUMS, JARS, TANKS, HOPPERS, FORWARDING CONTAINERS; ACCESSORIES, CLOSURES, OR FITTINGS THEREFOR; PACKAGING ELEMENTS; PACKAGES
    • B65D81/00Containers, packaging elements, or packages, for contents presenting particular transport or storage problems, or adapted to be used for non-packaging purposes after removal of contents
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B65CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
    • B65DCONTAINERS FOR STORAGE OR TRANSPORT OF ARTICLES OR MATERIALS, e.g. BAGS, BARRELS, BOTTLES, BOXES, CANS, CARTONS, CRATES, DRUMS, JARS, TANKS, HOPPERS, FORWARDING CONTAINERS; ACCESSORIES, CLOSURES, OR FITTINGS THEREFOR; PACKAGING ELEMENTS; PACKAGES
    • B65D85/00Containers, packaging elements or packages, specially adapted for particular articles or materials
    • B65D85/50Containers, packaging elements or packages, specially adapted for particular articles or materials for living organisms, articles or materials sensitive to changes of environment or atmospheric conditions, e.g. land animals, birds, fish, water plants, non-aquatic plants, flower bulbs, cut flowers or foliage
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B65CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
    • B65DCONTAINERS FOR STORAGE OR TRANSPORT OF ARTICLES OR MATERIALS, e.g. BAGS, BARRELS, BOTTLES, BOXES, CANS, CARTONS, CRATES, DRUMS, JARS, TANKS, HOPPERS, FORWARDING CONTAINERS; ACCESSORIES, CLOSURES, OR FITTINGS THEREFOR; PACKAGING ELEMENTS; PACKAGES
    • B65D2585/00Containers, packaging elements or packages specially adapted for particular articles or materials

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Veterinary Medicine (AREA)
  • General Engineering & Computer Science (AREA)
  • Animal Behavior & Ethology (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Public Health (AREA)
  • Mechanical Engineering (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Zoology (AREA)
  • Evolutionary Biology (AREA)
  • Toxicology (AREA)
  • Marine Sciences & Fisheries (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

【課題】 本発明は属性を介して制御することのできるテストケース継承の振る舞いを対象とする。
【解決手段】 テストオブジェクトがそこから派生される基本テストクラスは、テストケースコードおよび管理を低減するのに役立つ。例えば、基本テストクラスおよびその派生されたオブジェクトを用いて、クラスの全セットで共通のステップ(テストされるべきソフトウェアの断片を起動し、それを特定の段階に至らせるなど)を実装することができる。継承の原理は、例えば基本クラスが変更されるとき、テストソフトウェアの管理を簡単化し、そのテストケースから派生するテストのすべてが自動的に変更される。したがって、ソフトウェアが起動する仕方を変更するために変更が必要なときに、(あらゆるテストではなく)1つの項目だけを変更すればよい。
【選択図】 図2

Description

本発明は、属性を介して制御されるテストケースの継承に関する。
テスト自動化システムは、ソフトウェア駆動のシステムを自動的にテストするのに使用される。従来のアーキテクチャはテストハーネスを使用し、テストハーネスは、通常、属性によって指定されたテストケースを含む、テストケースの実行に使用される。属性を使用する自動化テストは、普通、テストハーネスによってそのテストを実行するためにコールされるいくつかのメソッドを有する単一のクラスからなる。従来のアーキテクチャによるテストは他のクラスからテストメソッドを継承せず、これにより共通の基本テストクラスの作成を妨げている。
従来のテストハーネスは、クラスおよび/またはメソッドのそれぞれを検査し、存在する属性を検査し、次いで属性の検査に基づいてアクションを行う。属性を使用するこの方法は、アクションを行うために必要なコードがテストハーネス中に存在することを必要とする。したがって、テストハーネスを変更することなく新しい種類のテスト属性を作成することはできない。しかも、同じコードを、多くの場合、そのコードが使用される異なるテストハーネスごとに書く(または変更する)必要がある。従来のテストハーネスにおける多様な機能は、1つのテストが各テストハーネスで異なって実行され得るように、テストハーネス間の差異(あるいは1つのテストハーネスでのみ適正に実行されるテスト)をもたらす結果になることがあり、望ましくない。
本発明によれば、属性は、異なるテストハーネスを用いて書かれたテストを実行するために変更を必要とすることなく再使用することができる。
本発明は、属性を介して制御することのできるテストケース継承の振る舞いを対象とする。テストオブジェクトがそこから派生される基本テストクラスは、テストケースコードおよび管理を低減するのに役立つ。例えば、基本テストクラスおよびその派生されたオブジェクトを用いて、テストクラスの全セットで共通のステップ(テストされるべきソフトウェアを起動し、それを特定の段階に至らせるなど)を実施することができる。継承の原理は、例えば基本クラスが変更されるときに、テストソフトウェアの管理を簡単化する。基本クラスが変更されると、その基本クラスから派生するテストクラスのすべてが自動的に変更される。したがって、例えばソフトウェアが起動する仕方を変更するために変更が必要なときには、(あらゆるテストではなく)1つの項目だけを変更すればよい。
本発明の一態様によれば、コンピュータ実行可能コンポーネントを有するコンピュータ可読媒体が2つのコンポーネントを備える。テストケースシナリオオブジェクトは電子システムをテストするように構成されたテストメソッドを備え、テストメソッドは基本クラスおよびサブクラスを備えた階層として構成され、サブクラスのそれぞれは基本クラスから派生し、継承の原理は階層内のメソッドの構成に従って各テストメソッドに適用される。テストハーネスはそれらのテストメソッドにシステムテストサービスを提供するように構成される。
本発明の別の態様によれば、テストコンポーネントを実行するための方法が電子システムをテストするように構成されるテストメソッドを提供することを備える。提供されるテストメソッドは、基本クラスおよびサブクラスを備える階層として構成され、サブクラスのそれぞれは基本クラスから派生する。継承の原理は階層内のメソッドの構成に従って各テストメソッドに適用される。テストハーネスはそれらのテストメソッドにシステムテストサービスを提供するために使用される。
本発明の別の態様によれば、自動化テストのためのシステムが2つのコンポーネントを備える。テストケースシナリオオブジェクトは電子システムをテストするように構成されたテストメソッドを備え、テストメソッドは基本クラスおよびサブクラスを備えた階層として構成され、サブクラスのそれぞれは基本クラスから派生し、継承の原理は階層内のメソッドの構成に従って各テストメソッドに適用される。テストハーネスはそれらのテストメソッドにシステムテストサービスを提供するように構成される。
本発明の別の態様によれば、自動化テストのためのシステムが電子システムをテストするように構成されたテストメソッドを提供するための手段と、提供されたテストメソッドを、基本クラスおよびサブクラスを備えた階層として構成するための手段であって、サブクラスのそれぞれが基本クラスから派生する手段と、階層内のメソッドの構成に従って各テストメソッドに継承の原理を適用するための手段と、テストハーネス手段を使用してテストメソッドにシステムテストサービスを提供することとを備える。
本明細書および特許請求の範囲を通じて、以下の用語は、文脈が明らかに別の意味を指示しない限り、ここで明示的に関連付けられた意味を有する。本明細書で使用する用語およびインターフェース仕様は、特定のオブジェクトまたはメソッドが記述されるべき特定の言語を代表するものではない。そうではなく、これらの用語およびインターフェース仕様は、関数名、入力、出力、戻り値、そのインターフェースを用いてどんな操作が行われるか(あるいはそのオブジェクトによってどんな操作が行われるか)といった、インターフェースまたはオブジェクトの機能および内容を説明するために使用される。
例示的な動作環境
図1を参照すると、本発明を実施するための例示的な一実施形態がコンピューティングデバイス100などのコンピューティングデバイスを含んでいる。非常に基本的な構成では、コンピューティングデバイス100は、通常、少なくとも1つの処理ユニット102とシステムメモリ104を含む。コンピューティングデバイスの厳密な構成および種類に応じて、システムメモリ104は、揮発性(RAMなど)、不揮発性(ROMやフラッシュメモリなど)、またはこれら2つの何らかの組み合わせとすることもできる。システムメモリ104は、通常、オペレーティングシステム105、1つまたは複数のアプリケーション106を含み、プログラムデータ107を含むことがある。一実施形態では、アプリケーション106は、MLエディタ122をさらに含むワードプロセッサアプリケーション120を含むことがある。この基本構成を、図1に破線108内の構成要素で示す。
コンピューティングデバイス100は追加の特徴または機能を有することもある。例えば、コンピューティングデバイス100は、例えば、磁気ディスク、光ディスクまたはテープなど、(リムーバブルおよび/または非リムーバブルの)追加のデータストレージデバイスを含むこともある。そのような追加のストレージを、図1にリムーバブルストレージ109および非リムーバブルストレージ110で示す。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、その他のデータなどの情報のストレージのための任意の方法または技術で実装された揮発性および不揮発性、リムーバブルおよび非リムーバブルの媒体が含まれ得る。システムメモリ104、リムーバブルストレージ109および非リムーバブルストレージ110は、すべてコンピュータ記憶媒体の例である。コンピュータ記憶媒体には、これらに限らないが、RAM、ROM、EEPROM、フラッシュメモリなどのメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)などの光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージなどの磁気ストレージデバイス、または所望の情報を格納するのに使用することができ、コンピューティングデバイス100によってアクセスすることのできる他の任意の媒体が含まれる。任意のそのようなコンピュータ記憶媒体をデバイス100の一部とすることができる。コンピューティングデバイス100は、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなどの入力デバイス112を有することもできる。ディスプレイ、スピーカ、プリンタなどの出力デバイス114を含むこともできる。これらのデバイスは当分野で周知であり、ここで詳細に論じる必要はない。
コンピューティングデバイス100は、このデバイスが、ネットワークなどを介して他のコンピューティングデバイス118と通信できるようにする通信接続116を含むこともある。通信接続116は、通信媒体の一例である。通信媒体は、通常、搬送波や他のトランスポート機構などの変調されたデータ信号にコンピュータ可読命令、データ構造、プログラムモジュールまたはその他のデータによって具体化することができ、任意の情報配信媒体を含む。「変調されたデータ信号」という用語は、信号に情報を符号化するようにその特性の1つまたは複数を設定または変更した信号を意味する。例をあげると、限定ではなく、通信媒体には有線ネットワークや直接配線接続などの有線媒体、および音響、RF、赤外線、その他の無線媒体などの無線媒体が含まれる。本明細書で使用するコンピュータ可読媒体という用語は、記憶媒体と通信媒体の両方を含む。
本発明は、属性を介して制御することのできるテストケース継承の振る舞いを対象とする。テストオブジェクトがそこから派生される基本テストクラスは、テストケースコードおよび管理を低減するのに役立つ。例えば、基本テストクラスおよびその派生オブジェクトを用いて、テストクラスの全セットで共通のステップ(テストされるべきソフトウェアを起動し、それを特定の段階に至らせるなど)を実施することができる。継承の原理は、例えば基本クラスが変更されるときに、テストソフトウェアの管理を簡単化する。基本クラスが変更されると、その基本クラスから派生するテストクラスのすべてが自動的に変更される。したがって、例えばソフトウェアが起動する仕方を変更するために変更が必要なときに、(あらゆるテストではなく)1つの項目だけを変更すればよい。以下で論じるように、選択的継承を使用して、テストが継承されたメソッドを用いた適正に実行されるようにすることができる。
継承は非常に有用ではあるが、継承を基本テストクラスから派生したすべてのメソッドに義務付ける必要はない。本発明によれば、継承を適用すべきかどうかを属性が選択する機構が提供される。(属性を介して制御することのできる)テストケース継承の振る舞いを使用することにより、テストを継承されたメソッドを用いて適正に実行することができる。属性が定義された継承は、クラス階層に基づいてメソッドを順序付ける(順序は存在する属性によって判定される)方法を提供する。例えば、セットアップステップは、(サブクラスに次いで基本クラスでも、ランダム式でもなく)まず基本クラスで、次にサブクラスで、以下同様に再帰的に実行される。以下で図2を参照して説明するように、実行エンジンはどのメソッドを継承すべきか、そしてそれらのメソッドを実行する順序を判定する。
以下に、テストケース継承を例示するための擬似コードの一例を示す。
Figure 2005293578
テストクラスApplicationSpecificTestのために実行されることになるテストメソッドを、これらが実行されるべき順序でリストする。
Figure 2005293578
上記の例では、インデントがクラス階層を意味し、与えられたクラスおよびサブクラスのメソッドについての継承の原理を例示している。例えば、ApplicationSpecifcTest.Setupは、TestEnvironmentBase.Setupクラスから継承する(テスト作成者が、別途、選択しない限り、そしてその場合、テスト作成者はそのメソッドが継承されるべきでないと指定することができる)。
したがって、テスト作成者は、基本クラスから派生するメソッドを書き、必要に応じてサブクラスに継承の原理を選択的に適用することができる。抽出エンジンはクラス階層に従ってメソッドを順序付け、それによって実行順序を判定する。メソッドの順序付けは属性内で定義される比較関数を使用して達成することができ、その結果、属性自体を用いてクラス階層を判定することができる。基本クラスを変更することにより、継承が「オフ」にトグルされることを属性が記述していない限り、そのサブクラスが自動的に変更される。
さらに、テストメソッドの状態を変更する属性を継承することもできる。例えば、(ネガティブテストの場合)ある例外が予期されると記述する属性を継承することができる。この予期は継承され、テストメソッドの結果の状態を「失敗」から「合格」に変更し、それによって、テストメソッドが例外をスローする場合、デフォルトの失敗ケースがオーバライドされる。
テスト自動化システムのアーキテクチャ
図2は、本発明を実施するための例示的な環境を示すブロック図である。図2に示す例示的な環境は、テストハーネス210、テストランタイム220およびテストケースシナリオ230を備えるテスト自動化システム200である。
テストランタイム
一実施形態では、テストランタイム220は、テストハーネスからのテストケースの知識を抽象するオブジェクトのコレクションである。テストランタイム220は、通常、テストサービス提供オブジェクト221、抽出エンジン222、属性223およびテストメソッド実行機能224を備える。異なるハーネスによってテストランタイム220が使用されて、特定の型のテストケースフォーマットについて一貫したサポートを提供することができる。拡張により、テストハーネスは、異なるテストランタイムを用いて異なる型のテストケースフォーマットをサポートすることができる。テストハーネスは、通常、どのテストランタイムを特定のテストケースフォーマットに使用するかを判定する。
テストケース抽出は(以下で説明するテストサービス提供オブジェクト221から得られる)専用の抽出オブジェクトを介して達成され、呼び出しはオブジェクト(やはり以下で説明するテストメソッド実行機能224)によって行われ、それによりテストハーネスにジェネリックな結果を返す。テストメソッド実行機能は、メソッドの実行を制御するために汎用インターフェースを用いて属性を評価する。
テストハーネスは、例えば、属性を評価したり、テストメソッドが実行されるべき順序を判定したり、メソッド呼び出しのための引数リストを構築したりする必要はない。テストハーネスは、通常、それらのタスクを行うのに必要とされるこの情報に直接的なアクセスを持たず、それによって異なるテストハーネス間でより一貫したテスト実行を保証する助けになる。すべてのテストハーネス依存機能(ロギング、「リモーティング」など)は、テストハーネスによって実装され、インターフェースによって記述され、テスト実行中の使用のためにテストサービス提供オブジェクトに格納されるオブジェクトであるべきである。したがって、テストハーネスコードへの変更を要することなく、異なるテストランタイム間で切り換えることが簡単に可能なテストハーネスを作成することができる。
テストサービス
テストサービス提供オブジェクト221は、テストハーネスによって使用されて抽出エンジンを取り出し、また、テストケースシナリオによって使用されて(ロギング、同期などのテストサービスを含む)テストハーネス実装機能のオブジェクトを取り出す。
テストサービス提供オブジェクトは、通常、テストサービスへのアクセスを容易にするために使用されるメソッドを提供する。AddServiceメソッドがコールされて、テストサービスを実施するオブジェクトへの参照を格納する。テストサービスオブジェクトは「ジェネリック」型を実装すべきであり、それにより異なるハーネスが提供することのできる1組の標準サービスを容易にする。渡されるオブジェクトは、属性またはテストメソッドによって必要とされる機能を実装すべきである。このメソッドは、テストハーネスによってテストハーネスが提供する各サービスについてコールされるべきである、これは、一般に、テストメソッドが実行される前に行われる。
GetServiceメソッドは、通常、ある型のテストサービスオブジェクト取り出すためにコールされる。渡される型は、テストサービスオブジェクトによって実装されるインターフェースを表すべきである。そのオブジェクトを実装するオブジェクトが、見つかると、返される。オブジェクトが見つからない場合、そのような結果を示す値が返される(例えば、ヌルを返す)。テストまたは属性が、存在しないテストサービスを要求する場合、実行されているテストメソッドは失敗するはずである。
AddDefaultServices保護メソッドは、通常、構築機能によってコールされる。これは、通常、抽出エンジンなど、テストランタイムがデフォルトで提供するどのテストサービスをも付加するのに使用される。
テストサービス提供オブジェクトデータおよびメソッドコールは、テストハーネスによって設定されたデータが、時間的に後の時点で、テストサービス提供機能への他のコールによって取り出し可能であるように、静的とすべきである。このオブジェクトは、通常、上述の機能を実装するクラスである。通常、このオブジェクトの構築機能を使用してAddDevaultServicesメソッドがコールされる。
抽出エンジン
抽出エンジン222は、特定のテストケースシナリオのためにテストハーネスのテストケースからテストメソッドの順序付けられたリストを取り出すのに使用される。通常、テストランタイムには1つの抽出エンジンだけしか存在しない。
GetTestMethodWrappersメソッドを用いて、テストケースシナリオのためのテストメソッドの順序付けられたリストが取り出される。(テストメソッドラッパーは、テストメソッド実行機能の1つの特定の実装形態である。)パラメータが、テストケースを保持するコンテナを表すメソッドに渡される。このメソッドは、メソッドの順序付けられたリストを返す。テストケースを抽出している間にエラーが発生した場合、例外を「スロー」することができる。テストケースまたはテストメソッドが見つからない場合、普通、空のリストが返される。空のリストは、普通、テストハーネスによって失敗として取り扱われる。抽出エンジンに追加のデータを渡す必要がある場合、TestServicesProviderオブジェクトを介してTestHarnessDataProviderテストサービスによって提供することができる。
抽出エンジンオブジェクトに存在する機能の大部分は異なるランタイム間で同じである。あるランタイムと別のランタイムで大きく異なり得る唯一の詳細は、どの属性が使用されるかだけである。新しい抽出エンジンおよびランタイムの簡単な作成を容易にするようにオブジェクトが作成されるべきである。このクラスは、通常、以下の関数を実装する。
TypeIsATestCaseは、渡された型がテストケースである場合は「真」を、そうでない場合は「偽」を返す。この関数は、テストケース属性を探すことによって型に関して存在する属性を検査して、型がテストケースであるか否か判定する。
MethodIsATestMethodは、渡されたメソッドがテストメソッドである場合は真を、そうでない場合は偽を返す。この関数は、実行属性を探すことによって型に関して存在する属性を検査して、型がテストメソッドであるか否か判定する。
GetMethodWrappersFromTypeは、実行属性を有する、型に関するすべての該当する公開の非静的メソッドを集め、それらのメソッドを(以下で論じる)MethodWrappersの順序付けられたリストとして返す。.NET環境を使用する一実施形態では、このリストは.NET配列に組み込まれたソート機能を用いて順序付けられ、MethodWrapperが比較ルーチンをコールしてリストを順序付ける。その型のインスタンスが作成できない場合、このメソッドは失敗し、空のリストを返す。
抽出エンジンは、テストサービスを用いて、テスト抽出を変更するために使用することができる情報を取り出すことができる。この情報は、テスト抽出情報を格納するために定義されたスキーマに従うXMLファイルなどのファイルに格納することができる。テストサービスによって提供されたデータがスキーマに従ってXMLファイルを参照しない場合、その変更データを無視することができる。
抽出エンジンは、通常、指定されたすべての抽出修飾XMLファイルをロードする。XMLファイルの内容は、例えば、テスト包含とテスト排他という2つの「バケット」に入れられる。両方のバケットが空である場合、抽出エンジンは、すべてのテストを含むべきである。このケースは、抽出修飾XMLファイルがないこと、または抽出エンジンデータソーステストサービスを取り出すことができないことと等価である。排他バケットだけが空である場合、抽出エンジンはすべてのテストを含むべきである。包含バケットだけが空である場合、抽出エンジンは、すべてのテストを含み、排他バケットにリストされたテストを除外すべきである。両方のバケットがデータを有する場合、抽出エンジンは、(排他リストが包含リストに対して制御権限を有するように)排他バケットにリストされていない包含バケット中のテストを含むべきである。
テストメソッド実行機能
テストメソッド実行機能224は、呼び出し側がメソッドまたはその属性について事前の知識を有することを要求することなくテストメソッドを実行するために使用される。Invoke(呼び出し)メソッドがテストメソッドを実行するためにコールされる。その操作の結果を保持するオブジェクトが返される(合格、失敗、スキップなど)。Invokeメソッドは、メソッドに関連付けられた属性を処理し、呼び出されているメソッドのためのパラメータリストを(必要なら)作成する役割を果たす。実行は、通常、テストメソッドに関連付けられた属性によって変更される。
Abort(打ち切り)メソッドをコールして現在実行中のテストメソッドを打ち切ることができる。通常、打ち切りにより、現在実行中のInvokeメソッドが返されることになる。打ち切りが行われた後、普通、さらなるテストを実行することはできない。
CompareToメソッドは、2つのテストメソッドラッパーを比較するためにコールされる。返された結果がゼロ未満である場合、それは、このメソッドを、(そのメソッドが比較される)他方のテストメソッドラッパーの前に実行すべきであることを示す。返された結果がゼロに等しい場合、それは、両メソッドが実行される順序は問題にならないことを示す。返された結果がゼロより大きい場合、それは、そのメソッドを、他方のテストメソッドラッパーの後で実行すべきであることを示す。
GetMethodAttributesメソッドは、共通の基本メソッド属性クラスから派生する、テストメソッドに関連付けられた属性のソートされたリストを取り出すためにコールされる。属性のこのソートされたリストは、テストメソッドラッパーによっていくつかのロケーションで使用される。例えば、(前述の)Invokeメソッドは、このソートされたリストを用いて、正しい順序で属性を評価する。また、GetMethodAttributesを用いて1つのメソッドラッパーを別のメソッドラッパーと比較することができる。「get AttributesDescription」などのコールは、属性の順序付けられたリストを用いて、メソッドに関連付けられた属性のストリング記述を作成する。
テストメソッドラッパーは、「get Description」や「get Name」をコールするなどによって、テストハーネスによる使用のために取り出すことのできるいくつかのプロパティを有する。このプロパティは、メソッドの名前、およびメソッドが定義されたクラスから生成される。他のプロパティも必要に応じて付加することができる。これらのプロパティは、ハーネスがクエリされているテストメソッドについて何かを知っていることを必要とせず、既存のテストハーネスへの変更を要求することなく追加のプロパティを付加することができることに留意されたい。
MethodResultオブジェクトは、テストメソッドラッパーの結果をテストハーネスに伝えるのに使用される。テストハーネスは、必ずしも、呼び出されているメソッドの事前の知識を有するとは限らないので、それらの結果は抽象形で表現される。
このオブジェクトは、通常、メソッドを実行しようとすることによる3つの可能な結果、すなわち合格、スキップまたは失敗を表す必要がある。「合格」は、通常、メソッドがエラーなしで実行を完了したこと(例えば、メソッドが失敗をログしなかった、テストメソッドが例外をスローしなかった、属性のいずれにもエラーがなかったなど)を示すであろう。「エラー」は、メソッドが失敗したこと(例えば、テストメソッドが失敗を示した、または属性が失敗を示したなど)を示すであろう。「スキップ」は、メソッドが実行されずにスキップされたこと(例えば、属性が、テストメソッドはサーバ上でのみ実行すべきであると指定しているが、テストがクライアントマシン上で実行され、その場合、メソッドはスキップされるであろう)を示すであろう。
MethodResultオブジェクトは、結果メッセージおよび/またはエラーメッセージといったオプションのメッセージも含むことができる。結果メッセージは、そのメソッドの結果について人間が読める記述とすることができる。メソッドの正常な実行により、これは空白のままとすることもでき、または記録された合格の数を含むこともできる。エラーが生じた完了メソッドについては、エラーのテキスト記述を含むことができ、他方、エラーメッセージはそのエラーの詳細を含むことができる。
属性によって例外が「スロー」されるとき、TestConditionExceptionクラスを用いて変更されたメソッド状態を伝えることができる。例えば、メソッド状態に直接マップする3つの派生クラスは、TestSkipException、TestSucceededExceptionおよびTestErrorExceptionを含む。
属性223は、通常、テストの実行を変更し、制御するのに使用される。テストはテストケースシナリオに従って実行され、これは属性の使用を通じて定義することができる。属性の少なくとも3つの基本タイプ、すなわち、クラスレベル属性、メソッドレベル属性、パラメータレベル属性を使用することができる。
テストクラス属性はオプションであり、これを使用して、テスト抽出をスキップしたり、または指示された型について複数回行わせたりすることができるように、インスタンス化されたオブジェクト状態を変更することができる。通常、インスタンス化されたオブジェクト状態を変更するのに、事前および事後抽出メソッドが使用される。テストクラス属性は、テストケースシナリオ中のそのような変化が実装され得るようにすることができる。
メソッドレベル属性は、メソッドパラメータおよびメソッド実行を変更することができる。一実施形態では、メソッドレベル属性は、実行属性および補足属性を含む。両属性とも、事前および事後呼び出しメソッドを有する。メソッドレベル属性が評価される順序は順序プロパティによって判定され、これはその属性が書かれるときに定義される。ただし、属性は、通常、どんな他の属性が存在し得るかの事前の知識を持たない。各段階での実行変更は、プライオリティベースの状態システムによって取り扱うことができる。すなわち、通常、最高のプライオリティで状態を返す属性を用いて、どのように実行が変更されるかを判定する。
実行属性は、メソッドをテストメソッドとしてマークするのに使用される。実行属性のないメソッドは、普通、テストには含まれない。実行属性の中心的役割は、テストにハイレベルの順序を確立し、メソッドの結果を評価することである。1つのメソッドは、複数の実行属性を有するべきではない。複数の実行属性が存在するときの抽出および実行の振る舞いは、普通、未定義である。実行属性の例には、「Setup(セットアップ)」属性、「Step(ステップ)」属性、「Teardown(ティアダウン)」属性が含まれる。
補足属性は、補足的アクションを行ってテストメソッドの実行を変更する。補足属性の中心的役割は、テストの実行に必要な二次的タスクを行うことである。それらは、通常、ハイレベルの順序を指示するために使用されない。1つのメソッドは、任意数の補足属性を有することができる。補足属性の例には、「WaitFor」属性および「Target」属性が含まれる。
パラメータレベル属性は、メソッドへのパラメータ入力を変更し、メソッドが実行された後でオブジェクトの状態(例えば、コンテキスト状態)を変更するために、オプション的に使用される。パラメータレベル属性は、普通、メソッドレベル属性が使用されるので、テストの実行を変更するためには使用されない。しかしながら、例外がスローされる場合、テストメソッドは、その例外に応答してすぐに失敗する。一実施形態では、パラメータ当たり1つのパラメータレベル属性だけしかなく、複数のパラメータレベル属性を有する振る舞いは未定義のままとされる。パラメータレベル属性は、メソッドが呼び出される前にメソッドレベル属性が評価された後と、メソッドが呼び出された後でメソッドレベル属性が評価される前に評価される。パラメータレベル属性の一例には、「ContextMapping」属性が含まれる。
MethodStateオブジェクトは、メソッド属性によって、テストメソッドの実行を制御するために使用される。複数の属性を1つのテストメソッドに割り当てることができるので(各属性は潜在的にそのテストメソッドの実行を変更することができるので)、各属性はMethodStateオブジェクトとやりとりしてテストメソッドの一貫した実行を保証することができる。
MethodStateオブジェクトは、実行状態、メッセージ、エラーコードおよび状態オーバライドプライオリティに関連する情報を含むことができる。実行状態は、メソッドがどのように終了したか(例えば、スキップ、合格、失敗)、状態が変更されるのが許されているかどうか、そしてメソッドが実行されるべきかどうかに関する情報を備える。メッセージは、なぜそのテストメソッドが特定の状態にあるかを示すテキストをオプション的に提示するために使用することができる。エラーコードは、テストメソッドを実行している間にテストメソッドラッパーが遭遇する可能性のあるエラーの詳細を示すために使用することができる。状態オーバライドプライオリティフィールドは、新しい状態が既存の状態より大きいプライオリティを有する場合に限って実行状態、メッセージおよびエラーコードを変更可能にすることによって、テストメソッド実行の一貫性を改善するために使用することができる。
テストメソッドラッパー(224)は、終了状態に達するまでテストメソッドを実行する。終了状態に達すると、MethodResultオブジェクトが最終MethodStateオブジェクトから構築される。
実行属性は、メソッド呼び出しから得られた結果をパースする役割を果たす。メソッドが合格したか、それとも失敗したか判定するために、合格および失敗エントリのログを監視することができる。何らかの失敗がログされる場合、そのメソッドは失敗した可能性が高い。合格も失敗もログされなかった場合、そのメソッドも失敗した可能性が高い。例外がテストメソッドまたは任意の属性からスローされた場合、そのメソッドもやはり失敗した可能性が高い。そうでない場合、そのメソッドが(正常に)合格したとみなすことができる。
テストケースシナリオ
一実施形態では、テストケースシナリオ230は、特定のテストケースについてのテストメソッドの実行をコーディネートするオブジェクトのコレクションである。それらのテストメソッドは、テストメソッド実行機能(224)によってまたはテストメソッド実行機能を通して提供されるインターフェースのために、テストハーネスの事前の知識なしで書くことができる。
テストケースシナリオ230は、通常、テストメソッド231およびその他のメソッドおよびデータ232を備える。テストメソッドは、具体的なテストハーネスにクエリすることによってではなく、(テストメソッド実行機能を備える)ランタイムオブジェクトを用いることによってテストハーネスオブジェクトにアクセスする。
テストハーネス
一実施形態では、テストハーネス210は、テストケースの実行をコーディネートし、様々なテストサービスを提供するオブジェクトのコレクションである。テストハーネス210は、通常、UI(ユーザインターフェース)211、実行エンジン212、コンテキストオブジェクト213およびロギングオブジェクト214を備える。追加機能のためのテストハーネスは、自動化システムインターフェースなどの他のオブジェクトを備えることがある。
実行エンジン(212)は、テストランタイム(220)を用いてテストケースシナリオをロードし、実行する役割を果たす。図3に、本発明の態様による、実行エンジンのプロセス300のフローを例示する。開始ブロックの後、プロセスはブロック310に進み、その時点でテストランタイムがロードされる。テストランタイムが.NETで書かれている一実施形態では、テストランタイムアセンブリおよびテストケースシナリオアセンブリがAppDomainにロードされる。テストハーネスは、ロードされた.NETランタイムのバージョンや、使用されているテストランタイムのバージョンなどの情報を表示することができる。
ブロック320で、1つまたは複数のテストケースがメモリにロード/コンパイルされる。それらのテストケースは、事前にコンパイルし、メモリにロードすることも、メモリにロードしてからコンパイルすることもできる。テストハーネスは、テストケースシナリオ、ならびにテストケースシナリオが正常にロードされ、そして/またはコンパイルされたかどうかに関する情報を表示することができる。
ブロック330に進み、抽出エンジンが取得される。抽出エンジンは、まずテストサービス提供オブジェクト(221)を取り出すことによって取得される。次に、基本抽出エンジンの型がテストメソッド実行機能(220)から判定される。テストサービス提供オブジェクト上で静的GetService関数がコールされて(基本抽出エンジンの型をテストサービス提供オブジェクトに渡す)抽出エンジンへの参照が受け取られる。
ブロック340で、テストハーネス機能がテストサービス提供機能に付加される。テストサービス提供機能上でAddServiceメソッドを用いて、テストサービス提供機能に、テストハーネス上で実装されるテストサービスが付加される。それらのテストサービスは、リブート機構、ロギング、コンテキストなど様々なインターフェースを実装するオブジェクトを含む。抽出エンジンにデータを渡すことが望ましい場合(例えば、あるメソッドを含むか、またはスキップすべきであろうことを指定するXMLファイルなど)、テストハーネスデータ提供インターフェースを実装するテストサービスオブジェクトを使用することができる。
ブロック350で、抽出エンジンを用いてテストケースステップを得る。ブロック330で得られた抽出エンジンを用いて抽出エンジンのGetTestMethodWrappersメソッドをコールし、そのメソッドに、テストケースを保持するAppDomainを渡す。通常、TestMethodWrappersの配列が返される。
メソッドラッパーの配列は、通常、テストアクションがその配列中に存在する順序で実行されるべきテストアクションのリストを収容する。(抽出エンジンは、通常、配列を順序付ける役割を果たす。)
ブロック360で、ブロック350で取り出されたメソッドのリストが、それらのメソッドがリストされている順序で実行される。各メソッドは、Invokeメソッドをコールすることによって実行される。この呼び出しメソッドは、通常、テストアクションの結果に関する詳細を返す。この詳細は、成功/失敗/スキップ、ならびに追加の詳細を含むことができる。この結果の詳細は、例えば、ログしたり、またはUIを更新したりするために使用することができる。
図4に、本発明の態様による、実行エンジンのプロセス400のフローを例示する。各テストアクションについて、プロセス400が繰り返される。実行エンジンは、InvokeInstanceMethodをコールして、特定のテストアクションの実行を開始する。InvokeInstanceMethodは、InstanceMethodをコールしてその特定のテストアクションを呼び出す。次に、InstanceMethodは、メソッドラッパー(すなわち、テストメソッド実行機能例)をコールしてその特定のテストアクションを呼び出す。
メソッドラッパーは、特定のテストアクションの属性(事前呼び出し)を評価し、実行する。メソッドラッパーは次に、評価/実行されたテストメソッドに従ってテストメソッドを呼び出す。テストメソッドが実行された後、その属性が再び評価/実行される(事後呼び出し)。メソッドラッパーは、事後呼び出し属性評価の結果を解釈し、その結果を知らせる値を返す。ActionResultがInstanceMethodに、そしてInvokeInstanceMethodに渡される。InvokeInstanceMethodは戻り値を評価し、その結果を実行エンジンに渡す。
本発明のさらなる説明として、以下に擬似コードのリストを提供する。
Figure 2005293578
Figure 2005293578
Figure 2005293578
Figure 2005293578
Figure 2005293578
Figure 2005293578
Figure 2005293578
Figure 2005293578
Figure 2005293578
Figure 2005293578
上記の仕様、例およびデータは、本発明の構成の作成および使用の完全な説明を提供するものである。本発明の多くの実施形態が本発明の趣旨および範囲を逸脱することなく実施することができるので、本発明は本明細書に添付した特許請求の範囲に存する。
本発明の例示的な一実施形態で使用することのできる例示的なコンピューティングデバイスを示す図である。 本発明を実施するための例示的な環境を示すブロック図である。 本発明の態様による実行エンジンのプロセス300フローを示す図である。 本発明の態様による実行エンジンのプロセス400フローを示す図である。
符号の説明
100 コンピューティングデバイス
102 処理ユニット
104 システムメモリ
105 オペレーティングシステム
106 アプリケーション
107 プログラムデータ/ヒープ
109 リムーバブルストレージ
110 非リムーバブルストレージ
112 入力デバイス
114 出力デバイス
116 通信接続
118 他のコンピューティングデバイス
120 ヒープAPI
200 テスト自動化システム
210 テストハーネス
211 ユーザインターフェース
212 実行エンジン
213 コンテキスト
214 ロギング
215 同期
220 ランタイム
221 テストサービス提供機能
222 抽出エンジン
223 属性
224 テストメソッド実行機能
230 テストケースシナリオ
231 テストメソッド
232 その他のメソッド/データ

Claims (29)

  1. コンピュータ実行可能コンポーネントを有するコンピュータ可読媒体であって、
    電子システムをテストするように構成されたテストメソッドを備えたテストケースシナリオオブジェクトであって、前記テストメソッドは基本クラスおよびサブクラスを備えた階層として構成され、前記サブクラスのそれぞれは前記基本クラスから派生し、継承の原理が前記階層内のメソッドの構成に従って各テストメソッドに適用されるテストケースシナリオオブジェクトと、
    前記テストメソッドにシステムテストサービスを提供するように構成されたテストハーネスと
    を備えたことを特徴とするコンピュータ可読媒体。
  2. 前記継承の原理は、サブクラステストメソッドに選択的に適用されることを特徴とする請求項1に記載のコンピュータ可読媒体。
  3. 前記サブクラステストメソッドは、前記継承の原理を適用するかどうかを判定するように構成された属性を備えたことを特徴とする請求項1に記載のコンピュータ可読媒体。
  4. 前記テストメソッドを前記階層に従って順序付けるように構成されたテスト抽出エンジンをさらに備えたことを特徴とする請求項1に記載のコンピュータ可読媒体。
  5. 前記テスト抽出エンジンは、前記属性内で定義された比較関数を用いて前記階層に従って前記テストメソッドを順序付けるように構成されたことを特徴とする請求項4に記載のコンピュータ可読媒体。
  6. 前記基本クラステストメソッドは、セットアップメソッドおよびティアダウンメソッドを備えたことを特徴とする請求項1に記載のコンピュータ可読媒体。
  7. 前記サブクラステストメソッドは、セットアップメソッドおよびティアダウンメソッドを備えたことを特徴とする請求項6に記載のコンピュータ可読媒体。
  8. 自動化されたテストのための方法であって、
    電子システムをテストするように構成されるテストメソッドを提供することと、
    前記提供されたテストメソッドを、基本クラスおよびサブクラスを備える階層として構成することであって、前記サブクラスのそれぞれが前記基本クラスから派生することと、
    前記階層内のメソッドの構成に従って各テストメソッドに継承の原理を適用することと、
    テストハーネスを用いて前記テストメソッドにシステムテストサービスを提供することと
    を備えることを特徴とする方法。
  9. 前記継承の原理は、サブクラステストメソッドに選択的に適用されることを特徴とする請求項8に記載の方法。
  10. 前記継承の原理をサブクラステストメソッドの属性の状態に従って適用するかどうかを判定することをさらに備えることを特徴とする請求項8に記載の方法。
  11. 前記テストメソッドを前記階層に従って順序付けることをさらに備えることを特徴とする請求項8に記載の方法。
  12. 前記属性内で定義される比較関数を用いて前記テストメソッドを前記階層に従って順序付けることをさらに備えることを特徴とする請求項11に記載の方法。
  13. 前記基本クラステストメソッドは、セットアップメソッドおよびティアダウンメソッドを備えることを特徴とする請求項8に記載の方法。
  14. 前記サブクラステストメソッドは、セットアップメソッドおよびティアダウンメソッドを備えることを特徴とする請求項13に記載の方法。
  15. テスト自動化システムであって、
    電子システムをテストするように構成されたテストメソッドを備えたテストケースシナリオオブジェクトであって、前記テストメソッドは基本クラスおよびサブクラスを備えた階層として構成され、前記サブクラスのそれぞれは前記基本クラスから派生し、継承の原理が前記階層内のメソッドの構成に従って各テストメソッドに適用されたテストケースシナリオオブジェクトと、
    前記テストメソッドにシステムテストサービスを提供するように構成されたテストハーネスと
    を備えたことを特徴とするシステム。
  16. 前記継承の原理は、サブクラステストメソッドに選択的に適用されることを特徴とする請求項15に記載のシステム。
  17. 前記サブクラステストメソッドは、前記継承の原理を適用するかどうかを判定するように構成された属性を備えたことを特徴とする請求項15に記載のシステム。
  18. 前記テストメソッドを前記階層に従って順序付けるように構成されたテスト抽出エンジンをさらに備えたことを特徴とする請求項15に記載のシステム。
  19. 前記テスト抽出エンジンは、前記属性内で定義された比較関数を用いて前記テストメソッドを前記階層に従って順序付けるように構成されたことを特徴とする請求項18に記載のシステム。
  20. 前記基本クラステストメソッドは、セットアップメソッドおよびティアダウンメソッドを備えたことを特徴とする請求項15に記載のシステム。
  21. 前記サブクラステストメソッドは、セットアップメソッドおよびティアダウンメソッドを備えたことを特徴とする請求項15に記載のシステム。
  22. テスト自動化システムであって、
    電子システムをテストするように構成されたテストメソッドを提供するための手段と、
    前記提供されたテストメソッドを、基本クラスおよびサブクラスを備えた階層として構成するための手段であって、前記サブクラスのそれぞれが前記基本クラスから派生する手段と、
    継承の原理を前記階層内のメソッドの構成に従って各テストメソッドに適用するための手段と、
    テストハーネス手段を用いて前記テストメソッドにシステムテストサービスを提供することと
    を備えたことを特徴とするシステム。
  23. 前記継承の原理は、サブクラステストメソッドに選択的に適用されることを特徴とする請求項22に記載のシステム。
  24. 前記継承の原理をサブクラステストメソッドの属性の状態に従って適用するかどうかを判定するための手段をさらに備えたことを特徴とする請求項22に記載のシステム。
  25. 前記テストメソッドを前記階層に従って順序付けるための手段をさらに備えたことを特徴とする請求項22に記載のシステム。
  26. 前記階層内で定義された比較関数を用いて前記テストメソッドを前記階層に従って順序付けるための手段をさらに備えたことを特徴とする請求項25に記載のシステム。
  27. 前記基本クラステストメソッドは、セットアップメソッドおよびティアダウンメソッドを備えたことを特徴とする請求項22に記載のシステム。
  28. 前記サブクラステストメソッドは、セットアップメソッドおよびティアダウンメソッドを備えたことを特徴とする請求項27に記載のシステム。
  29. サブクラステストメソッドの状態を前記サブクラステストメソッドによって継承された属性に応答して変更するための手段をさらに備えたことを特徴とする請求項22に記載のシステム。
JP2005091718A 2004-03-31 2005-03-28 属性を介して制御されるテストケース継承 Pending JP2005293578A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/815,019 US7552422B2 (en) 2004-03-31 2004-03-31 Test case inheritance controlled via attributes

Publications (2)

Publication Number Publication Date
JP2005293578A true JP2005293578A (ja) 2005-10-20
JP2005293578A5 JP2005293578A5 (ja) 2008-05-15

Family

ID=34887733

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005091718A Pending JP2005293578A (ja) 2004-03-31 2005-03-28 属性を介して制御されるテストケース継承

Country Status (6)

Country Link
US (1) US7552422B2 (ja)
EP (1) EP1582985B1 (ja)
JP (1) JP2005293578A (ja)
KR (1) KR101036679B1 (ja)
CN (1) CN100468356C (ja)
AT (1) ATE512406T1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007097014A1 (ja) * 2006-02-27 2007-08-30 Knowledge Brain Inc 情報システムの動作確認方法、その動作確認プログラム、記録媒体及び動作確認システム
JP2011100420A (ja) * 2009-11-09 2011-05-19 Toshiba Corp テストプログラム作成装置
JP2015035216A (ja) * 2013-08-07 2015-02-19 飛捜股▲ふん▼有限公司 アプリケーションプログラムサーチの方法及びそのシステム

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060106819A1 (en) * 2004-10-28 2006-05-18 Komateswar Dhanadevan Method and apparatus for managing a computer data storage system
US7895575B2 (en) 2005-08-19 2011-02-22 Electronics And Telecommunications Research Institute Apparatus and method for generating test driver
KR100777103B1 (ko) * 2005-08-19 2007-11-19 한국전자통신연구원 테스트 드라이버 생성 장치 및 방법
CN100346308C (zh) * 2005-11-24 2007-10-31 华为技术有限公司 一种基于数据库操作的自动化测试方法
US8296731B2 (en) * 2007-03-05 2012-10-23 Microsoft Corporation Dynamic method selection based on declarative requirements of interaction scope
KR101014679B1 (ko) * 2007-09-14 2011-02-16 주식회사 신한은행 시나리오를 이용한 프로그램 소스코드 테스트 시스템
US8463760B2 (en) * 2008-09-04 2013-06-11 At&T Intellectual Property I, L. P. Software development test case management
CN101984412B (zh) * 2010-10-13 2013-01-30 北京航空航天大学 一种基于分组和禁忌搜索的并行测试任务调度方法
US8677320B2 (en) 2011-04-06 2014-03-18 Mosaic, Inc. Software testing supporting high reuse of test data
CN103064785B (zh) * 2012-12-04 2016-03-30 北京奇虎科技有限公司 一种终端性能的检测方法和装置
CN103019900B (zh) * 2012-12-04 2016-10-26 北京奇虎科技有限公司 终端性能的检测结果显示方法和装置
US9785542B2 (en) * 2013-04-16 2017-10-10 Advantest Corporation Implementing edit and update functionality within a development environment used to compile test plans for automated semiconductor device testing
US20160239409A1 (en) * 2013-10-17 2016-08-18 Hewlett Packard Enterprise Development Lp Testing a web service using inherited test attributes
CN105637500A (zh) * 2013-10-17 2016-06-01 慧与发展有限责任合伙企业 使用继承的测试属性对网络服务进行测试
US10546075B2 (en) 2015-05-15 2020-01-28 Futurewei Technologies, Inc. System and method for a synthetic trace model
CN106227666B (zh) * 2016-07-25 2019-05-17 微梦创科网络科技(中国)有限公司 一种基于大数据的自动化测试方法及系统
CN110737597A (zh) * 2019-10-15 2020-01-31 北京弘远博学科技有限公司 一种基于教育培训平台的ui层自动化测试方法
CN111625445A (zh) * 2020-04-23 2020-09-04 平安国际智慧城市科技股份有限公司 基于Java的测试框架构建方法、装置及存储介质
US11714745B1 (en) 2021-02-23 2023-08-01 State Farm Mutual Automobile Insurance Company Software testing in parallel with different database instances
US11816023B1 (en) * 2021-02-23 2023-11-14 State Farm Mutual Automobile Insurance Company Test conflict guard for parallel software testing
US11537508B1 (en) 2021-02-23 2022-12-27 State Farm Mutual Automobile Insurance Company Software testing in parallel threads with a record-locking database
US11720482B1 (en) 2021-02-23 2023-08-08 State Farm Mutual Automobile Insurance Company Retrying failed test cases in software testing using parallel threads

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5414836A (en) * 1993-09-29 1995-05-09 International Business Machines Corporation Software testing system that employs a graphical interface to generate test cases configured as hybrid tree structures
US5751941A (en) * 1996-04-04 1998-05-12 Hewlett-Packard Company Object oriented framework for testing software
US6031990A (en) * 1997-04-15 2000-02-29 Compuware Corporation Computer software testing management
US6430705B1 (en) * 1998-08-21 2002-08-06 Advanced Micro Devices, Inc. Method for utilizing virtual hardware descriptions to allow for multi-processor debugging in environments using varying processor revision levels

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007097014A1 (ja) * 2006-02-27 2007-08-30 Knowledge Brain Inc 情報システムの動作確認方法、その動作確認プログラム、記録媒体及び動作確認システム
JPWO2007097014A1 (ja) * 2006-02-27 2009-07-09 則彦 竹林 情報システムの動作確認方法、その動作確認プログラム、記録媒体及び動作確認システム
JP2011100420A (ja) * 2009-11-09 2011-05-19 Toshiba Corp テストプログラム作成装置
JP2015035216A (ja) * 2013-08-07 2015-02-19 飛捜股▲ふん▼有限公司 アプリケーションプログラムサーチの方法及びそのシステム

Also Published As

Publication number Publication date
ATE512406T1 (de) 2011-06-15
EP1582985A3 (en) 2009-11-18
EP1582985B1 (en) 2011-06-08
US7552422B2 (en) 2009-06-23
EP1582985A2 (en) 2005-10-05
KR101036679B1 (ko) 2011-05-23
CN1677365A (zh) 2005-10-05
KR20060045072A (ko) 2006-05-16
CN100468356C (zh) 2009-03-11
US20050251719A1 (en) 2005-11-10

Similar Documents

Publication Publication Date Title
JP2005293578A (ja) 属性を介して制御されるテストケース継承
US11853774B2 (en) Dynamically loaded plugin architecture
US20190324772A1 (en) Method and device for processing smart contracts
JP6832288B2 (ja) クラウドベースの統合サービスにおいてソースエレメントをターゲットエレメントにインテリジェントにマッピングするシステムおよび方法
US7882492B2 (en) Intelligent computer program debugger, and system and method for implementing the same
CN109189374B (zh) 基于对象引用链的对象构造代码生成方法及系统
CN109189469B (zh) 基于反射的安卓应用微服务化方法及系统
US9569181B2 (en) System and method for supporting an object oriented scripting tool
US8510712B1 (en) Testing in-container software objects
JP2006099737A (ja) テスト自動化のスタック階層化
US20090193444A1 (en) Techniques for creating and managing extensions
KR20070049166A (ko) 목표 기기 상에서의 종속 소프트웨어 패키지의 검출 및이용을 자동화하기 위한 방법 및 소프트웨어 리포지터리를생성하기 위한 시스템
US7340725B1 (en) Smart test attributes and test case scenario in object oriented programming environment
CN108614702B (zh) 字节码优化方法及装置
US20080005752A1 (en) Methods, systems, and computer program products for generating application processes by linking applications
CN109240666B (zh) 基于调用栈和依赖路径的函数调用代码生成方法及系统
US7567257B2 (en) Partition-based undo of partitioned object graph
US7577541B1 (en) Test services provider
CN109284222B (zh) 软件单元、数据处理系统中的项目测试方法、装置及设备
CN111625225A (zh) 一种程序指定数据输出方法和装置
US7082376B1 (en) State full test method executor
CN114020278B (zh) 数据处理方法、装置、设备及存储介质
CN107632934B (zh) 一种C-sharp中函数复制方法及装置
Djurkovic et al. Firefox Concrete Architecture

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080328

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080328

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110624

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110921

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120131

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120427

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120727