(57)【要約】  本発明の目的は、抽象表現からのテストケースのルールベースの生成を使って、テストケースを生成するための方法、およびシステムの改善を提供することである。
2007519104.tif 000002
【特許請求の範囲】
【請求項１】
データ記憶装置からのテストケースのアプリケーション状態、外部交信シーケンス、及び入力データを含む抽象表現から、テストケースのルールベースの生成を提供するステップと、
生成されたテストケースを検証するステップと、
前記テストケースをテストスクリプトに変換するステップと
を含むことを特徴とする、テストケースを生成するための方法。
【請求項２】
データ記憶装置が、リレーショナルデータベース管理システムである
ことを特徴とする、請求項１に記載の方法。
【請求項３】
データ記憶装置が、ＸＭＬデータベース管理システムである
ことを特徴とする、請求項１に記載の方法。
【請求項４】
データ記憶装置が、ファイルシステムである
ことを特徴とする、請求項１に記載の方法。
【請求項５】
アプリケーション状態が、外部交信の状況を定める、テスト中のアプリケーションの実行時スナップショットを表す
ことを特徴とする、請求項１に記載の方法。
【請求項６】
前記アプリケーション状態が、アプリケーションオブジェクトのセット、その属性、及び属性値を含む
ことを特徴とする、請求項５に記載の方法。
【請求項７】
テストケースに対応する前記アプリケーション状態は、階層式に配置される
ことを特徴とする、請求項５に記載の方法。
【請求項８】
前記外部交信シーケンスは、アプリケーションオブジェクト上で外部エージェントによって起動されるイベントを表す
ことを特徴とする、請求項１に記載の方法。
【請求項９】
前記外部エージェントは、人間エージェント、又は他のソフトウェアエージェントである
ことを特徴とする、請求項８に記載の方法。
【請求項１０】
前記交信シーケンスは、順次の、同時の、ループの、及び条件付きの交信を捕らえるためのフロー制御構造を含む
ことを特徴とする、請求項８に記載の方法。
【請求項１１】
生成されたテストケースの前記検証が、内部、及び外部検証を含む
ことを特徴とする、請求項１に記載の方法。
【請求項１２】
前記内部検証は、テストケース定義の構成要素、外部交信シーケンス、及び入力データが互いに整合し、かつアプリケーションオブジェクトモデルと整合することを、確実にする
ことを特徴とする、請求項１１に記載の方法。
【請求項１３】
アプリケーションオブジェクトモデルは、テスト中のアプリケーションをモデル化するためのメタデータ表現である
ことを特徴とする、請求項１２に記載の方法。
【請求項１４】
前記メタデータ表現が、アプリケーションオブジェクトにおけるオブジェクト型定義を含む
ことを特徴とする、請求項１３に記載の方法。
【請求項１５】
前記メタデータ表現が、各アプリケーションオブジェクト型における属性定義を含む
ことを特徴とする、請求項１３に記載の方法。
【請求項１６】
前記メタデータ表現が、各アプリケーションオブジェクト型によってサポートされる方法、及びイベントの定義を含む
ことを特徴とする、請求項１３に記載の方法。
【請求項１７】
前記メタデータ表現が、イベントのアプリケーション状態への影響の定義を含む
ことを特徴とする、請求項１３に記載の方法。
【請求項１８】
アプリケーションオブジェクト型定義が、各アプリケーションオブジェクト型の、階層型、コンテナ型、及び単純型への更なるカテゴリ分類を含む
ことを特徴とする、請求項１４に記載の方法。
【請求項１９】
前記階層オブジェクト型は、それ自身のアプリケーション状態と関連付けられ、他のオブジェクトのインスタンスを収容し得るアプリケーションオブジェクト型は、コンテナ型と呼ばれる
ことを特徴とする、請求項１８に記載の方法。
【請求項２０】
階層アプリケーションオブジェクト型と関連付けられる前記状態は、モーダルなアプリケーション状態、或いは非モーダルなアプリケーション状態である
ことを特徴とする、請求項１９に記載の方法。
【請求項２１】
モーダルなアプリケーション状態は、現在の前記アプリケーション状態内で利用可能なアプリケーションオブジェクトインスタンスへの可能性な交信を制限する
ことを特徴とする、請求項２０に記載の方法。
【請求項２２】
前記イベントのアプリケーション状態への影響は、前記イベントの前記アプリケーション状態への１又はそれ以上の結果を捕らえる
ことを特徴とする、請求項１７に記載の方法。
【請求項２３】
イベントの結果は、所定の型の新しいオブジェクトインスタンスの作成、所定の型のオブジェクトインスタンスの削除、既存のオブジェクトインスタンスの属性の変更、及びオブジェクト型のインスタンスの選択、から選択される
ことを特徴とする、請求項２２に記載の方法。
【請求項２４】
階層的な型のオブジェクトの新しいインスタンスの作成は、新しいアプリケーション状態の作成という結果になる
ことを特徴とする、請求項２３に記載の方法。
【請求項２５】
階層的な型のオブジェクトインスタンスの選択は、該オブジェクトインスタンスと関連付けられる前記アプリケーション状態の選択という結果になる
ことを特徴とする、請求項２３に記載の方法。
【請求項２６】
前記外部検証は、前記生成されたテストケースを、アプリケーションメタデータレポジトリに対して検証する
ことを特徴とする、請求項１１に記載の方法。
【請求項２７】
前記アプリケーションメタデータレポジトリは、アプリケーションオブジェクトの定義、及びテスト中の前記アプリケーション内のそれらの交信の性質を収容する
ことを特徴とする、請求項２６に記載の方法。
【請求項２８】
前記外部検証は、前記テストケースにおける静的な検証テストの役割を果たす
ことを特徴とする、請求項２６に記載の方法。
【請求項２９】
前記外部検証は、無効なテストケースを選び出すことにより、生産性を増大させる
ことを特徴とする、請求項２６に記載の方法。
【請求項３０】
前記外部検証は、静的に検証可能なアプリケーション挙動における不整合を選び出すことにより、生産性を増大させる
ことを特徴とする、請求項２６に記載の方法。
【請求項３１】
前記テストスクリプトは、スクリプト言語で表現されたテストケースである
ことを特徴とする、請求項１に記載の方法。
【請求項３２】
前記スクリプト言語は、テストケースを記録又は作成するために使用される型付けされた、或いは型付けされないスクリプト言語とすることができる
ことを特徴とする、請求項３１に記載の方法。
【請求項３３】
テストケース定義の構成要素、外部交信シーケンス、及び入力データ、の選択のためのルール；データ駆動テストケース生成のためのルール、を提供するステップ
をさらに含むことを特徴とする、請求項１に記載の方法。
【請求項３４】
前記選択ルールは、クエリ言語を使って示される
ことを特徴とする、請求項３３に記載の方法。
【請求項３５】
前記クエリ言語は、構造化クエリ言語（ＳＱＬ）である
ことを特徴とする、請求項３４に記載の方法。
【請求項３６】
前記クエリ言語は、ＸＭＬクエリ（ＸＱｕｅｒｙ）である
ことを特徴とする、請求項３４に記載の方法。
【請求項３７】
前記クエリ言語は、プログラミング言語で書かれたコードから呼び出されるアプリケーションプログラミングインターフェース（ＡＰＩ）である
ことを特徴とする、請求項３４に記載の方法。
【請求項３８】
前記クエリ言語の使用は、テストケースを生のカスタマデータから生成することを可能にする
ことを特徴とする、請求項３４に記載の方法。
【請求項３９】
前記データ駆動テストケース生成は、前記入力データによって要求されるように、前記テストケースを構成することを含む
ことを特徴とする、請求項３３に記載の方法。
【請求項４０】
前記入力データへの複数のデータセットの可用性は、複数のテストケースの生成、又は各データセットにおけるループ制御構造内で繰り返される外部交信シーケンス、という結果になるであろう
ことを特徴とする、請求項３９に記載の方法。
【請求項４１】
前記入力データの一部分への複数のデータセットの可用性は、ループ制御構造内で繰り返される入力データのこの部分に対応する前記交信シーケンス、という結果になるであろう
ことを特徴とする、請求項３９に記載の方法。
【請求項４２】
入力データの各要素に、有効、又は無効のフラグを立てることができる
ことを特徴とする、請求項３９に記載の方法。
【請求項４３】
前記テストケースが記録、又は作成されたときの前記入力データに対応するものとは異なる該入力データ内の前記有効性フラグの存在は、例外処理のための適切な交信シーケンスを含む生成器という結果になる
ことを特徴とする、請求項４２に記載の方法。
【請求項４４】
言語マッピングを通して、テストケースを、内部表現からスクリプト言語へ変換するステップ
をさらに含むことを特徴とする、請求項１に記載の方法。
【請求項４５】
前記マッピングを使用して、アプリケーションオブジェクト上のイベントとして捕らえられた外部交信を、前記スクリプト言語による適切な命令文にマップする
ことを特徴とする、請求項４４に記載の方法。
【請求項４６】
１より多くの言語マッピングを同時に提供する
ことを特徴とする、請求項４４に記載の方法。
【請求項４７】
前記生成されたテストケースを、同時に、１より多くのスクリプト言語に変換する
ことを特徴とする、請求項４４に記載の方法。
【請求項４８】
複数のスクリプト言語でテストケースを生成することは、複数のテスト実行環境におけるテストスクリプトの生成を可能にする
ことを特徴とする、請求項４７に記載の方法。
【請求項４９】
プロセッサと、
データ記憶装置からのテストケースのアプリケーション状態、外部交信シーケンス、及び入力データを含む抽象表現からのテストケースのルールベースの生成を格納して、テストケースを作り出す、前記プロセッサに結合されたメモリと、
前記テストケースを検証するロジックと、
前記テストケースをテストスクリプトに変換するためのロジックと
を備えることを特徴とする、コンピュータシステム。
【請求項５０】
前記テストケースを検証する前記ロジックは、テストケース定義の構成要素、外部交信シーケンス、及び入力データが互いに整合し、かつアプリケーションオブジェクトモデルと整合することを提供する
ことを特徴とする、請求項４９に記載のシステム。
【請求項５１】
前記テストケースを検証する前記ロジックは、外部検証ロジックである
ことを特徴とする、請求項４９に記載のシステム。
【請求項５２】
前記外部検証ロジックは、生成されたテストケースをアプリケーションメタデータレポジトリに対して検証することを含む
ことを特徴とする、請求項５１に記載のシステム。
【請求項５３】
テストケース定義の構成要素、外部交信シーケンス、及び入力データの選択のためのルールを提供するためのロジック
を更に備え、前記ルールはデータ駆動テストケース生成である
ことを特徴とする、請求項４９に記載のシステム。
【請求項５４】
データ駆動テストケース生成を提供するためのロジック
をさらに備えることを特徴とする、請求項４９に記載のシステム。
【請求項５５】
データ駆動テストケース生成を提供するための前記ロジックが、前記入力データによって要求されるように前記テストケースを構成することを含む
ことを特徴とする、請求項５４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、テストケースを生成するためのシステム、及び方法に関するものであり、特に、抽象表現からのテストケースのルールベース生成を使用して、テストケースを生成するための方法、及びシステムに関するものである。
【背景技術】
【０００２】
バグを発見する点で、十分な達成度、及び有効性を提供する適切なテストケースの作成、及び保守は、非常に困難、かつ大量のリソースを要する作業である。テストケース管理についての現行の手法は、テストケースの所望のレベルの再利用性、及び保守の容易性を確実にするものではない。これは、バージョンごとの、環境ごとの、及びプラットフォームごとの、繰り返しサイクルのテストケースの作り直しという結果になる。
【０００３】
テストケース作成に対する現行の手法は、多くのプログラミング言語のうちの１つによる手動プログラミングか、或いは記録／再生システムを使ったテストケースの記録か、のいずれかである。両方の手法において、テストケースは、テストスクリプトとして知られる一連のプログラミング言語の命令文として、作成及び管理される。そして、これらのテストスクリプトは、ストレージディスク上のファイルのようにそれらを扱うユーティリティのセットによって、管理される。
【０００４】
このようにテストケースを保守することの不利な点の１つは、それらが、ターゲット実行環境と結び付けられることである。様々なテスト実行環境が様々なスクリプト言語をサポートしており、これらの環境において、様々な命令文によって、同じ動作が表現される。ソフトウェア事業会社が、テスト実行システムを変更することを決定した場合には、それらの全てのテストケースを、新しい環境において作り直さなければならない。
【０００５】
そのような努力に必要な相当な投資を考慮すると、多くのソフトウェア開発組織が、単一のベンダのテスト実行環境と結び付けられるであろう。さらに、カスタマイズされた環境におけるテスト事業アプリケーションはまた、難問を提示する。殆どの事業アプリケーションは、それらのカスタマ環境において、実質的にカスタマイズされる。標準の試験項目群に対してアプリケーションをテストすることは、そのアプリケーションが望ましくない方法で変更されないことを確実にすることができる。
【０００６】
そのようなテストケースを提供することは、顧客のサイトにおいて、そのようなアプリケーションにおけるロールアウト時間を減らし、並びに、フィールドサポート作業の効率を高めることができる。顧客がソフトウェアプロバイダと同じテスト実行環境をサポートすることが出来ないと、これが不可能となる。
【０００７】
事業アプリケーションは、大量のプラットフォーム間にわたるテストを必要とする。これらのプラットフォームは、オペレーティングシステム、データベースシステム、及びそれらとともに機能するアプリケーション、の技術スタックを含む。テストケースの効率的な管理のために、スクリプトは、如何なる特定のプラットフォームとも結び付けられるべきではない。
【０００８】
殆ど全ての事業アプリケーションは、国際化、及び地域化をサポートしており、様々な言語、及び様々な地域フォーマットによるデータセットで、同じテストを実施できることが重要である。これを実現するために、データセットを、テストシナリオから切り離さなければならない。テストケースをスクリプトとして管理するとき、これは、スクリプトを手動でパラメータ化することを必要とする。これもまた、よりスキルの高い当業者の労働というかなりの投資を含むものである。
【０００９】
前のパラグラフで説明したように、パラメータ化されたテストケースはまた、十分な有効範囲を確実にすることが必要とされる。例えば、様々なデータセット、様々な境界条件値で、同じテストシナリオを実行して、システムの適切な機能を保証しなければならない。
【００１０】
事業アプリケーションが、１つにリリースから次のリリースへと移るとき、ユーザインターフェースに対するレイアウト変更のような微妙な変更さえも、テストケースに対する変更という結果になり得る。スクリプトを使用したテストケース表現内での抽象化の欠如は、実質的に、テストケースの再利用性を低減し、保守コストを増大させる。
【００１１】
全ての事業アプリケーションは、多くの異なる状況において繰り返される機能性を有する。モジュール式にテストケースを作成できる能力は、それらの再利用性を高める。同じ機能性についてのテストケースは、同じ機能性を使用するテストシナリオで再利用することができる。殆どのスクリプト環境は、プロシージャのサポートを通して、モジュール性を提供する。テストケースは、手続き抽象化を包含するだけでなく、データ抽象化もまた包含するので、そのような手続き抽象化は、それらの能力の点で制限される。テストケースを、モジュール式に構築し、効率的かつ効果的に再結合することができるように、テストケース管理システム内での適切な抽象化を考案すべきである。
【００１２】
テストケースを生成するためのシステム、及び方法の改善の必要性が存在する。抽象表現からのテストケースのルールベースの生成を使用して、テストケースを生成するための方法、及びシステムの改善の更なる必要性も存在する。
【００１３】
（本発明の要約）
従って、本発明の目的は、テストケースを生成するためのシステム、及び方法の改善を提供することである。
【００１４】
本発明のもう１つの目的は、抽象表現からのテストケースのルールベースの生成を使って、テストケースを生成するための方法、およびシステムの改善を提供することである。
【００１５】
本発明の更にもう１つの目的は、データ記憶装置からのテストケースのアプリケーション状態、外部交信シーケンス、及び入力データ、を含む抽象表現からのテストケースのルールベースの生成を使って、テストケースを生成するための方法、及びシステムを提供することである。
【００１６】
本発明の更なる目的は、外部交信の状況を定める、テスト中のアプリケーションの実行時スナップショットを表すアプリケーション状態、を含む抽象表現からのテストケースのルールベースの生成を使って、テストケースを生成するための方法、及びシステムを提供することである。
【００１７】
本発明のもう１つの目的は、アプリケーションオブジェクトのセット、その属性、及び属性値を含むアプリケーション状態、を含む抽象表現からのテストケースのルールベースの生成を使って、テストケースを生成するための方法、及びシステムを提供することである。
【００１８】
本発明のこれら、及び他の目的は、テストケースを生成するための方法で実現される。テストケースのルールベースの生成は、データ記憶装置からのテストケースのアプリケーション状態、外部交信シーケンス、及び入力データ、を含む抽象表現から提供される。生成されたテストケースは、検証される。次に、テストケースは、テストスクリプトに変換される。
【００１９】
本発明の更なる実施形態では、メモリに結合されたプロセッサを含むコンピュータシステムが、提供される。メモリは、データ記憶装置からのテストケースのアプリケーション状態、外部交信シーケンス、及び入力データ、を含む抽象表現からのテストケースのルールベースの生成を格納して、テストケースを作り出す。ロジックが、テストケースを検証する。ロジックは、テストケースをテストスクリプトに変換する。
【００２０】
（好ましい実施形態の詳細な説明）
図１及び２を参照すると、本発明の一実施形態は、テストケースを変換するためのシステム１０、及び方法である。１又はそれ以上のスクリプト言語で書かれたテストケース１２が、移入される。次に、テストケース１２は、１又はそれ以上のアプリケーション状態１６、外部交信シーケンス１８、及び入力データ２０、を含む抽象表現１４に変換される。抽象表現１４は、データベースシステム２２に格納される。リレーショナルデータベース管理システム、ＸＭＬデータベース管理システム等を含むがそれらに限定されない、様々な異なるデータベースシステム２２を利用することができる。
【００２１】
アプリケーション状態１６は、外部交信の状況を定める、テスト中のアプリケーションの実行時スナップショットを表す。図３に示す一実施形態では、アプリケーション状態１６は、例えばウェブページ、又はウィンドウ制御、又はアカウントオブジェクトのような、アプリケーションオブジェクト２４のセットである。各アプリケーションオブジェクト２４は、属性２６、及びそれらの値のセットと関連付けられる。例えば、ウェブページは、現在のウェブページに対応するユニフォームリソースロケータ（ＵＲＬ）を含むユーアールエルと呼ばれる属性２６、現在のウェブページのタイトルを含むタイトルと呼ばれる属性２６を持つことができる。一実施形態では、アプリケーション状態１６のセットが、テストケース１２で表され、階層式に配置される。
【００２２】
利用されるスクリプト言語は、テストケースを記録、又は書くためのに使用される型付けされた、或いは型付けされないプログラミング言語とすることができる。外部交信シーケンス１８は、アプリケーションオブジェクト２４上で外部エージェント２８によって起動されたイベントを表すことができる。外部エージェント２８は、人間エージェントか、或いは他のソフトウェアエージェント、のいずれかとすることができる。交信シーケンスは、順次、同時、ループ、条件付きの交信等を捕らえるためのフロー制御構造３２を含むことができる。
【００２３】
図４に示すように、一実施形態では、入力スクリプトに対して、構文解析３４を実施することができる。構文解析器３４は、各スクリプト言語に対して１つ実装することができる。構文解析器３４は、拡張バッカス記法（ＥＢＮＦ）で規定される構文解析のルール３６を利用することができる。構文解析は、抽象構文木（ＡＳＴ）３８の形で、パーズ木を生成することができる。本発明によりスクリプトを扱う方法の一実施形態を、図５のフローチャートに示す。
【００２４】
一実施形態では、ＡＳＴ３８を、アプリケーションオブジェクトモデル（ＡＯＭ）４４に基づく抽象内部テストケース表現４２に変換する、意味解析４０を実施する。意味解析４０は、ＡＳＴ３８として表現されたテストケースを、アプリケーション状態１６、外部交信シーケンス、及び入力データに分解する。
【００２５】
図６に示すように、ＡＯＭ４４は、テスト中のアプリケーションをモデル化するためのメタデータ表現とすることができる。メタデータ表現の構成要素は、アプリケーションオブジェクト２４におけるアプリケーションオブジェクト型定義４８、各アプリケーションオブジェクト２４の型における属性定義５０、各アプリケーションオブジェクト２４の型でサポートされる方法及びイベントの定義５２、イベント５２のアプリケーション状態１６への影響の定義等を含むが、それらに限定されるわけではない。本発明により意味解析を実施する方法の一実施形態を、図７のフローチャートに示す。
【００２６】
アプリケーションオブジェクトの型定義４８は、各アプリケーションオブジェクト２４の型の更なるカテゴリ分類を含むことができ、それらは、（ｉ）階層型、（ｉｉ）コンテナ型、及び（ｉｉｉ）単純型とすることができる。階層オブジェクト型は、それ自身のアプリケーション状態１６と関連付けられる。他のオブジェクトのインスタンスを収容し得るアプリケーションオブジェクト型１６は、コンテナ型である。例えば、ウェブページは、階層オブジェクト型で表現することができ、ウェブページ内の表は、コンテナ型で表現することができる。ページ内のラベルは、単純オブジェクト型によって表現される。階層アプリケーションオブジェクト型と関連付けられる状態１６は、モーダルなアプリケーション状態、或いは非モーダルなアプリケーション状態である。モーダルなアプリケーション状態は、現在のアプリケーション状態１６内で利用可能なアプリケーションオブジェクト２４のインスタンスとの可能な交信を制限する。例えば、ダイアログウィンドウは、全てのユーザの対話を、カレントのダイアログウィンドウに制限する。
【００２７】
イベント５２のアプリケーション状態１６への影響は、アプリケーション状態１６へのイベント５２の１又はそれ以上の結果を捕らえる。イベント５２の結果は、所定の型のオブジェクトのインスタンスの作成、オブジェクト型のインスタンスの削除、既存のオブジェクトの型の属性の変更、オブジェクト型のインスタンスの選択等とすることができる。
【００２８】
階層オブジェクト型の作成、又は選択は、新しいアプリケーション状態１６の形成、そのオブジェクト型と関連付けられるアプリケーション状態１６の選択等という結果になり得る。
【００２９】
もう１つの実施形態では、テストケース１２の抽象表現１４を、アプリケーションメタデータレポジトリ５４からの情報で拡充する。入力テストスクリプトに欠けているテストケース１２と関連付けられるアプリケーションオブジェクト２４のそれらの属性２６についての値を抜き出すことにより、テストケース１２の抽象表現１４を拡充することができる。テストケース１２の拡充は、テストケース１２、及びそれらの記録、又は作成環境等を切り離すことができ、アプリケーションメタデータ表現５４内で安定している属性２６の使用を可能にすることができる。例えば、言語依存の表示ラベルではなく、アプリケーションメタデータレポジトリ５４内の内部識別フィールド５６を利用して、所定のオブジェクト２４を識別することができる。これは、テストケース１２の再利用性を高める。様々なテスト実行環境が様々な属性２６を使って、同じアプリケーションオブジェクト１６を識別することができるので、このような分離は、プラットフォーム独立性を提供する。
【００３０】
一実施形態では、アプリケーションオブジェクトの属性２６、及び入力データは、外部交信シーケンスから分離されて、自動パラメータ化を提供する。テストケースのシナリオからデータを自動的に分離することにより、システム１０は、スクリプトをパラメータ化するために含まれる手動の作業を劇的に減らす。アプリケーションオブジェクトモデルを使って、各イベント５２と関連付けられる入力データを、シナリオ定義から切り離す。同じプロセスを、オブジェクト属性２６を格納することにも適用する。入力データ定義は、シナリオ内に含まれるイベント５２ごとに起動される入れ子のテーブルデータ型定義、及びアプリケーションオブジェクトモデル内のオブジェクトイベント定義、を形成する。これは、この定義に適合する如何なるデータセットも、同じセットのシナリオに適用することを可能にする。
【００３１】
図８に示す、本発明のもう１つの実施形態では、コンピュータシステム１１０が、メモリ１１４に結合されたプロセッサ１１２を含む。メモリ１１４は、テストケースをアプリケーション状態、外部交信シーケンス、及び入力データを含む抽象内部表現に変換するためにプロセッサ１１２によって実行可能なプログラム命令１１６を格納する。データベース１１６は、テストケースの抽象表現を格納する。入力スクリプトについての構文解析器１１８を含めることができる。構文解析器１１８は、抽象構文木（ＡＳＴ）１２０の形のパーズ木を生成する。
【００３２】
ロジック１２２を提供して、意味解析を実施し、ＡＳＴ１２０を、アプリケーションオブジェクトモデル（ＡＯＭ）に基づく抽象内部テストケース表現１２２に変換する。ロジック１２４は、抽象内部テストケース表現を、アプリケーションメタデータレポジトリ１２６からの情報で拡充する。ロジック１２６は、アプリケーションオブジェクトの属性、及び入力データを、外部交信シーケンスから切り離して、自動パラメータ化を提供する。
【００３３】
図１及び２を参照すると、本発明の一実施形態は、テストケースを変換するためのシステム１０、及び方法である。１又はそれ以上のスクリプト言語で書かれたテストケース１２を移入する。次に、テストケース１２は、１又はそれ以上のアプリケーション状態１６、外部交信シーケンス１８、及び入力データ２０を含む抽象表現１４に変換される。抽象表現１４は、データベースシステム２２内に格納される。リレーショナルデータベース管理システム、ＸＭＬデータベース管理システム等を含むが、それらに限定されない様々な異なるデータベースシステム２２を利用することができる。
【００３４】
アプリケーション状態１６は、外部交信の状況を定める、テスト中のアプリケーションの実行時のスナップショットを表す。図３に示す一実施形態では、アプリケーション状態１６は、例えばウェブページ、又はウィンドウコントロール、又はアカウントオブジェクトのような、アプリケーションオブジェクト２４のセットである。各アプリケーションオブジェクト２４は、属性２６、及びそれらの値のセットと関連付けられる。例えば、ウェブページは、現在のウェブページに対応するユニフォームリソースロケータ（ＵＲＬ）を含むｕｒｌと呼ばれる属性２６、及び現在のウェブページのタイトルを含むｔｉｔｌｅと呼ばれる属性２６を持つことができる。一実施形態では、アプリケーション状態１６のセットは、テストケース１２で表され、階層式に配置される。
【００３５】
利用されるスクリプト言語は、テストケースを記録、又は作成するために使用される型付けされたプログラミング言語、あるいは型付けされないプログラミング言語とすることができる。外部交信シーケンス１８は、アプリケーションオブジェクト２４上で外部エージェント２８によって起動されるイベントを表すことができる。外部エージェント２８は、人間エージェントか、或いは他のソフトウェアエージェントのいずれかとすることができる。交信シーケンスは、順次の、同時の、ループの、条件付きの交信等の捕らえるためのフロー制御構造３２を含むことができる。
【００３６】
図４に示すように、一実施形態では、入力スクリプトについて、構文解析４３を実施することができる。各スクリプト言語について１つ、構文解析器３４を実装することができる。構文解析器３４は、拡張バッカス記法（ＥＢＮＦ）で規定される構文解析のルール３６を利用することができる。構文解析は、抽象構文木（ＡＳＴ）３８の形で、パーズ木を生成することができる。本発明によりスクリプトを扱う方法の一実施形態を、図５のフローチャートに示す。
【００３７】
一実施形態では、ＡＳＴ３８を、アプリケーションオブジェクトモデル（ＡＯＭ）４４に基づく抽象テストケース表現４２に変換する意味解析４０を実施する。意味解析４０は、ＡＳＴ３８として表されたテストケースを、アプリケーション状態１６、外部交信シーケンス、及び入力データに分解する。
【００３８】
図６に示すように、ＡＯＭ４４は、テスト中のアプリケーションをモデル化するためのメタデータ表現とすることができる。メタデータ表現の構成要素は、アプリケーションオブジェクト２４についてのアプリケーションオブジェクト型定義４８、各アプリケーションオブジェクト２４の型についての属性定義５０、各アプリケーションオブジェクト２４の型でサポートされる方法及びイベントの定義５２、イベント５２のアプリケーション状態１６への影響の定義等を含むが、それらに限定されない。本発明により意味解析を実施する方法の一実施形態を、図７のフローチャートに示す。
【００３９】
アプリケーションオブジェクト型定義４８は、各アプリケーションオブジェクト２４の型の更なるカテゴリ分類を含むことができ、それらは（ｉ）階層型、（ｉｉ）コンテナ型、及び（ｉｉｉ）単純型とすることができる。階層オブジェクト型は、それ自身のアプリケーション状態１６と関連付けられる。他のオブジェクトのインスタンスを含み得るアプリケーションオブジェクトの型１６は、コンテナ型である。例えば、ウェブページは、階層オブジェクト型で表現されることができ、ウェブページ内の表は、コンテナ型によって表されることができる。そのページのラベルは、単純オブジェクト型によって表される。階層アプリケーションオブジェクト型１６と関連付けられる状態は、モーダルなアプリケーション状態、又は非モーダルなアプリケーション状態である。モーダルなアプリケーション状態は、現在のアプリケーション状態１６内で利用可能なアプリケーションオブジェクト２４のインスタンスとの可能な交信を、制限する。例えば、ダイアログウィンドウは、全てのユーザの対話を、現在のダイアログウィンドウに制限する。
【００４０】
イベント５２のアプリケーション状態１６への影響は、アプリケーション状態１６へのイベント５２の１又はそれ以上の結果を捕らえる。イベント５２の結果は、所定の型のオブジェクトのインスタンスの作成、オブジェクト型のインスタンスの削除、既存のオブジェクトの型の属性の変更、オブジェクト型のインスタンスの選択等とすることができる。
【００４１】
階層オブジェクト型の作成、又は選択は、新しいアプリケーション状態１６の形成、オブジェクト型と関連付けられるアプリケーション状態１６の選択等という結果となり得る。
【００４２】
もう１つの実施形態では、テストケース１２の抽象表現１４は、アプリケーションメタデータレポジトリ５４からの情報で拡充される。入力テストスクリプトに欠けているテストケース１２と関連付けられるアプリケーションオブジェクト２４のそれらの属性２６についての値を抜き出すことにより、テストケース１２の抽象表現１４を拡充することができる。テストケース１２の拡充は、テストケース１２、及びそれらの記録又は作成環境等を分離することができ、アプリケーションメタデータ表現５４内で安定している属性２６の使用を可能にする。例えば、言語依存の表示ラベルではなく、アプリケーションメタデータレポジトリ５４内の識別フィールド５６を利用して、所定のオブジェクト２４を識別することができる。これは、テストケース１２の再利用性を高める。様々なテスト実行環境が、様々な属性２６を使用して、同じアプリケーションオブジェクト１６を識別することができるので、このような分離は、プラットフォーム独立性を提供する。
【００４３】
一実施形態では、アプリケーションオブジェクトの属性２６、及び入力データは、外部交信シーケンスから切り離されて、自動パラメータ化を提供する。データをテストケースシナリオから自動的に切り離すことにより、システム１０は、スクリプトをパラメータ化するのに含まれる手動の作業を劇的に減らす。アプリケーションオブジェクトモデルを使って、各イベント５２と関連付けられる入力データを、シナリオ定義から切り離す。同じプロセスを、オブジェクト属性２６を格納することにも適用する。入力データ定義は、シナリオ内に含まれるイベント５２について起動される入れ子表データ型定義、及びアプリケーションオブジェクトモデル内のオブジェクトイベント定義、を形成する。これは、この定義に適合する如何なるデータセットも、同じシナリオのセットに適用することを可能にする。
【００４４】
図８に示す、本発明のもう１つの実施形態では、コンピュータシステム１１０が、メモリ１１４に結合されたプロセッサ１１２を含む。メモリ１１４は、テストケースを、アプリケーション状態、外部交信シーケンス、及び入力データを含む抽象表現に変換するために、プロセッサ１１２により実行可能なプログラム命令１１６を格納する。データベース１１６は、テストケースの抽象表現を格納する。入力スクリプトについて、構文解析器１１８が含まれ得る。構文解析器１１８は、抽象構文木（ＡＳＴ）１２０の形で、パーズ木を生成する。
【００４５】
ロジック１２２を提供して、意味解析を実施し、ＡＳＴ１２０を、アプリケーションオブジェクトモデル（ＡＯＭ）に基づく抽象テストケース表現１２２に変換する。ロジック１２４は、抽象テストケース表現を、アプリケーションメタデータレポジトリ１２６からの情報で拡充する。ロジック１２６は、アプリケーションオブジェクトの属性、及び入力データを、外部交信シーケンスから分離して、自動パラメータ化を提供する。
【００４６】
図９及び１０に示す、本発明のもう１つの実施形態では、テストケース２１２を生成するための方法、及びシステム２１０を提供する。データ記憶装置２２２からのテストケースのアプリケーション状態２１６、外部交信シーケンス２１８、及び入力データ２２０を含む抽象表現２１４から、テストケース２１２が生成される。テストケース２１２は作り出され、次に、検証される。テストケース２１２は、テストスクリプト２２４に変換される。リレーショナルデータベース管理システム、ＸＭＬデータベース管理システム、ファイルシステム等を含むが、それらに限定されない様々なデータ記憶装置２２２を利用することができる。アプリケーション状態２１６は、アプリケーション状態２６と同じとすることができる。
【００４７】
一実施形態では、テストケース定義の構成要素、すなわちアプリケーション状態２１６、外部交信シーケンス２１８、及び入力データ２２０の選択のためのルール２２６、ならびにデータ駆動テストケース生成のためのルール２２８が提供される。選択ルール２２６は、ＳＱＬ、Ｘｑｕｅｒｙ、プログラミング言語で書かれたコードから呼ばれるＡＰＩ等を含むが、それらに限定されないクエリ言語を使って示されることができる。クエリ言語の使用は、テストケースを生のカスタマデータから生成することを可能にする。
【００４８】
本発明の一実施形態では、テストケース２１２の生成は、入力データ２２２によって要求されるようにテストケース２１２を構成することを含む。テストケース２１２における入力データセット２２０の少なくとも一部分、又は全部のために、複数のデータセット２３０を提供することができる。これは、複数のテストケース２１２の生成、又は各データセット２３０におけるループ制御構造内で繰り返される外部交信シーケンス、という結果になる。入力データ２２０の一部分についての複数のデータセット２３０の使用は、ｗｈｉｌｅループのようなループ制御構造内で繰り返される入力データのこの部分に対応する交信シーケンス、という結果になる。
【００４９】
一実施形態では、データ有効性フラグ２３２を使って、入力データ２２０の各要素に、有効又は無効とフラグを立てる。テストケース２１２を記録、又は作成するときの入力データ２２０に対応するものとは異なる入力データ２２０内の有効性フラグ２３２の存在は、例外処理のための適切な交信シーケンスを含む生成ステップという結果になる。例えば、有効な入力データセット２２０が提供されるとき、抽象表現２１４で格納されたテストケースは、通常の交信シーケンス２１８を有することができる。この抽象表現はまた、交信シーケンス２１８を含んでいて、無効データの入力というような例外状態の場合にたどられることができる。無効な入力データを伴ったこの抽象表現からテストケース２１２を生成するときの生成器は、通常の交信シーケンスではなく、例外状況における交信シーケンス２１８を含むテストケースを作成するであろう。
【００５０】
生成されたテストケース２１２を、外部アプリケーションメタデータレポジトリ２３８に対して検証することができる。その検証の挙動は、更なる検証ルール２４０によって制御することができる。
【００５１】
内部表現からスクリプト言語へのテストケース２１２の変換は、プラットフォーム固有のマッピング２３４によるものとすることができる。プラットフォーム固有のマッピングは、言語マッピング、及び他の環境マッピングを含む。使用される言語マッピングは、アプリケーションオブジェクト上のイベントとして捕らえられた外部交信２１８を、スクリプト言語２３６による適当な命令文にマップすることができる。１より多くの言語マッピングを、同時に提供することができる。これは、複数のテスト実行環境におけるテストスクリプトの生成を可能にする。更なる環境マッピングを提供して、更なるプラットフォーム独立性を支援する。例えば、テスト中のアプリケーションが第三者パーティのレポートライタを使用する場合には、汎用のレポートライタオブジェクトを使用して、テストケースを表現することができ、その環境マップを通して、特定のレポートライタのためのマッピングを提供することができる。このレベルのサポートは、下にあるプラットフォームの如何なるレベルまでも拡張することができる。
【００５２】
図１１に示すような本発明のもう１つの実施形態では、プロセッサ３１２、及びプロセッサ３１０に結合されるメモリ３１４を含むコンピュータシステム３１０を提供する。メモリ３１４は、抽象表現３１８からのテストケース３１６のルールベースの生成を格納する。抽象表現３１８は、データ記憶装置からのテストケースのアプリケーション状態、外部交信シーケンス、及び入力データを含んで、テストケースを作り出す。ロジック３２０は、そのテストケースを検証する。そのテストケースをテストスクリプトに変換するために、ロジック３２２を提供する。
【００５３】
ロジック３２０は、テストケース定義の構成要素、すなわちアプリケーション状態、外部交信シーケンス、及び入力データが互いに整合しており、かつアプリケーションオブジェクトモデルと整合していることを提供する。ロジック３２０は、外部検証ロジックとすることができる。外部検証ロジックは、生成されたテストケースをアプリケーションメタデータレポジトリに対して検証するステップを含むことができる。
【００５４】
コンピュータシステム３１０はまた、テストケース定義の構成要素、すなわちアプリケーション状態、外部交信シーケンス、及び入力データの選択のためのルール；データ駆動テストケース生成のためのルール、を提供するロジック３２４を含むことができる。コンピュータシステム３１０はまた、データ駆動テストケース生成を提供するロジック３２６を含むことができる。ロジック３２６は、入力データによって要求されるようにテストケースを構成することができる。
【００５５】
本発明の実施形態を例証し、説明したとはいえ、これらの実施形態が、本発明の全ての可能な形を例証し、説明することを意図されているわけではない。むしろ、本明細書で使用される語は、限定ではなく説明の語であり、本発明の技術的範囲から逸脱することなく様々な変更が成され得ることが理解される。
【図面の簡単な説明】
【００５６】
【図１】本発明のテストケース変換の実施形態の一実施形態を示す概略図である。
【図２】図１の実施形態を示す一般的なフローチャートである。
【図３】本発明の一実施形態において利用された、アプリケーション状態と交信表現との関係を示す概略図である。
【図４】本発明で利用されるテストケース移入の一実施形態を示す概略図である。
【図５】本発明で利用される移入プロセスの一実施形態を示すフローチャートである。
【図６】本発明の一実施形態で利用され得るアプリケーションオブジェクトモデルを示す概略図である。
【図７】本発明で利用され得る意味解析の一実施形態を示すフローチャートである。
【図８】本発明の図１のテストケース変換の実施形態を実施するために利用することのできるコンピュータシステムを示す概略図である。
【図９】本発明のテストケース変換の実施形態の一実施形態を示す概略図である。
【図１０】構成、抽象形式、及び検証を利用した、本発明のテストケース変換の実施形態の一実施形態を示す概略図である。
【図１１】図９及び１０のテスト変換の実施形態を実施するために利用することのできるコンピュータシステムを示す概略図である。
【図１】
2007519104.tif 000003
【図２】
2007519104.tif 000004
【図３】
2007519104.tif 000005
【図４】
2007519104.tif 000006
【図５】
2007519104.tif 000007
【図６】
2007519104.tif 000008
【図７】
2007519104.tif 000009
【図８】
2007519104.tif 000010
【図９】
2007519104.tif 000011
【図１０】
2007519104.tif 000012
【図１１】
2007519104.tif 000013
【国際調査報告】
2007519104.tif 000014
2007519104.tif 000015
2007519104.tif 000016