TOP>製品/サービス>カテゴリから探す>品質強化対策>HPE Unified Functional Testing>事例>アプリケーションとQuickTest Professionalスクリプト実行の同期化

HPE Unified Functional Testing

アプリケーションとQuickTest Professionalスクリプト実行の同期化

QuickTest Professional(以下QTPと略)を活用いただいているお客様で、QTPでテスト実施中に、いつもは正常に実行できているのに、時々QTPの実行エラー「オブジェクトが見つかりません」が出てしまうということはありませんか?

原因はいくつか考えられますが、今回は「同期」の問題を取り上げます。
QTPでは、標準設定で各ステップの実行において20秒間のタイムアウトが設定されています。20秒経過しても実行対象オブジェクトが見つからない場合は、実行エラーを表示します。

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

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

QTP実行エラー画面
(クリックで拡大します)


QTPの同期処理ハンドリング方法

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


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

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

設定方法

  •  QTPの「キーワードビュー」から「エキスパートビュー」に切り替えます。
  •  レスポンスの遅い処理の後に、以下の関数を挿入します。
     ここでは、5秒待機させる関数を記述します。数値は任意の値を記述してください。

Wait 5


Wait関数のまとめ

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

wait関数を使用した同期化の方法
(クリックで拡大します)


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

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

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

設定方法

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

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


同期化ポイントのまとめ

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

オブジェクトの状態で
同期化ポイントを設定
(クリックで拡大します)

同期化ポイント設定画面
(クリックで拡大します)



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

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

設定手順

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

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

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

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


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

  •  スクリプト全体のオブジェクトの同期化タイムアウト値が変更できるため、全体的に処理が遅い場合は、タイムアウト値を一括して変更する方法が簡単です。
  •  オブジェクトの同期化タイムアウト値は、端末毎に設定する必要があるため、例えば、QTPスクリプトを別端末に移行した場合、一から設定をし直す必要がありますが、タイムアウト値をスクリプト上に記述することで、各端末でのタイムアウト値の設定変更が不要で、すぐにスクリプトを実行できるため、便利です。

QTPのタイムアウト値の設定画面
(クリックで拡大します)


  • * この記事はバージョン11.0以前を前提に書かれています。

お求めの情報は見つかりましたでしょうか。

資料請求/お問い合わせはこちら(専門の担当者が確認し、ご対応します。)

お客様の状況に合わせて詳しい情報をお届けできます。お気軽にご相談ください。

ページの先頭へ戻る