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 codeAIUtil("combobox", "Cell Phone").Type "Pixel 2"
Dim mySendKeys
Set mySendKeys = CreateObject("WScript.shell")
'Enter キーを送信
mySendKeys.SendKeys("~")Windows Script Host の SendKeys メソッドの詳細については、「Microsoft VBScript Reference」を参照してください。
-
デバイス再生の使用
Copy codeAIUtil("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 codeAIUtil("combobox", "Cell Phone").Type "Pixel 2"
wait 5
Device("Device").Enterkeys typeKey, "Enter"ヒント: モバイル・デバイスのキーボード入力の処理が遅い場合は、アプリケーションにキーを送信する前に待機ステップを追加します。
詳細については、EnterKeys Method of Device Object を参照してください。
例 2 デスクトップ・ブラウザで、書き込む前にテキスト・ボックスをクリアする
デバイス再生の使用
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 ベースのステップの実行結果の画面キャプチャには、フリーズされたコンテキストが反映されます。アプリケーション内で発生した変更はキャプチャされません。
アプリケーションで発生した変更をキャプチャするには、次のいずれかを実行します。
-
コンテキストのフリーズを解除します。
-
Browser や Device などの最上位オブジェクトに CaptureBitmap ステップを追加します。次に、Reporter.ReportHtmlEvent を使用して、結果にビットマップを追加します。
-
各ステップの結果に画面キャプチャを保存するように設定した場合は、Browser や Device などの最上位オブジェクトに Wait または Sync ステップを追加します。
-
ムービーを含めるように実行結果を設定します。
AIUtil("search").Search が検索を実行しない場合の対処法
一部のアプリケーションでは、検索アイコンをクリックした後に検索ボックスが表示されます。このような場合、AIUtil("search").Search はアプリケーションで検索操作を実行できない場合があります。
次の例に示すように、複数のステップを使用して検索を実行できます。
シナリオ 1
AIUtil("search").Search の後に検索ボックスにテキストが入力されない
推奨される解決策
AIUtil("search").Click
'検索ボックスが表示されるまでしばらく待機
wait 2
AIUtil("search").Search "telekom"
シナリオ 2
検索アイコンをクリックすると、検索ボックスがフォーカスされなくなり、2 つの検索アイコンが表示される
推奨される解決策
AIUtil("search").Click
'検索ボックスが表示されるまでしばらく待機
wait 2
AIUtil("search",micNoText,micFromBottom,1).Search "telekom"
シナリオ 3
検索アイコンをクリックすると、検索アイコンが表示されなくなり、検索ボックスがフォーカスされなくなる
推奨される解決策
AIUtil("search").Click
'検索ボックスが表示されるまでしばらく待機
wait 2
AIUtil("input","search").Type "telekom"
'Enter キーを押す
Dim myDeviceReplay
Set myDeviceReplay = CreateObject("Mercury.DeviceReplay")
myDeviceReplay.PressKey 28
スクロール可能な表示枠でのオブジェクトの検索
次の例で、AIUtil.Scroll メソッドを使用して、アプリケーションのスクロール可能な表示枠でオブジェクトを検索する方法を示します。
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.Scroll と AIUtil.ScrollOnObject が SAP GUI アプリケーションで水平スクロールを提供しない場合は、AIUtil.Click と AIUtil.MultiClick を使用して水平スクロールを実行できます。
' 右の三角形をクリックして右スクロールを実行します。
' 複数の right_triangle がある場合は、相対的な位置によってコントロールを識別できます。
Set ObjRightTriangle = AIUtil("right_triangle")
'右の三角形を 4 回クリックします。
ObjRightTriangle.MultiClick 4
' 左の三角形をクリックして左スクロールを実行します。
Set ObjLeftTriangle = AIUtil("left_triangle")
'左の三角形をクリックします。
ObjLeftTriangle.Click
その他の参照項目:

