AI ベースのテストのヒントとコツ

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

このトピックでは、OpenText Functional Testing で AI ベースのテストを作成するためのヒントとコツを紹介します。

プロパティ・ベースのテスト・ステップの AI ベースのテスト・ステップへの変換方法

AI Transformation Assistant を有効にしてテストを実行し、テクノロジ・ベースのテスト・ステップを AI ベースのテスト・ステップに変換するための提案を受け取ります。既存のステップを提案された AI オブジェクト・ステップで置き換えて、より柔軟でプラットフォームに依存しないテストを作成します。

アシスタントを有効にするには、[ツール]>[オプション]>[GUI テスト]>[AI]で、[実行結果をAIオブジェクトの候補に置き換える]を選択します。

このオプションを選択すると、テストの実行結果にテストの結果は反映されません。代わりに、プロパティ・ベースのテスト・オブジェクトを AI オブジェクトで置き換えることができるステップの AI オブジェクトと操作がレポートで提案されます。

注: AI Transformation Assistant では、AITable および AICalendar オブジェクト候補は提示されません。

先頭に戻る

キーボード・コマンドの AI オブジェクトへの送信

一部のアプリケーションでは、AI オブジェクトでの入力操作には、Enter を押すなど、追加のキーボード・コマンドが必要です。このコマンドは、デスクトップ・ブラウザの場合は Windows スクリプトまたはデバイス再生を使用し、モバイル・アプリケーションの場合は Device.EnterKeys を使用してシミュレートできます。

例 1 [Cell Phone]コンボ・ボックスにモデル名を入力し、Enter キーを送信して選択をトリガする

  • デスクトップ・ブラウザの場合

    • Windows スクリプトの使用

      Copy code
      AIUtil("combobox", "Cell Phone").Type "Pixel 2"
      Dim mySendKeys
      Set mySendKeys = CreateObject("WScript.shell")
      'Enter キーを送信
      mySendKeys.SendKeys("~")       

      Windows Script Host の SendKeys メソッドの詳細については、「Microsoft VBScript Reference」を参照してください。

    • デバイス再生の使用

      Copy code
      AIUtil("combobox", "Cell Phone").Type "Pixel 2"
      wait 5    
      Dim myDeviceReplay
      Set myDeviceReplay = CreateObject("Mercury.DeviceReplay")

      myDeviceReplay.PressKey 28            'Enter キーを送信

      ' その他のキーの例: 
      ' myDeviceReplay.PressKey 14           'バックスペースを送信
      ' myDeviceReplay.PressKey 211          'Delete を送信
      ' myDeviceReplay.PressKey 15           'Tab を送信
      ' myDeviceReplay.PressKey 199          'Home を送信

      詳細については、『Object Model Reference for GUI Testing』の「DeviceReplay Object」を参照してください。

  • モバイル・アプリケーションの場合

    Device.EnterKeys の使用

    Copy code
    AIUtil("combobox", "Cell Phone").Type "Pixel 2"
    wait 5    
    Device("Device").Enterkeys typeKey, "Enter"

    ヒント: モバイル・デバイスのキーボード入力の処理が遅い場合は、アプリケーションにキーを送信する前に待機ステップを追加します。

    詳細については、EnterKeys Method of Device Object を参照してください。

例 2 デスクトップ・ブラウザで、書き込む前にテキスト・ボックスをクリアする

デバイス再生の使用

Copy code
Sub CleanInputField(Label)
      AIUtil(input,Label).Click
    Dim myDeviceReplay
    Set myDeviceReplay = CreateObject("Mercury.DeviceReplay")
      for i = 1 to 25
            myDeviceReplay.PressKey 14
      next 
end sub

先頭に戻る

テスト実行中の再検査を最小限に抑えることでパフォーマンスを改善

アプリケーションが変化しないと考えられる場合は、新しい AIUtil.Context.Freeze および UnFreeze メソッドを使用して、OpenText Functional Testing がステップ間でアプリケーションを再検査しないようにします。

先頭に戻る

コンテキスト・フリーズ中の実行結果画面キャプチャ

AIUtil.Context.Freeze ステップの後、AI ベースのステップの実行結果の画面キャプチャには、フリーズされたコンテキストが反映されます。アプリケーション内で発生した変更はキャプチャされません。

アプリケーションで発生した変更をキャプチャするには、次のいずれかを実行します。 

  • コンテキストのフリーズを解除します。

  • BrowserDevice などの最上位オブジェクトに CaptureBitmap ステップを追加します。次に、Reporter.ReportHtmlEvent を使用して、結果にビットマップを追加します。

  • 各ステップの結果に画面キャプチャを保存するように設定した場合は、BrowserDevice などの最上位オブジェクトに Wait または Sync ステップを追加します。

  • ムービーを含めるように実行結果を設定します。

