AI ベースのテスト・オブジェクトの認識の改善

Mobile,Web,Windows ベースの SAP GUI のテスト

このトピックでは,OpenText Functional Testing の AI オブジェクト検出がアプリケーション内のオブジェクトを一意に識別できるようにするために使用するいくつかの要素について説明します。

オブジェクトへのテキストの関連付け

オブジェクトに関連付けられたテキストは,オブジェクトを一意に識別するのに役立ちます。例:

AIUtil("input", "USER NAME").Type "admin"

このステップでは USER NAME というテキストを使用してオブジェクトを記述することで,正しいフィールドに確実に入力できるようにしています。

アプリケーション内のオブジェクトを検出する際に,フィールドの周囲に複数のラベルがある場合,オブジェクトの認識に最も理にかなっていると考えられるラベルが使用されます。

ただし,オブジェクトの記述に別のラベルを使用する場合でも,オブジェクトは認識されます。

Example: アプリケーション内のオブジェクトを検出する際に,ボタンはボタン上のテキストに関連付けられますが,フィールドは内容ではなくラベルに関連付けられます。

フィールドに複数のラベルがあり,検出で 1 つが選択された場合でも,フィールドの記述に別のラベルを使用するテスト・ステップは正常に実行されます。

場合によっては,互いに近くにある複数のテキスト文字列が 1 つのテキスト文字列に結合され,1 つのオブジェクトが認識されます。

結合された文字列を編集して,オブジェクトの認識に使用する文字列を 1 つだけ残すことができます。文字列の一部ではなく,文字列全体を削除してください。

Example:  

以下のテキスト・ボックスの場合,PasswordForgot? が 1 つの文字列に結合されてオブジェクトの認識が行われ,テスト・スクリプトに次のステップが追加されます。

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

スクリプトから文字列全体を削除し,テストを失敗させずにコードを次のように変更できます。

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

先頭に戻る

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

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

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

OpenText Functional Testing のテキスト認識設定の使用

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

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

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

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

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

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

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

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

注:  

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

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

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

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

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

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

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

Web テスト用のハイブリッド・テキスト認識の有効化

AI OCR の結果と Web ページ要素から直接取得したテキストを組み合わせることで,Web アプリケーション内の AI オブジェクトのテキスト認識を向上させます。

ハイブリッド・テキスト認識は,テーブルのセルやカレンダ内のテキストを認識する場合や,テキストに色が付いていたり特殊な記号が含まれていたりする場合に特に役立ちます。

先頭に戻る

正規表現を使用

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

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

正規表現を使用するには,AIUtil.AIObject または AIUtil.FindTextBlock プロパティの AIText パラメータで AIRegex オブジェクトを使用します。

OpenText Functional Testing でサポートされている正規表現の詳細については,正規表現の文字と使用方法を参照してください。

正規表現が正しいテキストを識別しているかどうかを確認するには,[ツール]>[正規表現エバリュエータ]を使用します。詳細については,正規表現エバリュエータを参照してください。

注: AI ベースのオブジェクトの認識は Python の正規表現を使用しますが,OpenText Functional Testing の他の機能は 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 の文字列が返されます。

先頭に戻る

相対的な位置でのオブジェクトの識別

オブジェクトに対してテスト・ステップを実行するには,オブジェクトを一意に識別する必要があります。複数のオブジェクトがオブジェクトの記述と一致する場合は,オブジェクトの位置を追加して一意に識別することができます。位置は,アプリケーション内の類似オブジェクトに関連して序数にすることも,アンカと見なされる別の 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

認識されるオブジェクトは,記述に一致し,アンカに最も近く,指定された方向に並んでいる 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 オブジェクト認識でサポートされていないオブジェクト・タイプがアプリケーションに含まれている場合は,オブジェクトの識別に使用できるオブジェクトの画像を提供できます。このオブジェクト・タイプに使用するクラス名をカスタム・クラスとして登録することによって指定します。

AIUtil.RegisterCustomClass "door", "door.PNG"
AIUtil("door").Click 

詳細については,Object Model Referenceの「AIUtil.RegisterCustomClass method」を参照してください。

カスタム・クラスを登録すると,AIUtil ステップでそれをオブジェクト・タイプとして使用できます。

  • AIUtil("<Myclass>")
  • AIUtil("<Myclass>", micAnyText, micFromTop, 1)
  • AIUtil("<Myclass>", micAnyText, micWithAnchorOnLeft, AIUtil("Profile"))

これを使用してアンカ・オブジェクトを記述することもできます。アンカ・オブジェクトは,近くにある他のオブジェクトを識別するために使用されます。

AIUtil("profile", micAnyText, micWithAnchorOnLeft, AIUtil("<Myclass>") )

注:  

  • 登録済みクラスをアンカとして使用して,近接性によって別の登録済みクラスを識別することはできません。
  • オブジェクトを記述するために使用する画像は,オブジェクトと正確に一致している必要があります。

先頭に戻る

オブジェクトの認識の検証

テスト実行の成功率を上げるため,操作を実行する前にオブジェクトの認識を検証します。これが役立つのは,たとえば,オブジェクトが広告で覆われたり,別の位置にスクロールされたりするときのように,アプリケーション内のオブジェクトの位置が実行時に変化する場合です。検証でオブジェクトが移動したことが検出された場合,操作はオブジェクトの新たな位置に対して実行されます。

検証で識別したオブジェクトを特定できない場合,操作は最初に識別したオブジェクトの位置で実行されます。実行結果レポートに警告メッセージが表示されます。

オブジェクト認識の検証は,標準設定で,非モバイル・コンテキストでは有効になっており,モバイル・コンテキストでは無効になっています。コンテキストの設定は,[ツール]>[オプション]>[GUI テスト]>[AIオブジェクト検出]で変更できます。

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

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

先頭に戻る

自動スクロール

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

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

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

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

先頭に戻る

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

準備

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

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

構文

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

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

その他の参照項目: