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 は PasswordForgot? を 1 つの文字列に結合してオブジェクトを認識し,次のステップ・コードをテスト・スクリプトに追加します。

AIUtil("text_box", "Password Forgot?").Type

スクリプトから 1 つの文字列全体を削除し,コードを次のように変更してもテストに失敗することはありません。

AIUtil("text_box", "Password").Type

先頭に戻る

テキスト認識オプションの構成

テキスト認識オプションをカスタマイズして,アプリケーションで最適なテキスト認識を実現します。これらのオプションのほとんどは,[ツール]>[オプション]>[GUI テスト]>[AIオブジェクト検出]>[OCR]でグローバルに設定できます。[AI オブジェクト検出]表示枠([オプション]ダイアログ・ボックス>[GUI テスト]タブ)を参照してください。

さらに,テストに AIRunSettings ステップを追加して,テキスト認識オプションを設定することもできます。この設定は,設定を変更するか,テスト実行が終了するまで有効です。詳細については,『UFT One Object Model Reference for GUI Testing』の「AIRunSettings Object」を参照してください。

UFT One のテキスト認識設定の使用

UFT One のテキスト認識設定を使用するように AI によるオブジェクト認識に指示します。UFT One の設定に応じて,Google または Baidu OCR クラウド・サービスまたはその他の UFT One OCR エンジンを使用できます。

このオプションを使用すると,グローバルな UFT One テキスト認識設定が有効になります。テキスト認識の設定を参照してください。

複数の言語でのテキスト認識

UFT One の AI オブジェクト検出が英語以外の言語のテキストを認識できるようにするには,関連する OCR 言語を選択します。この設定は,UFT One OCR 設定の使用を選択した場合は無視されます。

AI を使用したオブジェクト認識時の正確なテキスト・マッチング

AI ベースのオブジェクトの認識では,テキスト・マッチングに AI アルゴリズムを使用します。AI によるテキスト・マッチングでは,スペルのバリエーションや意味の似た単語が一致と見なされる場合があります。

必要に応じて,AI テスト・オブジェクトを認識するときに,指定したテキストを正確に検出するように UFT One に一時的に指示できます。AIRunSettings ステップをテストに追加して,テキスト・マッチングの方法を設定します。

このオプションは,グローバル・オプションとしては利用できません。

注:  

  • アプリケーションのテキストは,OCR を使用して認識されます。OCR が不正確な場合,AI によるテキスト・マッチングの方が,正確なテキスト・マッチングよりも成功率が高くなる可能性があります。
  • 正確なテキスト・マッチングでは大文字と小文字は区別されません。

UI コントロールの境界の考慮

画面上で互いに近いテキスト文字列があっても,異なる UI コントロールに属している場合は関連性がないことがあります。たとえば,異なるテーブル・セルのテキストは,画面上で 1 つの長い文字列に見えても,別々の文字列として識別する必要があります。

テキストを識別する際にUIコントロールの境界線を考慮する]オプション(標準設定で選択されています)は,そうした文字列を分離するための設定です。

文字列からのノイズのトリミング

アイコンやチェックマークなどの UI 要素が文字のように見え,識別されたテキスト文字列に「ノイズ」が加わる場合があります。[ノイズ文字をトリミング]オプション(標準設定で選択されています)は,識別された文字列から,予期しない領域やコントロールで識別された文字を削除するための設定です。

注: ノイズ文字をトリミングできるのは,識別されたテキスト文字列とそれらの文字が空白で分かれている場合のみです。

先頭に戻る

正規表現を使用

オブジェクトの認識に使用するテキストを記述する際は,正規表現を使用できます。この方法では,正確なテキストを指定する代わりに,オブジェクトのテキストが一致すべきパターンを指定できます。

これは,ショッピング・カート内の合計金額や在庫内のアイテム数など,アプリケーション内の動的テキストを識別するのに役立ちます。

正規表現を使用するには,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(出現をカウントする方向):FromLeftFromRightFromTopFromBottom

たとえば,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オブジェクト検出]で変更できます。

注: 検証を追加すると,テスト実行の速度に影響します。

特定のテスト実行についてオブジェクト認識の検証を有効または無効にするには,AIRunSettings.VerifyIdentification オブジェクトを使用します。『UFT One Object Model Reference for GUI Testing』の「AIRunSettings Object」を参照してください。

先頭に戻る

自動スクロール

