TOP>製品/サービス>カテゴリから探す>品質強化対策>HPE Unified Functional Testing>事例>特定の処理を呼び出すメソッドのご紹介

HPE Unified Functional Testing

特定の処理を呼び出すメソッドのご紹介

QuickTest Professional(以下、QTP)でGUI操作を自動化させる際に、「特定の処理を起動したい」というご要望をよく頂きます。QTPではAction用、そして外部実行ファイル用の起動メソッドがそれぞれ実装されておりますので、活用例も併せてご紹介します。

【ご要望その1】
 入力データによって実行するActionを変更したい

QTPでは、スクリプトから別スクリプト内Actionを呼び出す操作は、GUIからの操作のみ対応してました。そのため、If文や入力させたデータなどをトリガーにそれぞれ別Actionを呼び出すことはできませんでした。

例えば、アプリケーションに社員Aのデータを入力した場合、次のステップはActionAを呼び出し実行し、社員Bのデータを入力した場合、次のステップはActionBを呼び出し実行場合などです。

実装方法

QTP10.0から、エキスパートビューに以下メソッドを記述いただくことで、明示的にActionを呼び出すことが可能となりました。

LoadAndRunActionメソッド

LoadAndRunAction("呼び出し先スクリプトパス", "アクション名", "反復回数")

例)
LoadAndRunAction "C:\MyTest", "Action1", OneIteration

上記例では、C:\MyTestスクリプト内のAction1を、1回だけ反復実行するように呼び出しております。

LoadAndRunActionとIf文を組み合わせることで、以下のような条件分岐も可能です。

If Dialog("ログイン").WinEdit("ユーザ名").GetROPropaty("text") = "社員A" then

    LoadAndRunAction "C:\ユーザ登録スクリプト", "ActionA", allIterations

 else

    LoadAndRunAction "C:\ユーザ登録スクリプト", "ActionB", allIterations

End If

ユーザ名のテキストの値をGetROPropertyメソッドで抽出し、条件分岐に当てはめます。社員Aであれば、ActionAを呼び出しそれ以外のデータであればActionBを呼び出しています。簡単な例となりますが、様々な形で応用いただき、データの有無などで実行Actionを変更することができます。外部のVBScriptでも実行可能ですので回復シナリオや関数としてvbs化し、関数ライブラリとしてご利用いただけます。

【ご要望その2】
QTPから、バッチファイルを実行したい。
また、バッチファイル実行中はQTPの実行を待機させておきたい。

実装方法

QTPでは、実行先のバッチやEXEファイルに値を渡す引数は実装されておりますが、戻り値を受け取るインターフェースが実装されておりません。ちなみに、バッチやEXEファイルを実行するメソッドは、以下の書式となります。

<SystemUtil.Runメソッドについて>

SystemUtil.Run 実行先パス, [パラメータ], [dir], [op], [mode]

 第一引数:必須です。実行するファイルの名前を指定します。
 第二引数:省略可能です。実行先のファイルに指定パラメータを渡します。
 第三引数:省略可能です。アプリケーション、またはファイルのデフォルト
   ディレクトリを指定します。
 第四引数:省略可能です。実行アクションを指定します。空白("")の場合は、
   "open"操作が実行されます。
 第五引数:省略可能です。アプリケーションの表示方法(全画面など)

例)
SystemUtil.Run "iexplore", "http://www.google.co.jp/", "C:\Program
Files\Internet Explorer", open, 3

上記のとおり、実行先ファイルに渡すことは可能ですが、結果を受け取ることができません。

そのため、QTPからバッチの実行方法をwscriptからの実行に変更する必要があります。実行ファイルの戻り値を受け取りたい場合、以下のように実装して下さい。

'QTPエキスパートビューに記述します
Public Function commandexec(exefpath)
Dim objShell, objExec
Set objShell = CreateObject("WScript.Shell")
Set objExec = objShell.Exec(exefpath)
Do While objExec.Status = 0
wait 0.5
Loop
commandexec = objExec.ExitCode
End Function

commandexec("バッチファイルのパス /E 3 254")

実装の前提として、実行先バッチファイルにExitなどで実行ステータスを戻すように組み込んでください。

上記の例では関数commandexecにexeファイルのパスと引数を全て渡しておりますが、分けても問題ありません。また、こちらも上記関数をvbs化し関数ライブラリとして登録してからご活用いただくこともできます。

逆に、QTP独自の関数を使用して、実行ファイルを実行し、戻り値を受け取るインタフェースは実装されておりません。wscriptにてご利用頂く方法をお勧めします。

QTPは、VBScriptベースのインターフェースを備えていますので、カスタマイズいただくことで自動化の範囲が広がります。カスタマイズにより、標準機能では対応が難しいテストケースを実装できる場合もございますので、ぜひ一度カスタマイズに挑戦してみて下さい。


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

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

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

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

ページの先頭へ戻る