(57)【要約】【課題】コンピュータ装置によりテスト自動化プラットフォーム上で実行される方法が開示される。【解決手段】開示された方法は、テストスクリプトからマークアップ言語文書を生成するステップ（テストスクリプトは、テスト対象デバイス（Ｄｅｖｉｃｅ  Ｕｎｄｅｒ  Ｔｅｓｔ：ＤＵＴ）をテストする時における使用のためのユーザ定義関数の定義を含むようにスクリプト言語で作成され、マークアップ言語文書は、ユーザ定義関数の定義をマークアップ言語文書内に挿入するスクリプトエレメントを含む）と、生成されたマークアップ言語文書の処理のためにプログラムエンジンを駆動するステップ（プログラムエンジンは、前記テスト自動化プラットフォームの既製コンポーネントであり、スクリプト言語のためのインタプリタを含む）と、を含む。【選択図】図１
2019109884.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ装置によりテスト自動化プラットフォーム（ｔｅｓｔ  ａｕｔｏｍａｔｉｏｎ  ｐｌａｔｆｏｒｍ）を提供する方法であって、
テストスクリプト（ｔｅｓｔ  ｓｃｒｉｐｔ）からマークアップ言語（ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ）文書を生成するステップ−前記テストスクリプトは、テスト対象デバイス（Ｄｅｖｉｃｅ  Ｕｎｄｅｒ  Ｔｅｓｔ：ＤＵＴ）をテストする時における使用のためのユーザ定義関数（ｕｓｅｒ−ｄｅｆｉｎｅｄ  ｆｕｎｃｔｉｏｎ）の定義を含むようにスクリプト言語（ｓｃｒｉｐｔ  ｌａｎｇｕａｇｅ）で作成され、前記マークアップ言語文書は、前記定義を前記マークアップ言語文書内に挿入するスクリプトエレメント（ｓｃｒｉｐｔ  ｅｌｅｍｅｎｔ）を含む；及び、
前記生成されたマークアップ言語文書の処理のためにプログラムエンジン（ｐｒｏｇｒａｍ  ｅｎｇｉｎｅ）を駆動するステップ−前記プログラムエンジンは、前記テスト自動化プラットフォームの既製コンポーネント（ｏｆｆ−ｔｈｅ−ｓｈｅｌｆ  ｃｏｍｐｏｎｅｎｔ）であり、前記スクリプト言語のためのインタプリタ（ｉｎｔｅｒｐｒｅｔｅｒ）を含む−を含み、
前記スクリプト言語は、ＪａｖａＳｃｒｉｐｔ標準を守り、
前記プログラムエンジンは、ＷｅｂＶｉｅｗエンジン（ｅｎｇｉｎｅ）を含み、
前記ＷｅｂＶｉｅｗエンジンは、前記マークアップ言語文書をパーシング（ｐａｒｓｉｎｇ）し、前記スクリプトエレメントをはじめとして、前記マークアップ言語文書内にＪａｖａＳｃｒｉｐｔコードを挿入するエレメントを実行する時に前記インタプリタを使用することによって前記マークアップ言語文書を実行するように構成される、方法。
【請求項２】
前記マークアップ言語文書は、ハイパーテキストマークアップ言語（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ：ＨＴＭＬ）フォーマットを有し、
前記マークアップ言語文書の前記生成のために、前記テストスクリプトを前記テスト自動化プラットフォーム内に入力するためのユーザ入力を受信するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記ユーザ定義関数は、前記テスト自動化プラットフォームのための外部アプリケーションプログラミングインターフェース（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ：ＡＰＩ）によって前記テストスクリプトで利用可能な定義済み関数を呼び出す第１のスクリプトステートメント（ｓｃｒｉｐｔ  ｓｔａｔｅｍｅｎｔ）を含む、請求項１に記載の方法。
【請求項４】
前記定義済み関数は、前記スクリプト言語で前記外部ＡＰＩによって前記マークアップ言語文書内の他のスクリプトエレメントに宣言される、請求項３に記載の方法。
【請求項５】
前記テストスクリプトから前記マークアップ言語文書を生成するステップは、前記テストスクリプト内の指定された位置を識別するステップと、前記指定された位置にブレイクポイント（ｂｒｅａｋｐｏｉｎｔ）をエミュレートする（ｅｍｕｌａｔｅ）ために、前記外部ＡＰＩによって前記テストスクリプトで利用可能であるが、前記テストスクリプト内に含まれない他の定義済み関数を呼び出す第３のスクリプトステートメントを生成し、前記第３のスクリプトステートメントを前記スクリプトエレメント内に含ませるステップと、を含み、前記他の定義済み関数は、前記スクリプト言語で前記外部ＡＰＩによって前記他のスクリプトエレメント内に宣言される、請求項４に記載の方法。
【請求項６】
前記テスト自動化プラットフォームのための内部ＡＰＩに基づいて、前記定義済み関数に対応する内部関数を実行するステップ−前記内部関数は、前記内部ＡＰＩに基づいて前記テスト自動化プラットフォーム内で呼び出し可能−をさらに含む、請求項５に記載の方法。
【請求項７】
テスト自動化のための装置であって、
プロセッサと、
前記プロセッサにより実行される場合、前記プロセッサが動作を実行するためのテスト自動化プラットフォームを具現するようにするコンピュータ実行可能な命令語が格納されたコンピュータ読み取り可能な格納媒体と、を含み、前記動作は、
テストスクリプトからマークアップ言語文書を生成するステップ−前記テストスクリプトは、テスト対象デバイス（Ｄｅｖｉｃｅ  Ｕｎｄｅｒ  Ｔｅｓｔ：ＤＵＴ）をテストする時における使用のためのユーザ定義関数の定義を含むようにスクリプト言語で作成され、前記マークアップ言語文書は、前記定義を前記マークアップ言語文書内に挿入するスクリプトエレメントを含む；及び、
前記生成されたマークアップ言語文書の処理のためにプログラムエンジンを駆動するステップ−前記プログラムエンジンは、前記テスト自動化プラットフォームの既製コンポーネントであり、前  記スクリプト言語のためのインタプリタを含む−を含み、
前記スクリプト言語は、ＪａｖａＳｃｒｉｐｔ標準を守り、
前記プログラムエンジンは、ＷｅｂＶｉｅｗエンジンを含み、
前記ＷｅｂＶｉｅｗエンジンは、前記マークアップ言語文書をパーシングし、前記スクリプトエレメントをはじめとして、前記マークアップ言語文書内にＪａｖａＳｃｒｉｐｔコードを挿入するエレメントを実行する時に前記インタプリタを使用することによって前記マークアップ言語文書を実行するように構成される、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例は、テスト自動化（ｔｅｓｔ  ａｕｔｏｍａｔｉｏｎ）のための技法に関し、より具体的に、テスト自動化プラットフォーム上で実行される方法、テスト自動化のための装置、及びコンピュータ読み取り可能な格納媒体に関する。
【背景技術】
【０００２】
デバイスの自動化されたテストは、時間とコストの減少、テストの便宜性、問題点把握の容易性という側面でデバイス開発者に非常に有益である。
【０００３】
細かいデバイステストのためには、高価のシステムが必要な場合もある。この理由は、例えば、そのようなテストには、条件文、反復文等を含む自然語水準の開発言語の支援が好ましいためである。これと関連して、韓国登録特許第１０−１０２８３５９号に開示された装置によっても明らかになるように、より経済的且つより効率的なテスト技法の案出が追求されてきた。
【０００４】
しかし、従来の多様な埋め込みテスト自動化技法によると、テストスクリプトをユーザの所望のとおりに変更することができず、複雑なテスト条件を正確に制御しにくい。テストスクリプトの変更時にある程度の自由度を与えるためにプラットフォームベースのテスト自動化技法が発表されたが、このような技法にも内在的な限界がある。
【０００５】
また、残念ながら、現在多くの数のプラットフォームベースのテストは、スマートフォンとウィンドウズ（Ｗｉｎｄｏｗｓ）（登録商標）プログラムのみを対象にしている実情である。特に、最近脚光を浴びるモノのインターネット（Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ：ＩｏＴ）機器の自動化されたテストの場合、多様な機器、ゲートウェイ及び装備等を全て連動する必要があるという点を勘案すると、既存のテスト自動化技法は、これに適しない可能性が大きい。
【０００６】
したがって、テスト自動化技法を改善する必要性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
テスト自動化のための改善された技法が本文書に開示される。
【課題を解決するための手段】
【０００８】
少なくとも一つの実施例によると、コンピュータ装置によりテスト自動化プラットフォーム（ｔｅｓｔ  ａｕｔｏｍａｔｉｏｎ  ｐｌａｔｆｏｒｍ）上で実行される方法は、テストスクリプト（ｔｅｓｔ  ｓｃｒｉｐｔ）からマークアップ言語（ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ）文書を生成するステップ（前記テストスクリプトは、テスト対象デバイス（Ｄｅｖｉｃｅ  Ｕｎｄｅｒ  Ｔｅｓｔ：ＤＵＴ）をテストする時における使用のためのユーザ定義関数（ｕｓｅｒ−ｄｅｆｉｎｅｄ  ｆｕｎｃｔｉｏｎ）の定義を含むようにスクリプト言語（ｓｃｒｉｐｔ  ｌａｎｇｕａｇｅ）で作成され、前記マークアップ言語文書は、前記定義を前記マークアップ言語文書内に挿入するスクリプトエレメント（ｓｃｒｉｐｔ  ｅｌｅｍｅｎｔ）を含む）と、前記生成されたマークアップ言語文書の処理のためにプログラムエンジン（ｐｒｏｇｒａｍ  ｅｎｇｉｎｅ）を駆動するステップ（前記プログラムエンジンは、前記テスト自動化プラットフォームの既製コンポーネント（ｏｆｆ−ｔｈｅ−ｓｈｅｌｆ  ｃｏｍｐｏｎｅｎｔ）であり、前記スクリプト言語のためのインタプリタ（ｉｎｔｅｒｐｒｅｔｅｒ）を含む）と、を含む。
【０００９】
前記マークアップ言語文書の前記生成のために、前記テストスクリプトを前記テスト自動化プラットフォーム内に入力するためのユーザ入力を受信するステップをさらに含む。
【００１０】
前記スクリプト言語は、ＪａｖａＳｃｒｉｐｔ（登録商標）標準を守り、前記マークアップ言語文書は、ハイパーテキストマークアップ言語（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ：ＨＴＭＬ）フォーマットを有する。
【００１１】
前記プログラムエンジンは、ＷｅｂＶｉｅｗエンジン（ｅｎｇｉｎｅ）を含み、前記ＷｅｂＶｉｅｗエンジンは、前記マークアップ言語文書をパーシング（ｐａｒｓｉｎｇ）し、及び前記スクリプトエレメントをはじめとして、前記マークアップ言語文書内にＪａｖａＳｃｒｉｐｔコードを挿入するＨＴＭＬエレメントを実行する時に前記インタプリタを使用することによって前記マークアップ言語文書を実行するように構成される。
【００１２】
前記ユーザ定義関数は、前記テスト自動化プラットフォームのための外部アプリケーションプログラミングインターフェース（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ：ＡＰＩ）によって前記テストスクリプトで利用可能な定義済み関数を呼び出す第１のスクリプトステートメント（ｓｃｒｉｐｔ  ｓｔａｔｅｍｅｎｔ）を含む。
【００１３】
前記定義済み関数は、前記スクリプト言語で前記外部ＡＰＩによって前記マークアップ言語文書内の他のスクリプトエレメントに宣言される。
【００１４】
前記テストスクリプトから前記マークアップ言語文書を生成するステップは、前記テストスクリプト内の指定された位置を識別するステップと、前記指定された位置にブレイクポイント（ｂｒｅａｋｐｏｉｎｔ）をエミュレートする（ｅｍｕｌａｔｅ）ために、前記外部ＡＰＩによって前記テストスクリプトで利用可能であるが、前記テストスクリプト内に含まれない他の定義済み関数を呼び出す第３のスクリプトステートメントを生成し、前記第３のスクリプトステートメントを前記スクリプトエレメント内に含ませるステップと、を含み、前記他の定義済み関数は、前記スクリプト言語で前記外部ＡＰＩによって前記他のスクリプトエレメント内に宣言される。
【００１５】
前記テスト自動化プラットフォームのための内部ＡＰＩに基づいて、前記定義済み関数に対応する内部関数を実行するステップ（前記内部関数は、前記内部ＡＰＩに基づいて前記テスト自動化プラットフォーム内で呼び出し可能）をさらに含む。
【００１６】
前記テストスクリプトから前記マークアップ言語文書を生成するステップは、前記定義済み関数と関連された追加的なエレメントを生成し、前記追加的なエレメントを前記マークアップ言語文書内に含ませるステップを含み、前記追加的なエレメントは、前記定義済み関数に対応する属性（ａｔｔｒｉｂｕｔｅ）を有し、前記宣言は、前記追加的なエレメントに対してイベント（ｅｖｅｎｔ）をトリガする（ｔｒｉｇｇｅｒ）第２のスクリプトステートメントを含み、前記方法は、前記トリガされたイベントに対して、前記属性に対応するイベントハンドラを識別するステップ（前記イベントハンドラは、前記テスト自動化プラットフォームのための内部ＡＰＩによって前記テスト自動化プラットフォーム内で利用可能であり、内部関数を呼び出すように構成される）と、前記追加的なエレメントに基づいて前記イベントハンドラを実行することによって前記内部関数を実行するステップと、をさらに含む。
【００１７】
前記テストスクリプトから前記マークアップ言語文書を生成するステップは、前記テストスクリプトに基づいて前記ユーザ定義関数の名称が事前決定された名称と同一かを判定するステップと、前記ユーザ定義関数の前記名称が前記事前決定された名称と同一であるという判定に応答して、前記ユーザ定義関数の実行を可能にする追加的なエレメントを生成し、前記追加的なエレメントを前記マークアップ言語文書内に含ませるステップと、を含む。
【００１８】
少なくとも一つの実施例によると、テスト自動化のための装置は、プロセッサと、前記プロセッサにより実行される場合、前記プロセッサが動作を実行するためのテスト自動化プラットフォームを具現するようにするコンピュータ実行可能な命令語が格納されたコンピュータ読み取り可能な格納媒体と、を含み、前記動作は、テストスクリプトからマークアップ言語文書を生成すること（前記テストスクリプトは、テスト対象デバイス（Ｄｅｖｉｃｅ  Ｕｎｄｅｒ  Ｔｅｓｔ：ＤＵＴ）をテストする時における使用のためのユーザ定義関数の定義を含むようにスクリプト言語で作成され、前記マークアップ言語文書は、前記定義を前記マークアップ言語文書内に挿入するスクリプトエレメントを含む）と、前記生成されたマークアップ言語文書の処理のためにプログラムエンジンを駆動すること（前記プログラムエンジンは、前記テスト自動化プラットフォームの既製コンポーネントであり、前記スクリプト言語のためのインタプリタを含む）と、を含む。
【００１９】
前記動作は、前記マークアップ言語文書の前記生成のために、前記テストスクリプトを前記テスト自動化プラットフォーム内に入力するためのユーザ入力を受信することをさらに含む。
【００２０】
前記スクリプト言語は、ＪａｖａＳｃｒｉｐｔ標準を守り、前記マークアップ言語文書は、ハイパーテキストマークアップ言語（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ：ＨＴＭＬ）フォーマットを有する。
【００２１】
前記プログラムエンジンは、ＷｅｂＶｉｅｗエンジンを含み、前記ＷｅｂＶｉｅｗエンジンは、前記マークアップ言語文書をパーシングし、及び前記スクリプトエレメントをはじめとして、前記マークアップ言語文書内にＪａｖａＳｃｒｉｐｔコードを挿入するＨＴＭＬエレメントを実行する時に前記インタプリタを使用することによって前記マークアップ言語文書を実行するように構成される。
【００２２】
前記ユーザ定義関数は、前記テスト自動化プラットフォームのための外部アプリケーションプログラミングインターフェース（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ：ＡＰＩ）によって前記テストスクリプトで利用可能な定義済み関数を呼び出す第１のスクリプトステートメントを含む。
【００２３】
前記定義済み関数は、前記スクリプト言語で前記外部ＡＰＩによって前記マークアップ言語文書内の他のスクリプトエレメントに宣言される。
【００２４】
前記テストスクリプトから前記マークアップ言語文書を生成することは、前記テストスクリプト内の指定された位置を識別することと、前記指定された位置にブレイクポイントをエミュレートするために、前記外部ＡＰＩによって前記テストスクリプトで利用可能であるが、前記テストスクリプト内に含まれない他の定義済み関数を呼び出す第３のスクリプトステートメントを生成し、前記第３のスクリプトステートメントを前記スクリプトエレメント内に含ませることを含み、前記他の定義済み関数は、前記スクリプト言語で前記外部ＡＰＩによって前記他のスクリプトエレメント内に宣言される。
【００２５】
前記動作は、前記テスト自動化プラットフォームのための内部ＡＰＩに基づいて、前記定義済み関数に対応する内部関数を実行すること（前記内部関数は、前記内部ＡＰＩに基づいて前記テスト自動化プラットフォーム内で呼び出し可能）をさらに含む。
【００２６】
前記テストスクリプトから前記マークアップ言語文書を生成するステップは、前記定義済み関数と関連された追加的なエレメントを生成し、前記追加的なエレメントを前記マークアップ言語文書内に含ませるステップを含み、前記追加的なエレメントは、前記定義済み関数に対応する属性を有し、前記宣言は、前記追加的なエレメントに対してイベントをトリガする第２のスクリプトステートメントを含み、前記動作は、前記トリガされたイベントに対して、前記属性に対応するイベントハンドラを識別すること（前記イベントハンドラは、前記テスト自動化プラットフォームのための内部ＡＰＩによって前記テスト自動化プラットフォーム内で利用可能であり、内部関数を呼び出すように構成される）と、前記追加的なエレメントに基づいて前記イベントハンドラを実行することによって前記内部関数を実行することをさらに含む。
【００２７】
前記テストスクリプトから前記マークアップ言語文書を生成することは、前記テストスクリプトに基づいて前記ユーザ定義関数の名称が事前決定された名称と同一かを判定することと、前記ユーザ定義関数の前記名称が前記事前決定された名称と同一であるという判定に応答して、前記ユーザ定義関数の実行を可能にする追加的なエレメントを生成し、前記追加的なエレメントを前記マークアップ言語文書内に含ませることを含む。
【００２８】
少なくとも一つの実施例によると、プロセッサにより実行される場合、前記プロセッサが前記方法のうち任意のことを実行するようにするコンピュータ実行可能な命令語が格納されたコンピュータ読み取り可能な格納媒体が提供される。
【発明の効果】
【００２９】
本発明の実施例によると、自動化されたテストのためのコンピューティングプラットフォーム（ｃｏｍｐｕｔｉｎｇ  ｐｌａｔｆｏｒｍ）で、多様なデバイスのテストのためのアプリケーションプログラミングインターフェース（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ：ＡＰＩ）がテストスクリプトの作成に使われるスクリプト言語として提供され、ユーザは、所望のテストスクリプトをより便利に、より自由に開発できる。
【００３０】
本発明の実施例によると、自動化されたテストのためのコンピューティングプラットフォーム上でテストスクリプトのデバッギング（ｄｅｂｕｇｇｉｎｇ）、例えば、トレース（ｔｒａｃｅ）機能が提供される。
【図面の簡単な説明】
【００３１】
【図１】本発明の実施例によってテスト対象デバイス（Ｄｅｖｉｃｅ  Ｕｎｄｅｒ  Ｔｅｓｔ：ＤＵＴ）の自動化されたテストが実行される環境を概略的に示す。
【図２】本発明に実施例に係るテスト自動化装置の動作を説明するための図面である。
【図３】本発明の実施例に適した例示的なテスト自動化装置の概略的なブロック図である。
【図４】本発明の実施例によってテスト自動化装置のシステムアーキテクチャを概略的に示す。
【図５】本発明の実施例によってテスト自動化プラットフォーム上でＤＵＴをテストするプロセスでの使用に適した例示的なグラフィックユーザインターフェース（Ｇｒａｐｈｉｃ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ：ＧＵＩ）を示す。
【図６】本発明に実施例によってＪａｖａＳｃｒｉｐｔで作成された例示的なテストスクリプトを概略的に示す。
【図７ａ】本発明に実施例によってＪａｖａＳｃｒｉｐｔで作成されたテストスクリプトから生成された例示的なＨＴＭＬ文書を概略的に示す。
【図７ｂ】本発明に実施例によってＪａｖａＳｃｒｉｐｔで作成されたテストスクリプトから生成された例示的なＨＴＭＬ文書を概略的に示す。
【発明を実施するための形態】
【００３２】
以下、添付図面を参照して本発明の実施例を詳細に説明する。本発明は、多様な実施例を有することができ、いくつかの実施例が本明細書に開示される。しかし、これは本発明に対する限定ではなく例示として提供され、本発明の思想及び範ちゅうに属する全ての変換、均等物乃至代替物を含むと理解しなければならない。開示された実施例に係る方法、装置及び／またはシステムに対する包括的な理解を容易にするために、下記の詳細な説明で特定の細部事項が提供され、いくつかの実施例は、これらの細部事項のうち一部または全てがなくても実施される。また、本発明の多様な態様を不明にしないように公知技術の具体的な説明は省略する。
【００３３】
後述する用語は、単に特定実施例を説明するために使われたものに過ぎず、限定的な意味で使われたものではない。単数形態の表現は、明確に異なるように使われない限り、複数形態の意味を含む。また、この文書で、“含む”または“有する”のような用語は、ある特徴、数字、ステップ、動作、構成要素、情報またはこれらの組み合わせが存在することを示し、一つまたはそれ以上の他の特徴、数字、ステップ、動作、構成要素、情報またはこれらの組み合わせの存在または可能性を排除しないと理解しなければならない。
【００３４】
図１は、本発明の実施例によってテスト対象デバイス（Ｄｅｖｉｃｅ  Ｕｎｄｅｒ  Ｔｅｓｔ：ＤＵＴ）の自動化されたテストが実行される環境１００を概略的に示す。
【００３５】
図示されたように、例示的な環境１００は、計測器１１０−１、回路ボード１１０−２、ゲートウェイ１１０−３、端末１１０−４及び／または他のＤＵＴ１１０−ｎのような一つ以上のＤＵＴ１１０−１、１１０−２、１１０−３、１１０−４、...、１１０−ｎ（以下、それぞれのＤＵＴが個別的に、またはいくつかのＤＵＴが集合的に参照番号１１０で表記）を含み、また、ＤＵＴ１１０のテスト自動化のための装置１２０を含む。
【００３６】
また、ＤＵＴ１１０とテスト自動化装置１２０は、通信可能にカップリングされる（ｃｏｍｍｕｎｉｃａｔｉｖｅｌｙ  ｃｏｕｐｌｅｄ）。一例として、図示されたように、それぞれのＤＵＴ１１０は、有線送信媒体（例えば、直列ケーブル（ｓｅｒｉａｌ  ｃａｂｌｅ）等）を介してテスト自動化装置１２０と通信可能にカップリングされる。他の例として、それぞれのＤＵＴ１１０は、無線送信媒体（例えば、無線通信のための電磁波（ｅｌｅｃｔｒｏｍａｇｎｅｔｉｃ  ｗａｖｅ）等）、または有線送信媒体と無線送信媒体の組み合わせを介してテスト自動化装置１２０と通信可能にカップリングされる。いくつかの実施例において、テスト自動化装置１２０にはＤＵＴ１１０との通信のためのインターフェースまたはプロトコルスタックが備えられる。
【００３７】
さらに、実施例によると、いくつかのＤＵＴ１１０は、図示されたように有線送信媒体（例えば、ＲＦケーブルまたは同軸ケーブル（ｃｏａｘｉａｌ  ｃａｂｌｅ）等）、無線送信媒体、またはこれらの組み合わせを介して互いに通信可能にカップリングされる。
【００３８】
また、図２を参照すると、いくつかの実施例におけるテスト自動化装置１２０は、ＤＵＴの自動化されたテストのために、次のように動作すると例示される。図２に示すプロセス２００は、単に一例に過ぎず、いくつかの他の実施例では、図２のプロセス２００の動作のうち一部が省略されて／されたり、他の動作が追加されたりすることができることに留意しなければならない。
【００３９】
例示的なプロセス２００は、テスト自動化装置１２０上でのコンピューティングプラットフォーム（ｃｏｍｐｕｔｉｎｇ  ｐｌａｔｆｏｒｍ）（以下、“テスト自動化プラットフォーム”（ｔｅｓｔ  ａｕｔｏｍａｔｉｏｎ  ｐｌａｔｆｏｒｍ）ともいう）の具現（ｉｍｐｌｅｍｅｎｔａｔｉｏｎ）乃至駆動（ｒｕｎｎｉｎｇ）から開始する。テスト自動化装置１２０により提供されたコンピューティングプラットフォーム上でプロセス２００の以後の動作が実行される。
【００４０】
動作２１０において、テスト自動化装置１２０は、テストスクリプト（ｔｅｓｔ  ｓｃｒｉｐｔ）をテスト自動化プラットフォーム内に入力するためのユーザ入力を受信する。
【００４１】
テストスクリプトは、任意の関数（ｆｕｎｃｔｉｏｎ）の定義（ｄｅｆｉｎｉｔｉｏｎ）を含むようにスクリプト言語（ｓｃｒｉｐｔ  ｌａｎｇｕａｇｅ）で作成され、この関数は、ＤＵＴ１１０をテストする時における使用のためにユーザにより定義される。また、このようなユーザ定義（ｕｓｅｒ−ｄｅｆｉｎｅｄ）関数は、テスト自動化プラットフォームのための外部アプリケーションプログラミングインターフェース（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ：ＡＰＩ）（これはそのスクリプト言語からアクセス可能）によってテストスクリプトで利用可能な定義済み関数（ｐｒｅｄｅｆｉｎｅｄ  ｆｕｎｃｔｉｏｎ）（例えば、テスト自動化プラットフォーム内に基本的に提供されてテスト自動化プラットフォームで常に利用可能なビルトイン（ｂｕｉｌｔ−ｉｎ）関数）を呼び出すスクリプトステートメント（ｓｃｒｉｐｔ  ｓｔａｔｅｍｅｎｔ）を含むことができる。テストスクリプトは、定義済み関数の定義を含まないことに留意しなければならない。いくつかの実施例において、テストスクリプトは、ＪａｖａＳｃｒｉｐｔ標準を守るスクリプト言語で作成される（例えば、ＪａｖａＳｃｒｉｐｔファイル）。
【００４２】
動作２２０において、テスト自動化装置１２０は、テストスクリプトをマークアップ言語（ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ）文書に変換する。例えば、テスト自動化装置１２０は、テストスクリプトを読み取りしてテストスクリプトからマークアップ言語文書を生成することができる。
【００４３】
いくつかの実施例において、生成されたマークアップ言語文書は、テストスクリプト内のユーザ定義関数の定義をマークアップ言語文書内に挿入するスクリプトエレメント（ｓｃｒｉｐｔ  ｅｌｅｍｅｎｔ）を含むことができる。一例として、マークアップ言語文書は、ハイパーテキストマークアップ言語（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ：ＨＴＭＬ）フォーマットを有することができ（例えば、ＨＴＭＬファイル）、マークアップ言語文書内の前述されたスクリプトエレメントは、開始タグ（ｓｔａｒｔ  ｔａｇ）“＜ｓｃｒｉｐｔ＞”及び終了タグ（ｅｎｄ  ｔａｇ）“＜／ｓｃｒｉｐｔ＞”、そして、その間に挿入されたスクリプトコード（ユーザ定義関数の定義を含む）からなるＨＴＭＬエレメントである。
【００４４】
いくつかの実施例において、テストスクリプトからマークアップ言語文書を生成することは、ユーザ定義関数の名称が事前決定された名称（例えば、“ｍａｉｎ”）と同一かをテストスクリプトに基づいて判定することと、ユーザ定義関数の名称が事前決定された名称と同一であるという判定に応答して、他の関数の実行前に、そのようなユーザ定義関数の実行を可能にする追加的なエレメントを生成し、これをマークアップ言語文書内に含ませることと、を含むことができる。一例として、マークアップ言語文書は、ＨＴＭＬフォーマットを有することができ、マークアップ言語文書内の前述された追加的なエレメントは、下記のようなＨＴＭＬエレメントである。
【００４５】
2019109884.tif 000003
【００４６】
このようなエレメントは、解釈（されて実行）されると、それを含むＨＴＭＬ文書内の関数のうちｍａｉｎ（）関数が最初に実行されるようにし、その関数は、一種のエントリポイント（ｅｎｔｒｙ  ｐｏｉｎｔ）関数とみなされる。この特徴は、実施例に係るテスト自動化プラットフォームに有利であり、たとえ、エントリポイントの強制的な明示のためのメカニズムが欠如されたＪａｖａＳｃｒｉｐｔがテストスクリプトの作成に使われるとしても、テストスクリプトがＤＵＴのテストのためのエントリポイント関数を含むことが要求されるためである。それによって、いくつかの実施例では、特定の名称を有する関数、例えば、ｍａｉｎ（）関数が必ずテストスクリプトに含まれるように規定することができる。
【００４７】
追加的に、またはその代案として、テストスクリプトからマークアップ言語文書を生成することは、他の動作を含むことができる。下記に動作２４０と関連して詳細に記述する。
【００４８】
動作２３０において、テスト自動化装置１２０は、生成されたマークアップ言語文書の処理のためにプログラムエンジン（ｐｒｏｇｒａｍ  ｅｎｇｉｎｅ）を駆動し、これはテストスクリプトの作成に使われたスクリプト言語のためのインタプリタ（ｉｎｔｅｒｐｒｅｔｅｒ）、例えば、ＪａｖａＳｃｒｉｐｔインタプリタを含む。
【００４９】
いくつかの実施例において、プログラムエンジンは、テスト自動化プラットフォームの既製コンポーネント（ｏｆｆ−ｔｈｅ−ｓｈｅｌｆ  ｃｏｍｐｏｎｅｎｔ）（例えば、テスト自動化プラットフォームのためにオーダーメードされたものではなく、非オーダーメード（ｎｏｎ−ｃｕｓｔｏｍ  ｍａｄｅ）の商用コンポーネント）である。一例として、プログラムエンジンは、テスト自動化プラットフォームの基本的な（ｕｎｄｅｒｌｙｉｎｇ）運営体制（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ：ＯＳ）（例えば、マイクロソフト社（Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ）のウィンドウズ（Ｗｉｎｄｏｗｓ）、アップル社（Ａｐｐｌｅ  Ｉｎｃ．）のマックＯＳ（ｍａｃＯＳ）等のような商用ＯＳ、またはリナックス（Ｌｉｎｕｘ）（登録商標）のようなオープンソースベースのＯＳ）によりホスティングされる（ｈｏｓｔｅｄ）／提供される既製のＷｅｂＶｉｅｗエンジン（ｅｎｇｉｎｅ）、例えば、インターネットエクスプローラ（Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ：ＩＥ）エンジンを含むことができ、このようなＷｅｂＶｉｅｗエンジンは、ＨＴＭＬ文書をパーシング（ｐａｒｓｉｎｇ）し、及びそのようなＨＴＭＬ文書内にＪａｖａＳｃｒｉｐｔコード（例えば、前述された通り、ユーザ定義関数の定義）を挿入するＨＴＭＬエレメントを実行する時にＪａｖａＳｃｒｉｐｔインタプリタを使用することによってＨＴＭＬ文書を実行するように構成される。
【００５０】
テストスクリプトを直接解釈すること、例えば、ＪａｖａＳｃｒｉｐｔで作成されたテストスクリプトを自体的に解釈することは、複雑度が比較的高いＪａｖａＳｃｒｉｐｔエンジンの開発を要求するが、その代りに、前記のようにテストスクリプトをマークアップ言語文書に変換し、これをテスト自動化プラットフォームの既製コンポーネントであるプログラムエンジンに伝達することは便利で且つコスト効率的な自動化されたテストを可能にすることができる。
【００５１】
動作２４０において、ＤＵＴをテストするために、テスト自動化装置１２０は、マークアップ言語文書を解釈（して実行）する。前述された通り、マークアップ言語文書（例えば、ＪａｖａＳｃｒｉｐｔコードが含まれているＨＴＭＬ文書）は、プログラムエンジン（例えば、ＷｅｂＶｉｅｗエンジン）により実行される。
【００５２】
例えば、前述されたようにマークアップ言語文書のスクリプトエレメント内に定義されたあるユーザ定義関数が実行される。特に、事前決定された名称と同じ名称を有するユーザ定義関数がエントリポイント関数として残りの関数より先行して実行される。
【００５３】
以下、ユーザ定義関数内で定義済み関数を呼び出す第１のスクリプトステートメントの実行と関連して、いくつかの実施例において、テスト自動化装置１２０が実行する例示的な動作に対して説明する。
【００５４】
まず、動作２２０において、テストスクリプトから生成されたマークアップ言語文書は、他のスクリプトエレメントをさらに含むことができ、第１のスクリプトステートメントで呼び出される定義済み関数はスクリプト言語でテスト自動化プラットフォームのための外部ＡＰＩによってそのスクリプトエレメント内に宣言される（ｄｅｃｌａｒｅｄ）。一例として、マークアップ言語文書のそのようなスクリプトエレメントには外部ＡＰＩによってテストスクリプト内で利用可能な全ての定義済み関数が宣言され、またはこれらのうちテストスクリプト内のスクリプトステートメントから識別された定義済み関数が宣言される。ただし、その代案としてまたは追加的に、ユーザ定義関数が定義されたスクリプトエレメント内に全てのまたはいくつかの定義済み関数が宣言され、このような場合にも同じスクリプトエレメント内でユーザ定義関数の定義と定義済み関数の宣言は（例えば、挿入された注釈により）、別途に区画化されることに留意しなければならない。マークアップ言語文書は、ＨＴＭＬフォーマットを有することができ、マークアップ言語文書内の前述された他のスクリプトエレメントは、開始タグ“＜ｓｃｒｉｐｔ＞”及び終了タグ“＜／ｓｃｒｉｐｔ＞”、そして、その間に挿入されたスクリプトコード（定義済み関数の宣言を含む）からなるＨＴＭＬエレメントである。
【００５５】
このように、テスト自動化プラットフォームで基本的に提供される定義済み関数がマークアップ言語文書内に宣言されている場合、テスト自動化装置１２０は、動作２４０でマークアップ言語文書を解釈（して実行）する間に定義済み関数を解釈（して実行）することができる。
【００５６】
さらに、定義済み関数を実行することには、テスト自動化装置１２０が定義済み関数に対応する内部関数（これはテスト自動化プラットフォームのための内部ＡＰＩに基づいてテスト自動化プラットフォーム内でのみ呼び出し可能）を内部ＡＰＩに基づいて実行することが後続することができる。いくつかの実施例において、内部ＡＰＩは、テストスクリプトの作成に使用されたスクリプト言語でない他の言語（例えば、コンパイル型プログラミング言語（ｃｏｍｐｉｌｅｄ  ｐｒｏｇｒａｍｍｉｎｇ  ｌａｎｇｕａｇｅ））からアクセス可能である。
【００５７】
このために、動作２２０において、テストスクリプトからマークアップ言語文書を生成することは、（例えば、第１のスクリプトステートメントから定義済み関数を識別し、または外部ＡＰＩによってテストスクリプト内で利用可能な他の全てのまたはいくつかの定義済み関数の場合とともに）定義済み関数と関連された追加的なエレメントを生成し、これをマークアップ言語文書内に含ませることを含むことができる。そのような追加的なエレメントは、定義済み関数に対応する属性（ａｔｔｒｉｂｕｔｅ）、例えば、識別子（ｉｄｅｎｔｉｆｉｅｒ）（以下、“ＩＤ”と略称）を有することができる。特に、マークアップ言語文書内での定義済み関数の宣言は、この追加的なエレメントに対してイベント（ｅｖｅｎｔ）をトリガする（ｔｒｉｇｇｅｒ）第２のスクリプトステートメントを含むことができる。それによって、テスト自動化装置１２０は、動作２４０において、マークアップ言語文書を実行する間に定義済み関数を実行することによってイベントをトリガすることができる。一例として、このようなイベントは、クリック（ｃｌｉｃｋ）イベントである。テスト自動化装置１２０は、また、トリガされたイベントに対して、追加的なエレメントの前述された属性に対応するイベントハンドラ（ｅｖｅｎｔ  ｈａｎｄｌｅｒ）を識別し、追加的なエレメントに基づいてイベントハンドラを実行することによって内部関数を実行することができ、イベントハンドラは、テスト自動化プラットフォームのための内部ＡＰＩによってテスト自動化プラットフォーム内でのみ利用可能であり、内部関数を呼び出すように構成される。
【００５８】
より具体的に、前述された追加的なエレメントは、定義済み関数と関連されたデータ（例えば、定義済み関数の引数（ａｒｇｕｍｅｎｔ）または定義済み関数に対応する内部関数の戻り値（ｒｅｔｕｒｎ  ｖａｌｕｅ））の入力を可能にする入力エレメント（ｉｎｐｕｔ  ｅｌｅｍｅｎｔ）である。一例として、第１のスクリプトステートメントは、下記のようにＪａｖａＳｃｒｉｐｔで作成されたコードである。
【００５９】
2019109884.tif 000004
【００６０】
そして、マークアップ言語文書は、ＨＴＭＬフォーマットを有することができ、マークアップ言語文書内の前述された入力エレメントは、定義済み関数の名称が前記例示された通り“ＳｅｎｄＴｏＬｏｇ”である場合、下記のようなＨＴＭＬエレメントである。
【００６１】
2019109884.tif 000005
【００６２】
追加的に、定義済み関数に対応する内部関数は、定義済み関数の引数の入力を受けて戻り値を返すことができ、マークアップ言語文書内での定義済み関数の宣言は、定義済み関数と関連されたデータ、例えば、定義済み関数の引数を入力エレメント内に記入するスクリプトステートメント及び／または定義済み関数と関連された他のデータ、例えば、定義済み関数に対応する内部関数の戻り値を入力エレメントから読み取りして返すスクリプトステートメントを含むことができる。
【００６３】
さらに、前記説明した通り定義済み関数及び内部関数の実行を利用し、ＤＵＴのテストでテストスクリプトの特定位置（例えば、ユーザまたはテスト自動化プラットフォームにより指定されたライン（ｌｉｎｅ）位置）にブレイクポイント（ｂｒｅａｋｐｏｉｎｔ）をエミュレートする（ｅｍｕｌａｔｅ）ことが可能である。それによって、テストスクリプトは、指定された位置で、例えば、一ラインずつ実行される。この特徴は、テスト自動化プラットフォーム上での便利なデバッギング（例えば、トレース機能）を促進することができる。
【００６４】
いくつかの実施例において、テスト自動化装置１２０は、ブレイクポイントとして指定された位置を識別する。また、テスト自動化装置１２０は、テスト自動化プラットフォームのための外部ＡＰＩによって特定の定義済み関数（これはこのようなブレイクポイントでマークアップ言語文書の実行を一時的に停止させるために外部ＡＰＩによって前記テストスクリプトで利用可能であるが、前記テストスクリプト内に含まれない）を呼び出すスクリプトステートメントを生成し、これをマークアップ言語文書内にユーザ定義関数のあるスクリプトステートメントの直前に含ませることができる。さらに、テスト自動化装置１２０は、テストスクリプトの作成に使われたスクリプト言語で外部ＡＰＩによってその特定の定義済み関数を他の定義済み関数の宣言が含まれているスクリプトエレメント内に宣言できる。実際的なエミュレーションの作業は、その特定の定義済み関数自体よりは、それに対応する内部関数がより多くの部分を担当することができる。
【００６５】
図３は、本発明の実施例に適した例示的なテスト自動化装置１２０の概略的なブロック図である。テスト自動化装置１２０は、任意の適した類型のコンピュータ（ｃｏｍｐｕｔｉｎｇ）装置であり、図３を参照すると、一つ以上のプロセッサ３１０、プロセッサ３１０により読み取り可能なコンピュータ読み取り可能な格納媒体（ｃｏｍｐｕｔｅｒ−ｒｅａｄａｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）３２０及び多様な周辺機器３３０を含むことが例示される。
【００６６】
プロセッサ３１０は、テスト自動化装置１２０の動作を制御するための処理回路を含むことができる。例えば、プロセッサ３１０は、中央処理ユニット（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：ＣＰＵ）、グラフィック処理ユニット（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：ＧＰＵ）、デジタル信号プロセッサ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ：ＤＳＰ）、プロセッサコア、マイクロプロセッサ、マイクロ制御器、フィールドプログラム可能なゲートアレイ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ：ＦＰＧＡ）、アプリケーション特定集積回路（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：ＡＳＩＣ）、無線周波数集積回路（Ｒａｄｉｏ−Ｆｒｅｑｕｅｎｃｙ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：ＲＦＩＣ）、他のハードウェア及びロジック回路、またはこれの任意の適した組み合わせを含むことができる。
【００６７】
コンピュータ読み取り可能な格納媒体３２０は、コンピュータ実行可能（ｃｏｍｐｕｔｅｒ  ｅｘｅｃｕｔａｂｌｅ）な命令語またはプログラムコード、プログラムデータ及び／または他の適した形態の情報をコンピュータにより読み取り可能な形態で格納するための任意の非一時的な（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ）、コンピュータ読み取り可能な格納媒体を含むことができる。例えば、コンピュータ読み取り可能な格納媒体３２０は、読み取り専用メモリ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ：ＲＯＭ）、ランダムアクセスメモリ（Ｒａｎｄｏｍ−Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ：ＲＡＭ）、揮発性（ｖｏｌａｔｉｌｅ）メモリ、非揮発性（ｎｏｎ−ｖｏｌａｔｉｌｅ）メモリ、取り外し可能（ｒｅｍｏｖａｂｌｅ）メモリ、取り外し不可能（ｎｏｎ−ｒｅｍｏｖａｂｌｅ）メモリ、ハードディスク、フラッシュ（ｆｌａｓｈ）メモリ、磁気ディスク格納媒体、光ディスク格納媒体、他の格納デバイス及び格納媒体、またはこれの任意の適した組み合わせを含むことができる。いくつかの実施例において、プロセッサ３１０は、コンピュータ読み取り可能な格納媒体３２０に格納されたコンピュータ実行可能な命令語を実行することができ、そのような命令語は、プロセッサ３１０により実行される場合、プロセッサ３１０が本発明の実施例に係る動作、例えば、前述された例示的なプロセスの少なくとも一部を実行するようにすることができる。
【００６８】
周辺機器３３０は、多様な入出力（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ：Ｉ／Ｏ）デバイスを含むことができ、これらは、テスト自動化装置１２０が他の装置、デバイス、機器等と通信する時に使われたり、テスト自動化装置１２０への命令、データ及び／または情報のユーザ入力を受信する時に使われて／使われたり、テスト自動化装置１２０からの出力をユーザに提示する時に使われる。例えば、周辺機器３３０は、マウスのようなポインティングデバイス、キーボード、キーパッド、マイク、液晶ディスプレー（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：ＬＣＤ）、タッチ検知ディスプレー（ｔｏｕｃｈ−ｓｅｎｓｉｔｉｖｅ  ｄｉｓｐｌａｙ）、スピーカー、プリンタ、通信インターフェースカード、直列ポート（ｓｅｒｉａｌ  ｐｏｒｔ）、汎用直列バス（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ：ＵＳＢ）ポート、一般目的インターフェースバス（Ｇｅｎｅｒａｌ  Ｐｕｒｐｏｓｅ  Ｉｎｔｅｒｆａｃｅ  Ｂｕｓ：ＧＰＩＢ）コネクタ等を含むことができる。
【００６９】
図４は、本発明の実施例によってテスト自動化装置のシステムアーキテクチャを概略的に示す。図示されたように、例示的なシステムアーキテクチャ４００は、テスト自動化プラットフォーム４２０を含み、これはスクリプト変換器４２２、ＡＰＩハンドラ（ｈａｎｄｌｅｒ）４２４及び一つ以上のインターフェース及び／またはそれのプロトコルスタック４２６−１、４２６−２、...、４２６−ｎ（以下では、それぞれのインターフェースまたはプロトコルスタックが個別的に、またはいくつかのインターフェース及び／またはプロトコルスタックが集合的に参照番号４２６で表記）を含む。追加的に、テスト自動化プラットフォーム４２０は、既製のＷｅｂＶｉｅｗエンジン４４０（例えば、ＩＥエンジン）を含むことができ、これはいくつかの実施例において、プラットフォーム４２０に含まれている商用ＯＳにより提供される。スクリプト変換器４２２は、入力されたテストスクリプト４１０をＨＴＭＬ文書４３０に変換するように構成される。生成されたＨＴＭＬ文書４３０は、ＷｅｂＶｉｅｗエンジン４４０に伝達され、ＷｅｂＶｉｅｗエンジン４４０は、ＨＴＭＬ文書をパーシングして解釈し、ＪａｖａＳｃｒｉｐｔインタプリタを使用してＨＴＭＬ文書内に挿入されたＪａｖａＳｃｒｉｐｔコードを解釈することができ、それによってＨＴＭＬ文書を実行する。ＷｅｂＶｉｅｗエンジン４４０は、挿入されたＪａｖａＳｃｒｉｐｔコードを解釈しながら、テストスクリプト内に記載された定義済み関数の実行によってイベント（例えば、クリックイベント）をトリガするように構成される。ＡＰＩハンドラ４２４は、イベントがトリガされることに応答して、定義済み関数に対応する識別子にマッピングされたイベントハンドラを識別し、これを実行することによって内部関数を実行するように構成される。必要によって、ＡＰＩハンドラ４２４は、内部関数の実行中に、一つ以上のインターフェース及び／またはプロトコルスタック４２６を使用して対応するＤＵＴ１１０の機能テストのためにそのＤＵＴ１１０と通信できる。
【００７０】
システムアーキテクチャ４００は、ユーザインターフェース（Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ：ＵＩ）フレームワーク（ｆｒａｍｅｗｏｒｋ）４５０をさらに含むことができる。ＵＩフレームワーク４５０は、テスト自動化プラットフォーム４２０上で駆動され、ＵＩ（例えば、ＧＵＩ）を提供するプログラムの構築を容易にするソフトウェアツールを含む。ＵＩフレームワーク４５０を使用することによって、テスト自動化プラットフォーム４２０は、ＤＵＴをテストするプロセスでの使用に適したＵＩ、例えば、テスト自動化プラットフォーム４２０への入力及び／またはテスト自動化プラットフォーム４２０からの出力のためのＵＩを提供することができる。例えば、テスト自動化プラットフォーム４２０は、図５に示すようにユーザにより入力されたテストスクリプト５１０及びユーザにより指定されたブレイクポイント５２０を視覚的に提示するＧＵＩ５００を提供することができる。
【００７１】
図６は、本発明に実施例によってＪａｖａＳｃｒｉｐｔで作成された例示的なテストスクリプトを概略的に示し、図７ａ及び図７ｂは、本発明に実施例によってＪａｖａＳｃｒｉｐｔで作成されたテストスクリプトから生成された例示的なＨＴＭＬ文書を概略的に示す。
【００７２】
図６の例示的なテストスクリプト６００は、各行のコードライン番号６１０と共に示される。ＪａｖａＳｃｒｉｐｔで作成されたテストスクリプト６００は、２個のユーザ定義関数、ｍａｉｎ（）とＬｏＲａ＿Ｓｅｒｖｅｒ＿Ｓｅｔｔｉｎｇ（）を含む。関数ｍａｉｎ（）は、定義済み関数ＳｅｎｄＴｏＬｏｇ（）を呼び出す２個のスクリプトステートメント（２３行及び２５行をご参照）を含み、ユーザ定義関数ＬｏＲａ＿Ｓｅｒｖｅｒ＿Ｓｅｔｔｉｎｇ（）を呼び出す１個のスクリプトステートメント（２４行をご参照）を含む。関数ＬｏＲａ＿Ｓｅｒｖｅｒ＿Ｓｅｔｔｉｎｇ（）は、定義済み関数ＳｒｖＯｎ（）を呼び出す１個のスクリプトステートメント（３行をご参照）、定義済み関数ＳｅｔＷａｉｔ（）を呼び出す１個のスクリプトステートメント（４行をご参照）、そして定義済み関数ＳｒｖＳｅｔＰａｒａｍ（）を呼び出す３個のスクリプトステートメント（５行乃至７行をご参照）。
【００７３】
図７ａ乃至図７ｂに例示されたＨＴＭＬ文書は、実施例によって図６のテストスクリプト６００から生成される。前述されたように、テストスクリプト６００内の定義済み関数の宣言がＨＴＭＬ文書の第１のスクリプトエレメント７１０に含まれる。例えば、第１のスクリプトエレメント７１０にはＪａｖａＳｃｒｉｐｔでアクセス可能な外部ＡＰＩによってテストスクリプト６００で利用可能な全ての定義済み関数がＪａｖａＳｃｒｉｐｔで外部ＡＰＩによって宣言される。便宜のために、前記定義済み関数のうち、ＳｒｖＳｅｔＰａｒａｍ（）及びＳｅｎｄＴｏＬｏｇ（）の宣言が図７ａに詳細に例示される。宣言された通り、関数ＳｒｖＳｅｔＰａｒａｍ（Ｋｅｙ、Ｖａｌ）は、Ｋｅｙが示すサーバ側パラメータをＶａｌの値に設定するための関数であり、関数ＳｅｎｄＴｏＬｏｇ（Ｔａｇ、Ｄｅｔａｉｌ）は、ＴａｇとＤｅｔａｉｌをログに残すための関数であり、Ｄｅｔａｉｌは、選択的（ｏｐｔｉｏｎａｌ）である。二つの関数の両方ともは、定義済み関数ＥｘｃｅｐｔｉｏｎＣｈｅｃｋ（）を呼び出し、この関数も第１のスクリプトエレメント７１０に宣言される。
【００７４】
前述されたように、テストスクリプト６００内のユーザ定義関数の定義がＨＴＭＬ文書の第２のスクリプトエレメント７２０に含まれる。例えば、第２のスクリプトエレメント７２０にはテストスクリプト６００内の２個のユーザ定義関数、ｍａｉｎ（）とＬｏＲａ＿Ｓｅｒｖｅｒ＿Ｓｅｔｔｉｎｇ（）のそれぞれの全てのスクリプトステートメントが含まれる。また、それぞれのユーザ定義関数内に含まれている、定義済み関数を呼び出すそれぞれのスクリプトステートメントの直前には定義済み関数ＬｉｎｅＣｏｍｍａｎｄ（）を呼び出すスクリプトステートメントが挿入されている。関数ＬｉｎｅＣｏｍｍａｎｄ（）も第１のスクリプトエレメント７１０に宣言される。宣言された通り、関数ＬｉｎｅＣｏｍｍａｎｄ（ｌｉｎｅＣｏｕｎｔ）は、テストスクリプトのｌｉｎｅＣｏｕｎｔ番目の行でブレイクポイントをエミュレートするための関数である。ＬｉｎｅＣｏｍｍａｎｄ（ｌｉｎｅＣｏｕｎｔ）を呼び出すスクリプトステートメントの直後に位置するスクリプトステートメントは、テストスクリプトのｌｉｎｅＣｏｕｎｔ番目の行にあるスクリプトステートメントと同じである。
【００７５】
前述されたように、ＨＴＭＬ文書は、エントリポイント関数として規定された関数ｍａｉｎ（）が優先的に実行されるようにするエレメント７６０を含む。ＨＴＭＬ文書の実行時に、ＤＵＴのテストは、関数ｍａｉｎ（）の実行から開始する。
【００７６】
前述されたように、ＨＴＭＬ文書は、ＩＤ属性を有するヒドン（ｈｉｄｄｅｎ）入力エレメント（例えば、入力エレメント７３０、７４０、７５０）を含む。図７ａを参照すると、第１のスクリプトエレメント７１０内に宣言された関数ＳｒｖＳｅｔＰａｒａｍ（）及びＳｅｎｄＴｏＬｏｇ（）は、ＤＯＭ（Ｄｏｃｕｍｅｎｔ  Ｏｂｊｅｃｔ  Ｍｏｄｅｌ）のメソッド（ｍｅｔｈｏｄ）ｄｏｃｕｍｅｎｔ．ｇｅｔＥｌｅｍｅｎｔＢｙＩｄ（）を使用し、このｍｅｔｈｏｄは、ＩＤ属性が与えられると、そのＩＤ属性を有するエレメントを返す。特に、関数ＳｒｖＳｅｔＰａｒａｍ（）及びＳｅｎｄＴｏＬｏｇ（）は、図７ｂに例示された入力エレメント７３０、７４０、７５０のうち入力エレメントのＩＤ属性であって、そのエレメントを取得するという点が理解される。
【００７７】
それによって、第１のスクリプトエレメント７１０に宣言された通り、関数ＳｒｖＳｅｔＰａｒａｍ（Ｋｅｙ、Ｖａｌ）は、対応する内部関数に自分の引数Ｋｅｙ及びＶａｌを伝達するために、“ＳｒｖＳｅｔＰａｒａｍ”というＩＤを有する入力エレメント７４０内にＫｅｙ及びＶａｌを記入するスクリプトステートメントと、“ｒｅｔＳｒｖＳｅｔＰａｒａｍ”というＩＤを有する入力エレメント７５０から内部関数の戻り値を読み取りし、自分の戻り値に返すスクリプトステートメントを含む。また、関数ＳｅｎｄＴｏＬｏｇ（Ｔａｇ、Ｄｅｔａｉｌ）は、対応する内部関数に自分の引数Ｔａｇ及びＤｅｔａｉｌを伝達するために、“ＳｅｎｄＴｏＬｏｇ”というＩＤを有する入力エレメント７３０内にＴａｇ及びＤｅｔａｉｌを記入するスクリプトステートメントを含む。
【００７８】
特に、第１のスクリプトエレメント７１０内に宣言された関数ＳｒｖＳｅｔＰａｒａｍ（）及びＳｅｎｄＴｏＬｏｇ（）は、メソッドｄｏｃｕｍｅｎｔ．ｇｅｔＥｌｅｍｅｎｔＢｙＩｄ（）により返されたエレメントに対してクリックイベントをトリガするスクリプトステートメントを含む。以下、イベントがトリガされることに応答してテスト自動化プラットフォームがどのように動作するかを例として説明する。
【００７９】
いくつかの実施例において、前述されたように、ＨＴＭＬ文書の実行のためのＷｅｂＶｉｅｗエンジンとしてＩＥエンジンが使われる。このような実行によるウェブページのレンダリング（ｒｅｎｄｅｒｉｎｇ）のためにＭＦＣのＣＤＨｔｍｌＤｉａｌｏｇクラス（ｃｌａｓｓ）またはこれから相続を受けた派生（ｄｅｒｉｖｅｄ）クラス、例えば、下記の通り定義されたＣＪＳＰａｒｓｅｒＤｌｇクラスが使われる。
【００８０】
2019109884.tif 000006
【００８１】
前記のように、ＣＪＳＰａｒｓｅｒＤｌｇクラスは、ＳｅｎｄＴｏＬｏｇ（）及びＳｒｖＳｅｔＰａｒａｍ（）というイベントハンドラを有する。このようなイベントハンドラは、Ｃ＋＋からアクセス可能な内部ＡＰＩによってテスト自動化プラットフォーム内で利用可能である。
【００８２】
また、ＨＴＭＬエレメントに関連したイベントを捕らえるために、このクラスに対して、下記の通りイベントマップ（ｅｖｅｎｔｍａｐ）が構成されることができる。
【００８３】
2019109884.tif 000007
【００８４】
前記イベントマップによると、“ＳｒｖＳｅｔＰａｒａｍ”というＩＤを有するＨＴＭＬエレメントにＳｒｖＳｅｔＰａｒａｍ（）というイベントハンドラが対応し、“ＳｅｎｄＴｏＬｏｇ”というＩＤを有するＨＴＭＬエレメントにはＳｅｎｄＴｏＬｏｇ（）というイベントハンドラが対応する。そして、ＣＪＳＰａｒｓｅｒＤｌｇクラスのＳｒｖＳｅｔＰａｒａｍ（）及びＳｅｎｄＴｏＬｏｇ（）は、下記の通り与えられる。
【００８５】
2019109884.tif 000008
【００８６】
2019109884.tif 000009
【００８７】
前記のように、イベントハンドラＳｒｖＳｅｔＰａｒａｍ（）は、“ＳｒｖＳｅｔＰａｒａｍ”というＩＤを有する入力エレメント７４０のｖａｌｕｅ属性の値を取得し、内部関数ｍ＿ＳｃｒＵｓｅｒＣｍｄ．ｓｒｖＳｅｔＰａｒａｍ（）を実行し、“ｒｅｔＳｒｖＳｅｔＰａｒａｍ”というＩＤを有する入力エレメント７５０のｖａｌｕｅ属性にその内部関数の戻り値を割り当てる。また、イベントハンドラＳｅｎｄＴｏＬｏｇ（）は、“ＳｅｎｄＴｏＬｏｇ”というＩＤを有する入力エレメント７３０のｖａｌｕｅ属性の値を取得し、内部関数ｍ＿ＳｃｒＵｓｅｒＣｍｄ．ｓｅｎｄＴｏＬｏｇ（）を実行する。
【００８８】
例示的な実施例は、本文書に記述された動作、技法、プロセス、またはこれのある様相や部分が再現されたコンピュータプログラムを含むコンピュータ読み取り可能な格納媒体として具現される。このようなコンピュータ読み取り可能な格納媒体にはプログラム命令語、ローカルデータファイル、ローカルデータ構造などが単独でまたは組み合わせて含まれる。開示された動作、技法、プロセス、またはこれのある様相や部分を具現または利用できるプログラムは、コンピュータにより実行されるある類型の（例えば、コンパイル型（ｃｏｍｐｉｌｅｄ）または解釈型（ｉｎｔｅｒｐｒｅｔｅｄ））プログラミング言語、例えば、アセンブリ（ａｓｓｅｍｂｌｙ）、機械語（ｍａｃｈｉｎｅ  ｌａｎｇｕａｇｅ）、手続き型（ｐｒｏｃｅｄｕｒａｌ）言語、オブジェクト指向（ｏｂｊｅｃｔ−ｏｒｉｅｎｔｅｄ）言語などで具現され、ハードウェア具現と組み合わせられる。用語“コンピュータ読み取り可能な格納媒体”は、コンピュータ装置（例えば、テスト自動化装置１２０）による実行のための命令語（実行時にコンピュータ装置が開示された技法を実行するようにする）を格納することができ、そのような命令語により使われ、またはこれと関連されたデータ構造を格納することができる任意の媒体を含むことができる。コンピュータ読み取り可能な格納媒体の例は、ハードディスク、フロッピーディスク及び磁気テープのような磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤのような光記録媒体、フロプティカルディスクのような磁気−光媒体、そしてＲＯＭ、ＲＡＭ、フラッシュメモリ、ソリッドステート（ｓｏｌｉｄ−ｓｔａｔｅ）メモリのようなメモリデバイスを含み、これに限定されるものではない。
【００８９】
以上で本発明のいくつかの実施例が詳細に記述されたが、これは制限されるものではなく、例示に過ぎない。本発明が属する技術分野において、通常の知識を有する者は、開示された実施例の細部事項に対して本発明の範ちゅうから外れない限り、多様な変更が行なわれることを理解することができる。したがって、本発明の範ちゅうは、説明した実施例に限定されてはならず、特許請求の範囲及びその均等物により決まらなければならない。
【符号の説明】
【００９０】
１００  テスト対象デバイス
１２０  テスト自動化装置
４１０  テストスクリプト
４２０  テスト自動化プラットフォーム
４３０  マークアップ言語文書
４４０  ＷｅｂＶｉｅｗエンジ
【図１】
2019109884.tif 000010
【図２】
2019109884.tif 000011
【図３】
2019109884.tif 000012
【図４】
2019109884.tif 000013
【図５】
2019109884.tif 000014
【図６】
2019109884.tif 000015
【図７ａ】
2019109884.tif 000016
【図７ｂ】
2019109884.tif 000017