UFT One
アプリケーションとUFT Oneスクリプト実行の同期化
UFT Oneを活用いただいているお客様で、UFT Oneでテスト実施中に、いつもは正常に実行できているのに、時々UFT Oneの実行エラー「オブジェクトが見つかりません」が出てしまうということはありませんか?
原因はいくつか考えられますが、今回は「同期」の問題を取り上げます。
UFT Oneでは、標準設定で各ステップの実行において20秒間のタイムアウトが設定されています。20秒経過しても実行対象オブジェクトが見つからない場合は、実行エラーを表示します。
例えば、UFT One実行時に、偶然サーバ側で何か別処理を実施していたために、対象のアプリケーション動作が重く、20秒経過しても実行対象のオブジェクトが画面上に表示されていない場合、実行エラーを返します(下図を参照ください)。
UFT Oneでは、そのような同期処理に対する問題について、様々な機能でハンドリングさせることが可能です。
UFT Oneの同期処理ハンドリング方法
主に3つの方法で同期処理のハンドリングが可能です。
- 1.Wait関数を利用して、ある特定のステップに待ち時間を発生させる
- 2.同期化ポイントを挿入して、オブジェクトがある特定の状態になってから、次の処理を実施する
- 3.オブジェクト同期化のタイムアウトの設定値を変更する
1. Wait関数を利用して、ある特定のステップに待ち時間を発生させる
UFT Oneのスクリプトは、VBScriptで記述されています。UFT OneのスクリプトにVBScriptのWait関数を記述することで、特定の処理後に一定時間待ち時間を発生させることが可能です。
設定方法
- UFT Oneの「キーワードビュー」から「エキスパートビュー」に切り替えます。
- レスポンスの遅い処理の後に、以下の関数を挿入します。
ここでは、5秒待機させる関数を記述します。数値は任意の値を記述してください。
Wait 5
Wait関数のまとめ
- メリット:シンプルで使いやすい
レスポンスが遅い処理が特定されている場合、エキスパートビューに切り替え、Waitと待たせたい秒数を書くだけですので、VBScriptに慣れていない方でも、簡単に挿入することが出来ます。 - デメリット:柔軟性がない
レスポンスが早い場合でも、必ずWait関数で待たせた秒数待ち続けるため、柔軟性に欠ける部分があります。
2.同期化ポイントを挿入し、オブジェクトが特定の状態になったら次の処理を実施する
同期化ポイントとは、アプリケーションとの同期を取るためのUFT Oneの標準機能です。
オブジェクトがある特定の状態になったら、次の操作へ移行するなどの設定が可能です。
(例)フライトアプリケーションのチケット発注後に表示される「挿入を完了しました...」という文字列が表示されたら、アプリケーションをログアウトする処理を実施したい(下図を参照ください)。
設定方法
上記の例を用いて、設定方法をご紹介します。
- 1.スクリプト記録中に、UFT Oneメニューバーから「挿入」>「同期化ポイント」を挿入します。
- 2.マウスが指差しアイコンに切り替わりますので、トリガーとなるオブジェクト上でクリックします。対象のオブジェクト画面が表示されますので、「OK」ボタンを押します。
- 3.トリガーとなるオブジェクトのプロパティ情報を指定する画面が表示されますので、以下の情報を入力し、設定後「OK」ボタンをクリックし、同期化ポイントをスクリプトに挿入します。
プロパティ名:Text
プロパティ値:挿入を完了しました...
タイムアウト:10000(ミリ秒)
同期化ポイントのまとめ
- 同期化ポイントでは、1.のWait関数とは異なり、オブジェクトが指定した状態になったらすぐに次の処理へ進むため、Wait関数と比較して、柔軟な対応が可能です。
3.オブジェクト同期化のタイムアウトの設定値を変更する
UFT Oneのオブジェクトタイムアウト値の設定を変更することで、スクリプト全体の待ち時間を変更することが出来ます。
設定手順
- 1.UFT Oneメニューバーから「ファイル」>「設定」を入力します。
- 2.「テスト設定」画面が表示されます、「実行」タブをクリックします。
-
3.「オブジェクトの同期化タイムアウト」項目の値を変更します。設定後、「OK」ボタンをクリックします。
(例)20⇒30(秒)
また、オブジェクトの同期化タイムアウト値をスクリプト上に記述することも可能です。以下にサンプルスクリプトをご紹介します。
'現在のオブジェクト同期化タイムアウトの設定を保存
currentsetting = Setting("DefaultTimeout")
'オブジェクト同期化タイムアウトを"0"にセット
Setting("DefaultTimeout")=0
Window("フライト予約").WinButton("Button").Click
'オブジェクト同期化タイムアウトを初期値に戻す
Setting("DefaultTimeout")=currentsetting
オブジェクトの同期化タイムアウトのまとめ
- スクリプト全体のオブジェクトの同期化タイムアウト値が変更できるため、全体的に処理が遅い場合は、タイムアウト値を一括して変更する方法が簡単です。
- オブジェクトの同期化タイムアウト値は、端末毎に設定する必要があるため、例えば、UFT Oneスクリプトを別端末に移行した場合、一から設定をし直す必要がありますが、タイムアウト値をスクリプト上に記述することで、各端末でのタイムアウト値の設定変更が不要で、すぐにスクリプトを実行できるため、便利です。
- 2020.8.7アシスト提供の「UFT One」で、スミセイ情報システムのテスト時間削減と品質向上を実現
- 2020.6.17アシスト、次世代型ITサービスマネジメント変革ソリューション「ENISHI」を発表
- 2020.1.24アシスト提供の「Unified Functional Testing」と「Operations Orchestration」を東京ガスiネットが採用
- 2019.10.10アシスト、RPAツール「Unified Functional Testing」を採用し、導入から半年で業務時間を370時間削減
- 2019.9.24アシスト、ビッグデータ及びシステム品質管理ソリューションの販売活動において、マイクロフォーカスエンタープライズ株式会社最高のパートナープログラム「Platinum Partner」を受賞