テストの実行時にオブジェクトがアプリケーションに表示されていないが,アプリケーション画面のスクロールが可能なときは,UFT One がオブジェクトを検出するために自動的にスクロールします。記述と一致するオブジェクトが識別されると,それ以上スクロールは実行されません。後続のアプリケーション・ページまたは画面に表示されている同じオブジェクトは見つかりません。

UFT One は,チェックポイントの実行時に,アプリケーションに表示されていないオブジェクトが必要になった場合も同様にスクロールします。チェックポイントは,次のページまたは画面までスクロールしてもオブジェクトが見つからない場合にのみ成功となります。

標準設定では,UFT One は 2 回下にスクロールします。必要に応じて,スクロールの方向と実行するスクロールの最大数をカスタマイズするか,スクロールを無効にすることができます。

注: テスト内にステップを追加して,アプリケーション内でアクティブにスクロールすることもできます。詳細については,『UFT One Object Model Reference for GUI Testing』のAIUtil.Scroll および AIUtil.ScrollOnObject を参照してください。

先頭に戻る

ローカル AI オブジェクト・モデルの更新

UFT One の AI エンジンは,AI オブジェクト・モデルを使用して AI ベース・テストのアクティビティを促進します。AI オブジェクト・モデルは,UFT One の AI オブジェクト検出をインストールして有効にしたときに,自動的にインストールされて,アクティブ化されます。
新しい AI オブジェクト・モデルは,AppDelivery Marketplace からオンラインで定期的に入手可能です。新しいモデルでは,コントロールがより正確にサポートされたり,コントロールの識別が追加されたりします。新しいモデルが利用可能になったら,次の UFT One アップグレードを待たずに,ローカルで使用している AI オブジェクト・モデルを更新できます。

必要に応じて,更新前に使用していたモデルに戻すことができます。

注: リモート AI オブジェクト検出サービスを使用している場合,ローカル AI オブジェクト・モデルを更新しても AI によるオブジェクトの認識には影響しません。

使用しているモデルよりも新しいモデルが利用可能な場合は,UFT One を開くとデスクトップの右下に通知が表示されます。ローカル AI オブジェクト・モデルは,UFT One ユーザ・インタフェースまたはコマンド・ラインから更新できます。

AI オブジェクト・モデルを UFT One ユーザ・インタフェースから更新するには

  1. 前提条件[ツール]>[オプション]>[GUI テスト]>[AIオブジェクト検出]>[モデル]で,マーケットプレイスの接続情報を設定します。

    [AI オブジェクト検出]表示枠([オプション]ダイアログ・ボックス>[GUI テスト]タブ)を参照してください。

  2. ツールバーで [AI]>[AI オブジェクトモデルの更新]を選択します。

    開いた[AI オブジェクトモデルの更新]ダイアログ・ボックスで,使用しているモデルと,ダウンロードできる利用可能なモデルを確認できます。Web とモバイルの両方のコンテキストで使用可能なアクティブ最新のモデルには,そのことを示すラベルが付けられています。[ベースモデル]ラベルは,使用している UFT One バージョンの標準設定で提供されるモデル・バージョンを示します。

  3. AI オブジェクト・モデルのバージョンを選択し,[ダウンロード]をクリックします。

    モデルの[ステータス]カラムに,ダウンロードの進行状況が表示されます。

    ダウンロードは時間がかかる場合があります。ダイアログ・ボックスを閉じて,作業を続けることができます。ダウンロードが完了すると,デスクトップの右下隅に通知が表示されます。

  4. モデルのアクティブ化]をクリックします。

    アクティブ化した新しいモデルは,UFT One の AI エンジンによって即座に使用されます。次回,[AIオブジェクトモデルの更新]ダイアログ・ボックスを開くと,このモデルにはアクティブというラベルが付けられています。

コマンドライン・インタフェースから AI オブジェクト・モデルを更新するには

アクティブな AI オブジェクト・モデルをコマンド・ラインから更新するには,ModelInstallApp.exe コマンドを実行します。これは,UFT One マシン上にネットワーク接続がないユーザ向けに設計されています。モデルを 1 台のコンピュータにダウンロードしてから,すべての UFT One コンピュータを更新します。

準備

  • マーケットプレイスから ModelInstallApp.zip ファイルをダウンロードし,その中身を展開します。

  • マーケットプレイスで,アクティブ化するモデルを見つけます。モデルと設定の zip ファイルをローカル・フォルダにダウンロードします。

構文

コマンド・ライン・ツールで次の構文を実行します。

ModelInstallApp.exe --model <Model zip file> --config <config zip file>

その他の参照項目: