qtp tutorial 7 qtp s object identification paradigm how qtp identify objects uniquely
QTPはどのようにしてオブジェクトを一意に識別しますか? –これは、QTPトレーニングシリーズの7番目のQTPチュートリアルです。
私たちは私たちが書くことを可能にするすべての基本的な概念を身につけています 堅牢なQTPテスト 。 QTPについて説明しました 設定の記録と実行 、 キーワードビューの操作 およびその他の関連トピック。
=> QTPトレーニングチュートリアルシリーズについては、ここをクリックしてください
これは、QTPの重要な側面について説明するシリーズの次の記事です– オブジェクトを一意に識別するために使用するメカニズム 。以下の画面を見ると:
このダイアログには、3つのボタンと2つのテキストボックス、およびその他のさまざまな要素があります。
前の例では、ユーザー名とパスワードを入力すると、QTPがプログラムコードとキーワードビューのテーブルに関して同じ操作を記録する方法を確認しました。さて、再生中に、QTPは、エージェント名またはパスワードとして提供する値がそれぞれこれらの編集ボックスに入力される必要があることをどのように認識しますか。または、入力した値を送信するためにクリックするボタンをどのように知るのですか?
その答えを見つけてみましょう。
あなたが見るものはあなたがウェブビルダーを手に入れるものです
QTPがどのオブジェクトに作用するかをどういうわけか覚えていることは明らかです。それが行う方法は、オブジェクトをテストオブジェクトとしてAUTに格納することです。次に、そのプロパティを調べて、オブジェクトを分類します。 例えば、 (OK)ボタンが見つかると、そのプロパティを調べ、それらに基づいて、オブジェクトを「WinButton」として分類します。
QTPには、識別したオブジェクトのクラスごとに学習/保存する事前定義されたプロパティのセットがあります。これには3つの側面があります。
- 必須のプロパティ :これは、QTPが常に保存する特定のクラスのプロパティのリストです。これがオブジェクトの説明と言えます。また、これを親オブジェクトと組み合わせてチェックし、説明がオブジェクトを一意に識別するのに十分かどうかを確認します。
- 補助プロパティ :必須プロパティの説明がオブジェクトを識別するのに不十分な場合、オブジェクトを識別するのに十分なデータが得られるまで、必須ではないプロパティのセットが次々に説明に追加されます。
- 序数識別子 :補助プロパティでもオブジェクトの一意の識別が得られない場合は、ページ上またはソースコード内のオブジェクトの場所など、特別な序数識別子がQTPによって追加されます。
つまり、これがQTPがテストオブジェクトを形成する方法です。このテストオブジェクトの説明を使用して、実行セッション中に動作するオブジェクトを検索します。含まれている説明と完全に一致するオブジェクトを選択します。これらのオブジェクトは ランタイムオブジェクト。
アプリケーションが大幅に変更されていない限り、QTPが持つテストオブジェクトの説明でオブジェクトを見つけるのに十分です。
FlightアプリにあるWinButtonオブジェクトについて、QTPが保存しているプロパティを確認しましょう。この情報は、オブジェクトリポジトリで入手できます。メニューオプション「リソース->オブジェクトリポジトリ」は、ORを起動します。または、CTRL + Rを使用するか、アイコンをクリックすることもできます。
上記のウィンドウで気付いた場合、実行時にこのボタンを識別するための説明として、WinButtonに「テキスト」が保存されています。
より複雑なアプリケーションの場合、テスターは特定のプロパティを追加または削除して、実行時にオブジェクトをより正確に識別するのに十分な堅牢性のある説明を作成できます。これを行うには、「+」アイコンをクリックするだけです。
オブジェクトの他のすべてのプロパティが表示されます。ユーザーは、これらのプロパティの1つ以上を追加することを選択できます。
「」と呼ばれるものもあります 視覚的関係識別子 WinButtonプロパティのOR画面で」。
これは、AUT内の隣接するオブジェクトに応じたオブジェクト認識をさらにサポートする機能です。一度設定すると、これにより、AUT内の安定性の低いコンポーネントと、より一意に識別可能なオブジェクトへの一種のリンクが作成されます。 QTPは、これらの一意のオブジェクトに対する相対的な位置を維持している限り、これらのオブジェクトを識別します。
位置リンクの種類を設定するには、ORでこの列をクリックする必要があり、次の画面が表示されます。
この画面で「+」記号を選択して、テストオブジェクトに位置リンクを設定するオブジェクトを追加します。
「エージェント名」を選択し、このオブジェクトは「OK」ボタンの上にある必要があると言います。
これは私がそれを設定する方法です:
これで、将来(OK)ボタンの一部のプロパティが変更された場合に備えて、QTPは「エージェント名」がその上にある場合にそれを識別します。
スマート識別
根本原因分析の例ソフトウェア開発
これは、これら2つの状況のいずれかでQTPが採用するメカニズムです。 QTPが持つオブジェクトの説明:
- どのランタイムオブジェクトとも一致しません
- 複数のオブジェクトと一致します
これは少し高度な概念なので、後で簡単で精巧な理解のためにいくつかの例を使用して説明します。
序数識別子
これは、同様の説明を持つオブジェクトとオブジェクトの相対的な順序を表す数値です。オブジェクト1とオブジェクト2が同じ必須および補助プロパティを持っている場合、序数識別子を使用してオブジェクトを一意に認識します。
この値は画面の他のオブジェクトに関連しているため、画面で何かが変更された場合、この識別子は役に立たない可能性があります。必須および支援プロパティが十分である場合、序数識別子はレコードに割り当てられないことに注意してください。 OR内のオブジェクトのそれぞれの列をクリックすると、後で追加できます。
序数識別子には次の3種類があります。
- インデックス: これは、アプリケーションコード内のオブジェクトの出現順序に基づいています
- ロケーション: 画面、ダイアログ、またはページ内の場所に基づく
- 作成時間: これはブラウザオブジェクトにのみ使用されます。同様のプロパティを持つブラウザが2つ存在する場合、最初と次に作成されたブラウザが考慮されます。
例えば、 Flightアプリケーションのログイン画面で「インデックス」識別子がどのように機能するかを理解しましょう。
これらは次のコンポーネントです。
ご覧のとおり、静的テキストと編集ボックスには同じ「テキスト」プロパティがあります。
それらの1つが静的テキストで、もう1つがWinEditオブジェクトであることがわかっている場合は、まったく問題はありません。これらすべてがWinObjectとして扱われる場合、どのオブジェクトを操作するかを指定する必要があるとしましょう。これは、必須の支援的でスマートな識別が失敗した場合にのみ発生します。したがって、QTPに何が何であるかを伝えるために、「インデックス」序数識別子を割り当てます。私はORからそうします。
エージェント名の静的テキスト識別子を0に設定し、編集ボックスの場合は1に設定します。
これはそれがどのように見えるかです:
したがって、静的テキストにアクセスする必要がある場合は、次のようにします。
WinObject(“ text:= Agent Name:”、index:= 0) –これは静的テキストを参照します
WinObject(“ text:= Agent Name:”、index:= 1) –これは編集ボックスを参照します
同じ理論が場所識別子にも当てはまりますが、ウィンドウ内の場所を選択して、特定のオブジェクトに適用できる数値を決定する点が異なります。
オブジェクト識別プロパティの構成:
特定のクラスのオブジェクトが認識されるために考慮される必須の補助プロパティと序数識別子は、「ツール->オブジェクト識別子」を使用して構成できます。このウィンドウからスマート識別プロパティを設定することもできます。
ウィンドウは次のようになります。
この上の画像に見られるように、環境はドロップダウンボックスから選択できます。それが選択されると、対応する環境のオブジェクトのクラスがリストに表示されます。オブジェクトを選択すると、必須プロパティと補助プロパティが表示されます。ユーザーは、このリストに追加のプロパティを追加/削除できます。
また、必要に応じて、特定のクラスのオブジェクトに対してスマートIDを有効/無効にすることができます。序数識別子を設定するために、場所、インデックス、または作成時間を使用してオブジェクトを識別するために選択できるドロップダウンがあります(ブラウザタイプのみ)。
本格的なQTPプログラムに移る前に、基本的な概念をまとめます。次のQTP記事には、さまざまな記録モード、オブジェクトスパイ、オブジェクトリポジトリなどの詳細が含まれます。
=> QTPトレーニングチュートリアルシリーズについては、こちらをご覧ください
推奨読書
- QTPのオブジェクトリポジトリ-チュートリアル#22
- QTPチュートリアル#18 –QTPの例で説明されたデータ駆動型およびハイブリッドフレームワーク
- QTPチュートリアル#24-QTPテストでの仮想オブジェクトとリカバリシナリオの使用
- QTPチュートリアル#6 –最初のテストのQTPレコードと実行設定を理解する
- QTPチュートリアル#23-QTPスマートオブジェクトの識別、同期点、およびテスト結果の分析
- QTPチュートリアル#8-QTP記録モード、オブジェクトスパイ、オブジェクトリポジトリについて学ぶ
- QTPのパラメータ化(パート2)-QTPチュートリアル#20
- QTPチュートリアル-25以上のMicroFocus Quick Test Professional(QTP)トレーニングチュートリアル