スマート識別 QTP/UFT 例を挙げて

⚡ スマートサマリー

スマート識別はフォールバックメカニズムです UFT 1つ目は、学習した記述がテスト対象のアプリケーションと一致しなくなった場合にオブジェクトを特定するためのもので、基本プロパティとオプションのフィルタプロパティを使用して候補リストを絞り込み、一致するものを1つに絞り込みます。

  • 🔍 定義: このメカニズムは、学習された記述が一意のオブジェクト一致を見つけられなかった場合にのみ作動します。
  • 🧩 2種類のプロパティタイプ: 基本フィルタプロパティは対象物を定義します。オプションフィルタプロパティは、一致条件をさらに絞り込みます。
  • ⚙️ 排除プロセス: UFT 基本プロパティから候補リストを再構築し、オプションプロパティを一つずつ使用してフィルタリングします。
  • 甘いもの<XNUMXxXNUMX><XNUMXxXNUMX><XNUMXxAXNUMX><XNUMXxAXNUMX>️️ 構成: 「ツール」>「オブジェクト識別」から、オブジェクトクラスごとにフィルタを有効にして設定します。
  • ⚠️ 結果の表示: 呼び出しのたびに、テスト結果ツリーに警告ステップが記録されます。
  • 🐢 パフォーマンスのトレードオフ: 追加のフィルタリングは、大規模なテストスイート全体で実行時のオーバーヘッドを増加させる。
  • 🔧 手動修正: フォールバックを回避するために、nameのような揮発性のプロパティをHTML idのような安定したプロパティに置き換えてください。
  • 💻 スクリプト制御: Setting(“DisableReplayUsingAlgorithm”) は、実行セッション全体に対してスマート識別機能を切り替えます。

スマート識別とは何ですか QTP/UFT?

スマートID は、フォールバックオブジェクト認識メカニズムです。 OpenText UFT 1つ目は、以前はHP QuickTest Professionalとして知られていたツール(QTP) 通常の識別プロセスでオブジェクトの学習済み記述に一致する一意のものが見つからない場合、 UFT スマート識別機能がトリガーされます。ただし、そのオブジェクトのクラスのオブジェクト識別設定でそのメカニズムが有効になっている場合に限ります。

学習による記述とは異なり、スマート識別では、保存されているすべてのプロパティについて完全一致を要求しません。2つのカテゴリのプロパティを評価して、候補となるオブジェクトのプールを1つに絞り込みます。

  • 基本フィルターのプロパティ。 テスト対象クラスの最も基本的な特性。つまり、元のオブジェクトの本質を変えることなく値を変更することができない特性。
  • オプションのフィルタプロパティ。 オブジェクトの識別に役立つ補助的な特性だが、時間の経過とともに変化する可能性が高い。

スマート識別が実行されると、 UFT 学習済みの記述を「忘却」し、基本フィルタプロパティすべてに一致するすべてのオブジェクトを含む新しい候補リストを再構築します。その後、オプションフィルタプロパティを1つずつチェックしてリストをさらに絞り込み、最終的に1つのオブジェクトだけが残るようにします。

実行セッション中にスマート識別機能が呼び出された場合、テスト結果ツリーにはそのメカニズムが使用されたことを確認する警告メッセージがログに記録され、学習された記述からの逸脱が可視化されるように、スマート識別ステップが結果に挿入されます。

スマート識別は3位にランクイン UFTは、学習された記述と視覚的関係識別子の後、そして最終手段として使用される序数識別子の前に、オブジェクト識別階層に配置されます。その位置を理解することで、頻繁に実行されるスクリプトの場合、根本的なプロパティを修正するのではなく、完全に無効にすることが長期的に見て最善の選択肢となることはほとんどない理由がわかります。

基本フィルタープロパティとオプションフィルタープロパティ

両方のフィルターは連携して機能しますが、上記の除去プロセスにおいてそれぞれ異なる役割を果たします。以下の比較表では、それぞれのフィルターがいつ使用されるか、そしてそれぞれがどの程度の除去能力を持っているかを明らかにします。

