AI ベースのテスト・オブジェクトの認識の改善
Mobile,Web,Windows ベースの SAP GUI のテスト
このトピックでは,UFT One の人工知能(AI)機能がアプリケーション内のオブジェクトを一意に識別できるようにするために使用するいくつかの要素について説明します。
オブジェクトへのテキストの関連付け
オブジェクトに関連付けられたテキストは,オブジェクトを一意に識別するのに役立ちます。例:
AIUtil("input", "USER NAME").Type "admin"
このステップでは USER NAME というテキストを使用してオブジェクトを記述することで,正しいフィールドに確実に入力できるようにしています。
アプリケーション内のオブジェクトを検出する際に,フィールドの周囲に複数のラベルがある場合,UFT One はオブジェクトの認識に最も理にかなっていると考えられるラベルを使用します。
ただし,オブジェクトの記述で別のラベルを使用する場合でも,UFT One はこのオブジェクトを識別します。
Example: アプリケーション内のオブジェクトを検出する際に,ボタンはボタン上のテキストに関連付けられますが,フィールドは内容ではなくラベルに関連付けられます。
フィールドに複数のラベルがあり,UFT One が検出でいずれかのラベルを選択する場合,フィールドの記述に別のラベルを使用したテスト・ステップを実行する場合でも,UFT One はこのフィールドを正しく識別します。
場合によっては,UFT One AI は,互いに近くにある複数のテキスト文字列を 1 つのテキスト文字列に結合して,1 つのオブジェクトを認識します。
結合された文字列を編集して,オブジェクトの認識に使用する文字列を 1 つだけ残すことができます。文字列の一部ではなく,文字列全体を削除してください。
Example:
以下のテキスト・ボックスの場合,UFT One の AI は Password と Forgot? を 1 つの文字列に結合してオブジェクトを認識し,次のステップ・コードをテスト・スクリプトに追加します。
AIUtil("text_box", "Password Forgot?").Type
スクリプトから 1 つの文字列全体を削除し,コードを次のように変更してもテストに失敗することはありません。
AIUtil("text_box", "Password").Type
テキスト認識オプションの構成
これらのテキスト認識オプションをカスタマイズして,アプリケーションで最適なテキスト認識を実現します。
複数の言語でのテキスト認識
UFT One の AI 機能が英語以外の言語のテキストを認識できるようにするには,[ツール]>[オプション]>[GUI テスト]>[AI](または[AI オブジェクト検出])で関連する OCR 言語を選択します。[AI オブジェクト検出]表示枠([オプション]ダイアログ・ボックス>[GUI テスト]タブ)を参照してください。
AI を使用したオブジェクト認識時の正確なテキスト・マッチング
AI ベースのオブジェクトの認識では,テキスト・マッチングに AI アルゴリズムを使用します。AI によるテキスト・マッチングでは,スペルのバリエーションや意味の似た単語が一致と見なされる場合があります。
必要に応じて,AI テスト・オブジェクトを認識するときに,指定したテキストを正確に検出するように UFT One に一時的に指示できます。
AI の実行を設定するステップをテストに追加して,テキストの一致方法を設定します。この設定は,設定を変更するか,テスト実行が終了するまで有効です。詳細については,『UFT One Object Model Reference for GUI Testing』の「AIRunSettings Object」を参照してください。
注:
- アプリケーションのテキストは,OCR を使用して認識されます。OCR が不正確な場合,AI によるテキスト・マッチングの方が,正確なテキスト・マッチングよりも成功率が高くなる可能性があります。
- 正確なテキスト・マッチングでは大文字と小文字は区別されません。
UFT One のテキスト認識設定の使用
UFT One のテキスト認識設定を使用するように AI に指示します。UFT One の設定に応じて,Google または Baidu OCR クラウド・サービスまたはその他の UFT One OCR エンジンを使用できます。[AI オブジェクト検出]表示枠([オプション]ダイアログ・ボックス>[GUI テスト]タブ)を参照してください。
正規表現を使用
UFT One バージョン 2023 以降でサポート
オブジェクトの認識に使用するテキストを記述する際は,正規表現を使用できます。この方法では,正確なテキストを指定する代わりに,オブジェクトのテキストが一致すべきパターンを指定できます。
これは,ショッピング・カート内の合計金額や在庫内のアイテム数など,アプリケーション内の動的テキストを識別するのに役立ちます。
正規表現を使用するには,AIUtil.AIObject または AIUtil.FindTextBlock プロパティの AIText パラメータで AIRegex オブジェクトを使用します。
UFT One でサポートされている正規表現の詳細については,正規表現の文字と使用方法を参照してください。
正規表現が正しいテキストを識別しているかどうかを確認するには,[ツール]>[正規表現エバリュエータ]を使用します。詳細については,正規表現エバリュエータを参照してください。
注: AI ベースのオブジェクトの認識は Python の正規表現を使用しますが,UFT One の他の機能は VBScript の正規表現を使用します。基本的な正規表現の場合,これらは似た表現のはずです。上記のリソースを使用して作成した正規表現が要件を満たさない場合は,Python の正規表現の詳細を調べてください。
Example: Amazon で買い物をするときに,購入金額の合計を見つけたいとします。これはショッピング・カートのページで 2 回,次のように表示されます。
次のテストでは,正規表現を使用して,このテキストを見つけて出力します。
AIUtil.SetContext Browser("creationtime:=0") 'Set the context for AI Set regex = AIRegex("Subtotal \(\d item\): \$[\d.]+") print AIUtil.FindTextBlock(regex, micFromTop, 1).GetText
micAIMatch で正規表現を使用する場合,指定されたテキスト・パターンからのある程度の逸脱は許容されます。したがって,上記の例では,Subtotal の文字列は複数形の 'items' が使用され,正規表現では単数形の 'item' が使用されている場合でも,Subtotal の文字列が返されます。
相対的な位置でのオブジェクトの識別
オブジェクトに対するステップを実行するには,UFT One でオブジェクトが一意に識別される必要があります。複数のオブジェクトがオブジェクトの記述と一致する場合は,オブジェクトの位置を追加して一意に識別することができます。位置は,アプリケーション内の類似オブジェクトに関連して序数にすることも,アンカと見なされる別の AI オブジェクトに関連して近位にすることもできます。
AIUtil オブジェクト認識メソッドは,location および locationData 引数を使用するようになりました。この引数で,オブジェクトの位置に関する情報を提供できます。「AIObject」,「FindText」,「FindTextBlock」を参照してください。
次の内容を指定します。
-
オブジェクトの occurrence(それが 1 番目の出現か,2 番目か,3 番目か)。
-
その orientation(出現をカウントする方向):
FromLeft
,FromRight
,FromTop
,FromBottom
。
たとえば,AIUtil("button", "ON", "FromLeft", 2).Click
は,アプリケーション内の左から 2 番目の ON
ボタンをクリックします。
別の AI オブジェクトに近接するオブジェクトの位置を記述するには
次の内容を指定します。
-
アンカ・オブジェクトの記述。
アンカは,記述するオブジェクトと同じコンテキストに属する AI オブジェクトである必要があります。
アンカは,その位置によって記述することもできます。
-
記述するオブジェクトと比較したアンカ・オブジェクトの方向:
WithAnchorOnLeft
,WithAnchorOnRight
,WithAnchorAbove
,WithAnchorBelow
UFT One は,記述に一致し,アンカに最も近く,指定された方向に並んでいる AI オブジェクトを返します。
たとえば,このテストでは,Linux テキストの右にあり,Latest Edition テキスト・ブロックの下にある download ボタンをクリックします。
Set latestEdition = AIUtil.FindTextBlock("Latest Edition") Set linuxUnderLatestEdition = AIUtil.FindText ("Linux", micWithAnchorAbove, latestEdition) AIUtil("button", "download", micWithAnchorOnLeft, linuxUnderLatestEdition).Click
注: 相対的な位置を基準としてオブジェクトを識別する場合,たとえば,記録セッションまたは[AI検査]ウィンドウでオブジェクトに関係を追加する場合に,テスト・スクリプトを正常に実行するには,アプリケーションのサイズを変更しないことが必要です。
画像を使用したコントロールの記述
AI 識別でサポートされていないコントロール・タイプがアプリケーションに含まれている場合は,UFT One がコントロールの識別に使用できるコントロールの画像を提供できます。UFT One でこのコントロール・タイプに使用するクラス名をカスタム・クラスとして登録することによって指定します。
AIUtil.RegisterCustomClass "door", "door.PNG"
AIUtil("door").Click
詳細については,『UFT One Object Model Reference for GUI Testing』の「AIUtil.RegisterCustomClass method」を参照してください。
カスタム・クラスを登録すると,AIUtil ステップでそれをコントロール・タイプとして使用できます。
AIUtil("<Myclass>")
AIUtil("<Myclass>", micAnyText, micFromTop, 1)
AIUtil("<Myclass>", micAnyText, micWithAnchorOnLeft, AIUtil("Profile"))
これを使用してアンカ・オブジェクトを記述することもできます。アンカ・オブジェクトは,近くにある他のオブジェクトを識別するために使用されます。
AIUtil("profile", micAnyText, micWithAnchorOnLeft, AIUtil("<Myclass>") )
注:
- 登録済みクラスをアンカとして使用して,近接性によって別の登録済みクラスを識別することはできません。
- コントロールを記述するために使用する画像は,コントロールと正確に一致している必要があります。
オブジェクトの認識の検証
テスト実行の成功率を上げるため,UFT One は操作を実行する前にオブジェクトの認識を検証します。これが役立つのは,たとえば,オブジェクトが広告で覆われたり,別の位置にスクロールされたりするときのように,アプリケーション内のオブジェクトの位置が実行時に変化する場合です。UFT One はオブジェクトの移動を検出すると,オブジェクトの新たな位置に対して操作を実行します。
識別したオブジェクトを検証で特定できない場合,UFT One は,最初に識別したオブジェクトの位置で操作を実行します。実行結果レポートに警告メッセージが表示されます。
オブジェクト認識の検証は,標準設定で,非モバイル・コンテキストでは有効になっており,モバイル・コンテキストでは無効になっています。コンテキストの設定は,[ツール]>[オプション]>[GUI テスト]>[AI](または[AI オブジェクト検出])で変更できます。
注: 検証を追加すると,テスト実行の速度に影響します。
特定のテスト実行についてオブジェクト認識の検証を有効または無効にするには,AIRunSettings.VerifyIdentification オブジェクトを使用します。『UFT One Object Model Reference for GUI Testing』の「AIRunSettings Object」を参照してください。
自動スクロール
テストの実行時にオブジェクトがアプリケーションに表示されていないが,アプリケーション画面のスクロールが可能なときは,UFT One がオブジェクトを検出するために自動的にスクロールします。記述と一致するオブジェクトが識別されると,それ以上スクロールは実行されません。後続のアプリケーション・ページまたは画面に表示されている同じオブジェクトは見つかりません。
UFT One は,チェックポイントの実行時に,アプリケーションに表示されていないオブジェクトが必要になった場合も同様にスクロールします。チェックポイントは,次のページまたは画面までスクロールしてもオブジェクトが見つからない場合にのみ成功となります。
標準設定では,UFT One は 2 回下にスクロールします。必要に応じて,スクロールの方向と実行するスクロールの最大数をカスタマイズするか,スクロールを無効にすることができます。
-
[ツール]>[オプション]>[GUI テスト]>[AI](または[AI オブジェクト検出])を使用するか,UFT One のオートメーション・スクリプトを使用して,スクロールをグローバルにカスタマイズします。[AI オブジェクト検出]表示枠([オプション]ダイアログ・ボックス>[GUI テスト]タブ)を参照してください。
-
AIRunSettings.AutoScroll オブジェクトを使用して,テスト実行内で一時的にスクロールをカスタマイズします。『UFT One Object Model Reference for GUI Testing』の「AIRunSettings Object」を参照してください。
注:
-
テスト内にステップを追加して,アプリケーション内でアクティブにスクロールすることもできます。詳細については,『UFT One Object Model Reference for GUI Testing』のAIUtil.Scroll および AIUtil.ScrollOnObject を参照してください。
-
UFT One バージョン 2021 R1 以降:モバイル・アプリをテストする場合,自動スクロールは,Digital Lab(UFT Mobile) 2021 以降を使用している場合にのみサポートされています。
ローカル AI モデルの更新
[AIモデルの更新]機能は現在利用できません。
UFT One バージョン 2021 R1 以前:
[AI]>[AIモデルの更新]表示枠を開いて,現在使用しているモデルのバージョンを確認できます。
その他の参照項目: