parameterization qtp explained with examples qtp tutorial 19
=> QTPトレーニングチュートリアルシリーズについては、ここをクリックしてください
学習内容:
QTPパラメータ化とは何ですか?
アプリケーションが重複データレコードを受け入れない場合があります。この場合、固定の入力データセットを使用して同じテストスクリプトを実行すると、データの重複が原因でアプリケーションがエラーをスローする可能性があります。この問題を回避するために、QTPは、テストスクリプトへのさまざまなテスト入力を受け入れる方法を提供します。
外部パラメータを介して異なる入力値を提供するこのプロセスは、パラメータ化と呼ばれます
QTPのパラメータ化のタイプ
変数値は次のようになり、パラメータータイプは次のようになります。
- データテーブルパラメータ
- テスト/アクションパラメータ
- 環境変数パラメータ
- 乱数パラメーター
このQTPチュートリアルでは、主にDatatableを使用したパラメーター化に焦点を当てます。次のチュートリアルでは、他のタイプのパラメーター化メソッドについて説明します。
QTPでのパラメータ化
gmail.comで数人のユーザーのログイン値をチェックするプログラムを作成しようとしているとします。以下は、1人のユーザーに対して持っているコードですが、同じユーザーが毎回異なる値を取るようにしたい場合です。これはどうやるんですか?
1人のユーザーがGmailにログインするためのコード:
SystemUtil.Run 'iexplore.exe', 'http://www.gmail.com' Browser('Gmail: Email from Google').page('Gmail: Email from Google').Sync Browser('Gmail: Email from Google').Page('Gmail: Email from Google').WebEdit('Email').Set 'swatiseela' Browser('Gmail: Email from Google').Page('Gmail: Email from Google').WebEdit('Passwd').SetSecure 'sfgs686898' Browser('Gmail: Email from Google').Page('Gmail: Email from Google').WebButton('Sign in').Click Browser('Gmail: Email from Google').Page('Gmail - Inbox').Link('Sign out').Click
次に、キーワードビューに移動し、電子メールIDとパスワードセットステートメントの値列をクリックします。
c c ++面接の質問
パラメータ化しようとしたときに表示される一般的な画面:
ご覧のとおり、値は定数、この場合は「swatiseela」、ログインIDのいずれかです。
または、パラメータ化オプションを選択すると、画面の対応するフィールドがアクティブになります。
この画面から、選択した値をデータテーブルの値、環境変数、または乱数のいずれかでパラメータ化することを選択できます。最も頻繁に使用されるソースはデータテーブルであるため、最初にそれについて説明します。
これらとは別に、特定のアクションの入力値と出力値を値のパラメーターとして使用できます。それについても後ほど説明します。
例を挙げてDatatableを使用したQTPのパラメータ化
Excelを使用したQTPでのパラメーター化
パラメータ値ONを確認したところ、名前の後にあるDatatableフィールドに場所があります。
名前 データを取得する必要があるデータテーブル内の対応する列名。デフォルトでは、QTPは名前を提案します。提案どおりに保持するか、必要に応じて変更するかを選択できます。
グローバル シート: このデータシートは、テストのすべてのアクションで使用できます。
現在のアクションシートまたはローカルシート: 名前が示すように、特定のアクションで使用できるのはデータのシートです。
グローバルデータシートの複数行のデータに移動します。ここで、パスワードエンコーダツールが役に立ちます。このツールから取得したデータシートに暗号化された値を入力できます。
これは私のデータシートがどのように見えるかです:
パラメータ化後、コードは次のようになります。
SystemUtil.Run 'iexplore.exe', 'http://www.gmail.com' Browser('Gmail: Email from Google').page('Gmail: Email from Google').Sync Browser('Gmail: Email from Google').page('Gmail: Email from Google').WebEdit('Email').Set DataTable('SignInName', dtGlobalSheet) Browser('Gmail: Email from Google').page('Gmail: Email from Google').WebEdit('Passwd').SetSecure DataTable('GPassword', dtGlobalSheet) Browser('Gmail: Email from Google').page('Gmail: Email from Google').WebButton('Sign in').Click Browser('Gmail: Email from Google').Page('Gmail - Inbox').Link('Sign out').Click Browser('Gmail: Email from Google').page('Gmail: Email from Google').Sync Browser('Gmail: Email from Google').Close
上記のコードで、EメールIDとパスワードの値がデータテーブルから取得されていることがわかります。
次の画面で(すべての行で実行)オプションをオンに設定すると、このコードはグローバルシートの4行すべてのデータに対して実行されます。
念のため、上記の画面を使用してコードを実行する必要がある行数を決定したくない場合は、プログラムで実行できます。そのためには、上の画面で「1回の反復のみを実行する」オプションを選択し、次のようにコードを記述する必要があります。
for i=1 to datatable.GetRowCount SystemUtil.Run 'iexplore.exe', 'http://www.gmail.com' Browser('Gmail: Email from Google').page('Gmail: Email from Google').Sync datatable.SetCurrentRow(i) varName=datatable.value('SignInName') varPwd=datatable.Value('GPassword') Browser('Gmail: Email from Google').page('Gmail: Email from Google').WebEdit('Email').Set varName Browser('Gmail: Email from Google').page('Gmail: Email from Google').WebEdit('Passwd').SetSecure varPwd Browser('Gmail: Email from Google').page('Gmail: Email from Google').WebButton('Sign in').Click Browser('Gmail: Email from Google').Page('Gmail - Inbox').Link('Sign out').Click Browser('Gmail: Email from Google').page('Gmail: Email from Google').Sync Browser('Gmail: Email from Google').Close next
2回の反復で実行されるテストを実行すると、テスト結果画面は次のようになります。
コードを調べて、テストを正常に実行するために各行とその順序が重要である理由を理解するために、少し時間をかけたいと思います。
- 「for」ループ内でブラウザを開くのはなぜですか?
- どこにでも同期ステートメントがあるのはなぜですか?
- 「設定の記録と実行–テストが終了したらブラウザを閉じる」オプションで処理するのではなく、プログラムで最後にブラウザを閉じるのはなぜですか?
- 繰り返しますが、なぜ「for」ループ内にcloseステートメントがあるのですか?
上記のコードでは、このテストで変数を宣言したり、ステートメントをインデントしたり、コメントを提供したりしていないことに注意してください。私は声明の本質を薄めたくなかったので、これは意図的なものです。次の概念は、これらの質問に答えます。
AUTの状態:
基本的なルールは次のとおりです。各反復は、AUTが同じ状態で始まり、同じ状態で終わる必要があります。
- gmail.comページを開くステートメントがforループの外側にある場合、テストは最初の反復では正常に実行されますが、次の反復ではgmail.comページが開かれず、テストは失敗します。
- ブラウザを閉じるステートメントがテストに含まれていない場合、テストは反復ごとにブラウザを開き、データテーブルの行数に対してブラウザのインスタンスをいくつでも開くことになります。
- closeステートメントがforループの外側にあると想像してみてください。そうすると、ブラウザーが多すぎることになります。
- Syncステートメント:これにより、QTPテストは、特定のページが完全に読み込まれるまで待機してから、特定の操作の実行を開始します。
アプリケーションは常に開始時の状態に戻してください。これにより、各反復で対話するための同じインターフェースを確実に提供できます。
以下は、グローバルではなくローカルシートを使用している場合のコードです。
Browser('Gmail: Email from Google').page('Gmail: Email from Google').WebEdit('Email').Set DataTable('Name', dtLocalSheet) Browser('Gmail: Email from Google').page('Gmail: Email from Google').WebEdit('Passwd').SetSecure DataTable('Pwd', dtLocalSheet) Browser('Gmail: Email from Google').page('Gmail: Email from Google').WebButton('Sign in').Click
QTPでは、次の値をパラメータ化できます。
- チェックポイント。
- 選択したステップのオブジェクトプロパティ。
- 選択したステップに対して定義された操作引数。
- (オブジェクトプロパティ)ダイアログボックスまたは(オブジェクトリポジトリ)ウィンドウのローカルオブジェクトリポジトリに保存されているオブジェクトの1つ以上のプロパティ。
上記は、特定のテストを実行するデータの例でもあります。を使用してパラメータ化する方法を確認します その他のパラメータタイプ 次の記事で。
=> QTPトレーニングチュートリアルシリーズについては、こちらをご覧ください
推奨読書
- QTPのパラメータ化(パート2)-QTPチュートリアル#20
- QTPチュートリアル-25以上のMicroFocus Quick Test Professional(QTP)トレーニングチュートリアル
- Seleniumは例を含むテキストチュートリアルで要素を検索します
- 初心者向けの詳細なEclipseチュートリアル
- QTPチュートリアル#18 –QTPの例で説明されたデータ駆動型およびハイブリッドフレームワーク
- QTPチュートリアル#6 –最初のテストのQTPレコードと実行設定を理解する
- QTPチュートリアル#24-QTPテストでの仮想オブジェクトとリカバリシナリオの使用
- QTPでの記述的プログラミングとQTPでのデータベース接続-チュートリアル#25