側面 基本フィルタプロパティ オプションのフィルタープロパティ
職種 最初の候補者リストを作成する 候補リストを1つのオブジェクトに絞り込む
安定性 オブジェクトのアイデンティティを変えずに変更することはほとんどない オブジェクトの同一性を変更することなく、定期的に変更できる
マッチングルール すべての候補者は、すべての基本特性に合致する必要があります。 一度に1つの物件をチェックします。すべての候補を排除する物件はスキップされます。
典型的な例 HTMLタグ、オブジェクトクラス、インデックス 名前、HTML ID、altテキスト、画像ソース
設定されている場合 オブジェクト識別 > 設定 > 基本フィルタプロパティ オブジェクト識別 > 設定 > オプションのフィルタプロパティ

同じプロパティは両方のリストに含めることができないため、分割計画は慎重に行う必要があります。オブジェクトの本質を定義するプロパティは基本リストに、類似のオブジェクトとの区別に役立つプロパティはオプションリストに含めるべきです。

スマート識別機能の仕組み:ステップバイステップのプロセス

スマート識別は、学習された記述と任意の視覚関係識別子が単一のオブジェクトを特定できなかった場合にのみアクティブになります。一度トリガーされると、 UFT 予測可能な4段階の排除プロセスを経て機能します。

  1. 候補者リストを再構築する。 UFT 学習済みの記述を無視し、オブジェクトの親オブジェクトをスキャンして、すべての基本フィルタプロパティに一致するオブジェクトをすべて探します。
  2. 最初のオプションプロパティを適用します。 UFT オプションフィルタプロパティリストの最初のプロパティに一致しない候補をすべて削除します。
  3. 結果を評価してください。 候補者が複数残っている場合、 UFT 次のオプションのプロパティで前の手順を繰り返します。フィルターが残りの候補をすべて除外する場合、 UFT そのプロパティをスキップして、次のプロパティに進みます。
  4. 1試合で止める。 UFT オブジェクトがちょうど1つ残るか、チェックするオプションのプロパティがなくなるまで、フィルタリングと評価のサイクルを繰り返します。

消去プロセスで単一のオブジェクトを分離できない場合、 UFT 学習済みの記述に加えて、インデックス、場所、作成時刻などの順序識別子を使用してオブジェクトを特定します。それでもオブジェクトを特定できない場合は、実行セッションが一時停止し、実行時エラーが表示されます。

スマート識別機能を有効または無効にする方法

スマート識別は、テストオブジェクトクラスごとに構成されます。 ツール > オブジェクト識別環境とオブジェクトクラスを選択し、オンにします スマート識別を有効にする、次に以下をクリックします 構成 そのクラスの基本フィルタプロパティとオプションフィルタプロパティを選択します。同じダイアログで、常に学習済みの説明を使用するクラスに対して、このオプションをオフにすることもできます。

スマート ID の有効化/無効化

スマート識別機能の仕組み(動画解説)

以下のビデオでは、実際の例を用いて、基本フィルターとオプションフィルターの除去プロセスを解説しています。

詳しくはこちら こちら ビデオにアクセスできない場合

スマート識別技術を使用するメリットとデメリット

スマート識別機能は耐障害性を向上させますが、その耐障害性には実行時コストが伴います。オブジェクトリポジトリ全体でデフォルトで有効にする前に、両方の側面を慎重に検討してください。

  • ✅ マイナーなUI変更にも対応: 属性名の変更やページ内での位置変更によって、そのオブジェクトにアクセスするすべてのスクリプトが動作しなくなることはなくなりました。
  • ✅ オブジェクトリポジトリのメンテナンスを軽減します。 小規模なフロントエンドリリース後、テスターはオブジェクトの再記録に費やす時間が少なくなる。
  • ✅ 結果に常に表示されます: 呼び出しのたびに警告がログに記録されるため、チームはフォールバックが実際にどのくらいの頻度で必要になるかを監査できます。
  • ⚠️ テスト実行速度の低下: 候補リストの作成と絞り込みには、物件を直接照合するよりも明らかに時間がかかり、物件数が多いほどコストも増大する。
  • ⚠️ 実際の欠陥を隠蔽する可能性があります。 スマート識別機能が類似のオブジェクトを静かに検出した場合、実際のUIの不具合が見過ごされてしまう可能性があります。
  • ⚠️ 定期的な見直しが必要です: アプリケーションの進化に伴い、基本フィルタプロパティとオプションフィルタプロパティは定期的に見直す必要があります。

ほとんどのチームは、探索的なスクリプトや実行頻度の低いスクリプトではスマート識別機能を有効にしたままにしておき、オブジェクトの識別特性が安定したら、パフォーマンスが重要なオブジェクトに対して選択的に無効にします。

オブジェクトのプロパティを変更してスマート識別を回避する

スマート識別機能の柔軟性は、前述の実行時コストと引き換えに得られるため、多くのチームはフォールバックに繰り返し頼るよりも、オブジェクトの識別プロパティを独自に修正することを好みます。プロパティの修正が実行時フォールバックよりも優れていることを示す2つの兆候に注目してください。1つは、ほぼ毎回実行されるスマート識別警告、もう1つは、フォールバックが開始されてからスクリプトの実行速度が著しく低下していることです。どちらも、一時的なUIの不具合ではなく、デフォルトの識別プロパティがアプリケーションに合わなくなったオブジェクトを示しています。以下のビデオでは、実際のログインフォームで修正方法を実演しています。

詳しくはこちら こちら ビデオにアクセスできない場合

動画の文字起こし:主なポイント

  • スマートな識別機能はスクリプトの実行速度を低下させるため、大規模なスクリプトや頻繁に実行されるスクリプトには適していません。
  • それを完全に回避するには、フォールバックに頼るのではなく、デフォルトのオブジェクト識別プロパティを変更してください。
  • In オブジェクトの識別必須プロパティから「name」を削除し、「HTML id」に置き換えることで、テストが名前の変更に影響されないようにします。
  • 必須物件リストが更新されたら、同じ手順を再度記録してください。
  • 後で名前が「Submit」から「Login」に変更された場合、スクリプトはスマート識別機能をトリガーせずに実行されます。
  • 同様に、テスト対象オブジェクトの必須プロパティまたは補助プロパティが頻繁に変更される場合は、スクリプトの実行速度を維持するために、より安定したプロパティに置き換えてください。
  • プロパティの微調整は経験を通して身につくスキルであり、ツールを使い込むほど上達します。

VBScriptを使用してスマート識別を無効にする

スマート識別は、オブジェクトリポジトリに触れることなく、実行セッション全体に対してオフにすることもできます。 アルゴリズムを使用したリプレイを無効にする 実行時設定。これは、プロパティの不一致が発生した場合に、スクリプトが黙って除外処理にフォールバックするのではなく、即座にエラーを発生させる必要がある場合に便利です。

' Disable Smart Identification for this run session
Setting("DisableReplayUsingAlgorithm") = 1

Browser("Mercury Tours").Page("Find Flights").WebEdit("userName").Set "mercury"

' Re-enable Smart Identification once the strict steps are done
Setting("DisableReplayUsingAlgorithm") = 0

無効化ウィンドウはできるだけ短くしてください。無効化ウィンドウ内で実行される手順は、学習済みの説明と完全に一致している必要があります。そのため、テスト対象アプリケーションに何らかの変更が生じた場合でも、スムーズなフォールバックではなく、即座にエラーが発生します。

資料

上記のチュートリアルで使用されているウェブページをダウンロードして、自主練習にご活用ください。

よくあるご質問

いいえ。スマート識別機能はほとんどの分野に適用されます。 UFT 環境の一つには、 Windows, Java.NETオブジェクトだけでなく、Webオブジェクトも対象となります。利用可能かどうかは、環境の種類ではなく、アドインとテストオブジェクトのクラスに依存します。

候補リストを作成し、プロパティごとにフィルタリングする処理は、学習済み記述との一致を1回行うよりも時間がかかります。大規模なオブジェクトリポジトリでは、この追加処理が積み重なるため、多くのチームはパフォーマンスが重要なオブジェクトではこの機能を無効にしています。

はい。オブジェクトリポジトリで該当オブジェクトを開き、「オブジェクトプロパティ」>「追加の詳細」に進み、そのオブジェクトのみ「スマート識別を有効にする」を「False」に設定してください。リポジトリ内の他のオブジェクトは変更しないでください。

彼らは同様の問題を異なる方法で解決する。現代の自己修復ロケーター AIテストツール 変更された要素を自動的に再学習する一方、スマート識別機能は固定プロパティリストをフィルタリングします。多くのチームは両方を併用しています。

いいえ。スマート識別フィルターは保存されたテキストプロパティをフィルタリングしますが、 UFT 同社の最新のAIベースおよびInsight識別技術は、物体を視覚的に認識します。この2つは、それぞれ独立した、相互補完的なフォールバックレイヤーとして機能します。