バージョン 5.0 以降の Curl® 言語 API では、自動テスト ツールである Mercury QuickTest Professional® (QTP) バージョン 9.0 以降を使用して Curl 言語アプリケーションをテストできます。
Mercury QTP によるテストは、Windows® プラットフォームでのみ実行できます。
要約: | - Mercury QTP は、Curl RTE を自動的に起動できます。Curl コントロール パネルの [登録] ボタンと [登録解除] ボタンを使用して、この自動起動を行うかどうかを設定できます。
- 正常に動作させるには、QTP から Curl RTE を起動します。
- Curl アプレットをテストする際に、QTP Web アドインをロードします。
|
Curl RTE または Curl IDE がマシンにインストールされていて、QTP に登録されている場合は、QTP を起動すると RTE が自動的に起動します。
コントロール パネルの [登録解除] ボタンをクリックすると、QTP から RTE の登録が解除され、自動起動は行われなくなります。[登録] ボタンをクリックすると、RTE が QTP に登録され、自動起動は再び有効になります。QTP が既にインストールされているマシンに Curl RTE をインストールする場合は、Curl は自動的に登録されます。Curl RTE のインストール後に QTP をインストールする場合は、[登録] ボタンを使用して手動で RTE を登録する必要があります。
Curl アプリケーションをテストする際の QTP Web アドインのロードは、Java アプリケーションをテストする際の推奨操作と似ています。QTP の [アドイン マネージャ] ダイアログが表示された場合は、QTP の起動時にアドインを選択できます。[ツール] メニューを使用して、開いた [オプション] ダイアログから [アドイン マネージャ] を表示することもできます。
QTP と Curl RTE 間の通信を正常に行うには、QTP から Curl RTE を起動する必要があります。通信が正常に行われない場合は、オブジェクト スパイ を使用して Curl アプレットのコントロールをテストすると、次のような結果が表示されます。
さらに、Curl アプレットに対するユーザー操作も記録されません。通信が正常に行われている場合は、オブジェクト スパイ に次のような結果が表示されます。
要約: | - test-name プロパティでは、テストするオブジェクトの一意の識別子を指定できます。
- test-parent? プロパティでは、テスト名の名前空間を設定できます。
|
Mercury QTP によるテストは、クラス、プロシージャ、および一部のプロパティでサポートされています。これらのプロパティは
Visual で定義され、GUI Toolkit のほとんどのオブジェクトにより継承されます。
Mercury QTP でテストする Curl アプリケーションを作成する場合に最も重要なのは、アプリケーションで使用するオブジェクトのテスト名を指定することです。テスト名を指定するには、オブジェクトの
test-name プロパティを設定します。
Visual.test-name は
Visual で定義され、すべての GUI コントロールによって継承されます。
test-nameを指定しなければ、Curl 実行環境は、nullでなければ
Visual.nameプロパティを使用します。それができない時にはRTEは、タイプとアプレット内の数値順に基づいて各オブジェクトを一意に識別するテスト名 (
CommandButton#0 など) を自動生成します。この機能を使用すると、既存のアプリケーションを大幅に変更することなくテストできます。ただし、アプレットを編集してコントロールの表示順を変更した場合は、QTP によってコントロールの番号が自動的に再割り当てされます。そのため、前に自動生成された名前を使用する既存のテスト スクリプトは、機能しなくなります。
テスト名は、特定のテストの親の中で一意でなければなりません。新しいテストの親を作成するには、
Visual.test-parent? プロパティを使用します。たとえば、
TabContainer にいくつかの
TabPane を定義し、実行中にそれらのペインにコンテンツを追加します。全てのペイン内のコントロールに一意のテスト名が付いているかどうかを知るのは困難です。このような場合に、各ペインをテストの親にすると、テスト名を一意にすることができます。
テストの親をアプリケーションに追加する場合は、テストの親ごとに QTP のオブジェクト階層のレベルが追加されるという注意点があります。レベルが多すぎると、混乱が生じる可能性があります。
アプリケーションにカスタム コントロールが含まれている場合は、QTP テストをサポートするようそれらのコントロールを構築する必要があります。「
カスタム コントロールと自動テスト」を参照してください。
注意: Mercury QTP [記録の]再生機能はアプレットのローディングが完了するまでは使用できません。 これはアプレットがローディング時にダイアログを表示している場合に、Mercury QTPはダイアログのテストができないことを意味しています。 以下の回避方法で読み込み終了後にダイアログを表示させることによりこの問題は回避できます。
{after 0s do
<statements>
}
このアプローチにより、アプレットのローディングが完了するまで
<statements> 部分のコードの実行を遅らせることができます。
{define-proc {child-name}:HBox
{return
{HBox
{Label "Child Data: "},
{Fill width = 3px},
{TextField
test-name = "child-name",
prompt = "child's name"
},
{RadioFrame
{HBox
{RadioButton
test-name = "male",
label = "Male",
style = "standard"
},
{RadioButton
test-name = "female",
label = "Female",
style = "standard"
}
}
}
}
}
}
{Dialog
{spaced-vbox
{Frame
test-parent? = true,
{child-name}
},
{Frame
test-name = "child-2-data",
test-parent? = true,
{child-name}
},
{Frame
test-name = "child-3-data",
test-parent? = true,
{child-name}
}
}
}
次の図は、このサンプル アプレットで記録された QTP テストのキーワード ビューとエキスパート ビューを示しています。この例のポイントは次のとおりです。
- QTP は、RTE により提供されたラベル テキストを使用して、テスト対象のラジオ ボタンを識別します。
- RTE は、HBox に割り当てられたラベルを提供し、テスト対象のテキスト フィールドを識別します。一般に、RTE は、テスト対象のオブジェクトと最も関連性が高いと思われるグラフィック階層内のオブジェクトのラベル テキストを使用します。この例では、HBox にラベルがない場合、RTE はテスト名を使用します。
- RTE は、テストの親を提供する Frame オブジェクトのテスト名を使用します。テスト名が存在しない場合は、Frame は単純に CurlVisual と認識されます。
- 多くの場合、記録されたテスト スクリプトにテスト名は含まれていません。
Mercury QTP の
オブジェクト スパイ を使用して、Curl オブジェクトで使用できるメソッドやプロパティを表示できます。使用できる汎用アクションは、
RawClick、
RawDoubleClick、
MouseDrag、
PressKey、
Type、および
CallMethod です。これらのアクションの詳細については、
Visual.test-run を参照してください。
Type と CallMethod は記録されませんが、スクリプトに追加することはできます。Type では、一連の PressKey アクションを行うのと同様に文字列を入力できます。CallMethod では、任意のコードを呼び出せます。
次のコードをコピーしてサンプル アプレットを作成してみてください。次の例は、CallMethod を使用する単純なドロップダウン リストを定義しています。
{title Test Applet}
{DropdownList
test-name = "dropdown",
"0", "10", "20", "30",
value = "0"
}
すべてのテスト オブジェクトで使用できるプロパティは次のとおりです。
名前と型 | 説明 |
abs_x:int、abs_y:int | オブジェクトの画面上の絶対位置 (ピクセル単位)。 |
attached text:String | オブジェクトに関連付けられているラベル (ある場合)。このラベルは test-description ゲッターから取得されます。 |
curl object class:String | Curl の型の名前。 |
displayed:bool | オブジェクトが画面にピクセルを描画する可能性がある場合は true。 |
enabled:bool | enabled? の値。 |
focused:bool | オブジェクトがキー フォーカスを持っている場合は true。 |
height:int、width:int | オブジェクトの現在のサイズ (ピクセル単位)。 |
path:String | セミコロン (;) で区切られたオブジェクトとそのすべての祖先のテスト名 (合成される場合があります)。 |
rel_x:int、rel_y:int | テストの親を基準としたオブジェクトの位置 (ピクセル単位)。 |
test-name:String | Visual.test-name の値。この値が null の場合、名前が合成されます。 |
Copyright © 1998-2019 SCSK Corporation.
All rights reserved.
Curl, the Curl logo, Surge, and the Surge logo are trademarks of SCSK Corporation.
that are registered in the United States. Surge
Lab, the Surge Lab logo, and the Surge Lab Visual Layout Editor (VLE)
logo are trademarks of SCSK Corporation.