DevOpsポータルサイト

開発から運用まで、IT部門のお役に立つ情報をお届けするサイトです

テスト高度化

アプリケーションとOpenText Functional Testing(旧UFT One)の実行速度を同期する方法

公開日:
更新日:
テスト高度化
#OpenText Functional Testing

アプリと旧UFT Oneスクリプト実行の同期化

OpenText Functional Testing(旧UFT One)を活用いただいているお客様で、OpenText Functional Testing(旧UFT One)でテスト実施中に、いつもは正常に実行できているのに、時々同製品の実行エラー「オブジェクトが見つかりません」が出てしまうということはありませんか?

原因はいくつか考えられますが、今回は「同期」の問題を取り上げます。

OpenText Functional Testing(旧UFT One)では、標準設定で各ステップの実行において20秒間のタイムアウトが設定されています。20秒経過しても実行対象オブジェクトが見つからない場合は、実行エラーを表示します。

例えば、OpenText Functional Testing(旧UFT One)実行時に、偶然サーバ側で何か別処理を実施していたために、対象のアプリケーション動作が重く、20秒経過しても実行対象のオブジェクトが画面上に表示されていない場合、実行エラーを返します(下図を参照ください)。

OpenText Functional Testing(旧UFT One)では、そのような同期処理に対する問題について、様々な機能でハンドリングさせることが可能です。

OpenText Functional Testing(旧UFT One)の同期処理ハンドリング方法

主に3つの方法で同期処理のハンドリングが可能です。

1.Wait関数を利用して、ある特定のステップに待ち時間を発生させる

2.同期化ポイントを挿入して、オブジェクトがある特定の状態になってから、次の処理を実施する

3.オブジェクト同期化のタイムアウトの設定値を変更する

1. Wait関数を利用して、ある特定のステップに待ち時間を発生させる

OpenText Functional Testing(旧UFT One)のスクリプトは、VBScriptで記述されています。OpenText Functional Testing(旧UFT One)のスクリプトにVBScriptのWait関数を記述することで、特定の処理後に一定時間待ち時間を発生させることが可能です。

設定方法

  • OpenText Functional Testing(旧UFT One)の「キーワードビュー」から「エキスパートビュー」に切り替えます。

  • レスポンスの遅い処理の後に、以下の関数を挿入します。ここでは、5秒待機させる関数を記述します。数値は任意の値を記述してください。

Wait 5

Wait関数のまとめ

  • メリット:シンプルで使いやすい
    レスポンスが遅い処理が特定されている場合、エキスパートビューに切り替え、Waitと待たせたい秒数を書くだけですので、VBScriptに慣れていない方でも、簡単に挿入することが出来ます。

  • デメリット:柔軟性がない
    レスポンスが早い場合でも、必ずWait関数で待たせた秒数待ち続けるため、柔軟性に欠ける部分があります。

2.同期化ポイントを挿入し、オブジェクトが特定の状態になったら次の処理を実施する

同期化ポイントとは、アプリケーションとの同期を取るためのOpenText Functional Testing(旧UFT One)の標準機能です。
オブジェクトがある特定の状態になったら、次の操作へ移行するなどの設定が可能です。

(例)フライトアプリケーションのチケット発注後に表示される「挿入を完了しました...」という文字列が表示されたら、アプリケーションをログアウトする処理を実施したい(下図を参照ください)。

設定方法

上記の例を用いて、設定方法をご紹介します。

1.スクリプト記録中に、OpenText Functional Testing(旧UFT One)メニューバーから「挿入」>「同期化ポイント」を挿入します。

2.マウスが指差しアイコンに切り替わりますので、トリガーとなるオブジェクト上でクリックします。対象のオブジェクト画面が表示されますので、「OK」ボタンを押します。

3.トリガーとなるオブジェクトのプロパティ情報を指定する画面が表示されますので、以下の情報を入力し、設定後「OK」ボタンをクリックし、同期化ポイントをスクリプトに挿入します。

プロパティ名:Text
プロパティ値:挿入を完了しました...
タイムアウト:10000(ミリ秒)

同期化ポイントのまとめ

同期化ポイントでは、1.のWait関数とは異なり、オブジェクトが指定した状態になったらすぐに次の処理へ進むため、Wait関数と比較して、柔軟な対応が可能です。

3.オブジェクト同期化のタイムアウトの設定値を変更する

OpenText Functional Testing(旧UFT One)のオブジェクトタイムアウト値の設定を変更することで、スクリプト全体の待ち時間を変更することが出来ます。

設定手順

1.OpenText Functional Testing(旧UFT One)メニューバーから「ファイル」>「設定」を入力します。

2.「テスト設定」画面が表示されます、「実行」タブをクリックします。

3.「オブジェクトの同期化タイムアウト」項目の値を変更します。設定後、「OK」ボタンをクリックします。 (例)20⇒30(秒)

また、オブジェクトの同期化タイムアウト値をスクリプト上に記述することも可能です。以下にサンプルスクリプトをご紹介します。

'現在のオブジェクト同期化タイムアウトの設定を保存
currentsetting = Setting("DefaultTimeout")
'オブジェクト同期化タイムアウトを"0"にセット
Setting("DefaultTimeout")=0

Window("フライト予約").WinButton("Button").Click

'オブジェクト同期化タイムアウトを初期値に戻す
Setting("DefaultTimeout")=currentsetting

オブジェクトの同期化タイムアウトのまとめ

  • スクリプト全体のオブジェクトの同期化タイムアウト値が変更できるため、全体的に処理が遅い場合は、タイムアウト値を一括して変更する方法が簡単です。

  • オブジェクトの同期化タイムアウト値は、端末毎に設定する必要があるため、例えば、OpenText Functional Testing(旧UFT One)スクリプトを別端末に移行した場合、一から設定をし直す必要がありますが、タイムアウト値をスクリプト上に記述することで、各端末でのタイムアウト値の設定変更が不要で、すぐにスクリプトを実行できるため、便利です。