先頭に戻る

AIUtil("search").Search が検索を実行しない場合の対処法

一部のアプリケーションでは、検索アイコンをクリックした後に検索ボックスが表示されます。このような場合、AIUtil("search").Search はアプリケーションで検索操作を実行できない場合があります。

次の例に示すように、複数のステップを使用して検索を実行できます。

シナリオ 1

AIUtil("search").Search の後に検索ボックスにテキストが入力されない

推奨される解決策

Copy code
AIUtil("search").Click
'検索ボックスが表示されるまでしばらく待機
wait 2
AIUtil("search").Search "telekom"

シナリオ 2

検索アイコンをクリックすると、検索ボックスがフォーカスされなくなり、2 つの検索アイコンが表示される

推奨される解決策

Copy code
AIUtil("search").Click
'検索ボックスが表示されるまでしばらく待機
wait 2
AIUtil("search",micNoText,micFromBottom,1).Search "telekom"

シナリオ 3

検索アイコンをクリックすると、検索アイコンが表示されなくなり、検索ボックスがフォーカスされなくなる

推奨される解決策

Copy code
AIUtil("search").Click
'検索ボックスが表示されるまでしばらく待機
wait 2
AIUtil("input","search").Type "telekom"

'Enter キーを押す
Dim myDeviceReplay
Set myDeviceReplay = CreateObject("Mercury.DeviceReplay")
myDeviceReplay.PressKey 28

先頭に戻る

スクロール可能な表示枠でのオブジェクトの検索

次の例で、AIUtil.Scroll メソッドを使用して、アプリケーションのスクロール可能な表示枠でオブジェクトを検索する方法を示します。

Copy code
Set ObjBrowser= Browser("creationtime:=1")
ObjBrowser.Maximize
AIUtil.SetContext ObjBrowser
'---------------------------------------------------------------------------------------
ObjBrowser.Navigate https://www.youtube.com/
ObjBrowser.Sync
'wait(2)
'---------------------------------------------------------------------------------------
print ClickAndScrollTo ( AIUtil("home"), AIUtil.FindTextBlock("Report history"))
'---------------------------------------------------------------------------------------
ObjBrowser.Navigate https://usa.banggood.com
ObjBrowser.Sync
'wait(2)
-----------------------------------------------------------------------------------------
print ClickAndScrollTo (AIUtil("down_triangle", micAnyText, micFromTop, 5), AIUtil.FindTextBlock("Home Appliances", micFromBottom, 1))
'--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Function ClickAndScrollTo (ObjStart, ObjTarget)
    ClickAndScrollTo=false
    AIUtil.RunSettings.AutoScroll.Disable
    ObjStart.Highlight   
    ObjStart.Click
    For i = 1 To 4
        if ObjTarget.Exist(0) then
        ObjTarget.Highlight
        ObjTarget.hover
        ClickAndScrollTo=true
               exit function 
        end if
'ScrollUsingPointerPosition([in] micAIScrollDirection direction, [in] double numberOfWheelTicks);
'AIUtil.Hover または別のメソッド (DeviceReplay など) を使用して、スクロール・オブジェクト上にマウスを移動 
        AIUtil.Scroll "down", 1
    Next
End Function

先頭に戻る

スペルミスのあるテキストでの OCR の失敗を防ぐ

OCR では、テストの実行時に、テキストの下に波線などのスペルミスの表示があるテキストを識別できません。

次の解決策のいずれかを使用します。

  • ブラウザまたはアプリケーションでスペルチェックを非アクティブにします。

  • スペルミスがあるテキストが表示されているフィールドから別の場所にフォーカスを移動します。これを行うには、テキストを取得するステップの前に、テキスト・フィールドの外側のどこかをクリックするステップをテストに追加します。

先頭に戻る

SAP GUI アプリケーションでの水平スクロール

AIUtil.ScrollAIUtil.ScrollOnObject が SAP GUI アプリケーションで水平スクロールを提供しない場合は、AIUtil.ClickAIUtil.MultiClick を使用して水平スクロールを実行できます。

Copy code
' 右の三角形をクリックして右スクロールを実行します。
' 複数の right_triangle がある場合は、相対的な位置によってコントロールを識別できます。
Set ObjRightTriangle = AIUtil("right_triangle")
'右の三角形を 4 回クリックします。
ObjRightTriangle.MultiClick 4
' 左の三角形をクリックして左スクロールを実行します。
Set ObjLeftTriangle = AIUtil("left_triangle")
'左の三角形をクリックします。
ObjLeftTriangle.Click

先頭に戻る

その他の参照項目: