advanced scripting complex testing workflows postman
複雑なテストワークフローのためのPostmanAdvancedScriptingについて学ぶ:
このチュートリアルでは、Postmanで高度なスクリプトを使用して複雑なテストワークフローを実行できるようにする基本的な例をいくつか紹介します。
あるリクエストから別のリクエストへのデータの受け渡し、リクエストチェーン、つまりPostmanコレクション内のリクエストの実行順序の制御などの例について説明します。
最高のPCチューンアップソフトウェア2019
=> Easy Postman TrainingSeriesをお読みください。
学習内容:
Postmanのリクエスト間でデータを渡す
リクエスト間でデータを渡すことは、さまざまなタイプのPostman変数を使用する拡張機能です。 APIリクエストが前のリクエストのレスポンスのデータに依存していることは、それほど珍しいことではありません。
Postmanを使用してこのような機能を構築するには、Postman変数を使用して、前または前のリクエストから受信した応答に応じて値を設定します。
これがビデオチュートリアルです:
これを説明するために例を見てみましょう。
同じAPIを使用します https://reqres.in 2つのエンドポイント、つまりユーザーの登録とユーザーの詳細の取得を使用します。
登録エンドポイントから返されたユーザーIDの値を使用し、それを使用してユーザー詳細メソッドを取得します。これは、userId値を環境変数に格納し、その環境変数を結果のリクエストで使用することで実現されます。
このようなスクリプトはすべて、Postmanリクエストビルダーコンソールの(テスト)タブの一部になることに注意してください。
スクリプトがどのように表示されるかを見てみましょう。
#1) ユーザーエンドポイントの登録の場合、このAPIの応答は次のようになります。
{ 'id': 4, 'token': 'QpwL5tke4Pnpja7X4' }
ここで、応答のユーザーIDを使用してGETリクエストを実行するには、上記の応答からid値を取得する必要があります。以下のスクリプトを使用して、このJSONのIDの値を次の名前の環境変数に格納します。 ユーザーID。
var jsonData = pm.response.json(); pm.environment.set('userId',jsonData.id)
上記のスクリプトを使用すると、IDの値がuserId環境変数に格納され、GETユーザーリクエストエンドポイントの実行中に同じ値を使用できるようになります。
#二) したがって、GETユーザーリクエストは次のようになります。
https://reqres.in/api/users/ {(userId}}
最初のリクエストが実行されると、レスポンスからUserIDの値をフェッチし、環境変数の値を更新して、他のリクエストで使用できるようにします。
Postmanでチェーンをリクエストする
最初にリクエストチェーンの基本的なユースケースを理解してから、Postmanを使用してリクエストチェーンを実現する方法についてさらに詳しく見ていきましょう。
eコマースサイトのログインフローのシナリオを検討し、ログインしたユーザーを検証します。これで、ユーザーがログインするには、最初にサイトに登録する必要があります。その後、ユーザーはログインできるようになります。これは、モバイルアプリの実際のサイトがAPI呼び出しを実行する順序です。
統合テストの観点から見てください。 APIテストの場合、最初に次のことを行う必要があります。
- ユーザーが正常に登録できるように、APIの登録エンドポイントを呼び出します。
- 次に、ログインエンドポイントを呼び出し、ログインしたユーザーの詳細を検証します。
Postmanでは、リクエストの実行順序を制御するのは簡単ではありません。デフォルトの実行順序は上から下です。つまり、Postmanコレクションでリクエストが宣言または作成される順序です。
次のスクリプトを使用して、リクエストの連鎖またはリクエストの実行順序を変更します。
postman.setNextRequest({{RequestName}});
ここで重要なのは、このリクエストチェーンスクリプトを、実行中のリクエストが完了するとワークフローをトリガーするリクエスト前スクリプトまたはリクエスト後スクリプト(またはPostmanリクエストビルダーの(テスト)タブ)に追加する必要があるということです。
ここで、{{RequestName}}は、Postmanコレクションで構成または設定されている実際のリクエスト名です。
リクエストチェーンの概念を説明するために、4つの異なるリクエストでPostmanコレクションを構成しましょう。 4つのリクエストで新しいコレクションを作成します(同じAPIを使用します https://reqres.in これを説明するために)。
コレクション内の4つのリクエストは次のようになります。
#1)投稿 ユーザー登録のリクエスト( https://reqres.in/api/register )以下のように電子メールとパスワードを持つフィールドを持つサンプルJSON本文を使用します。
{ 'email': 'eve.holt@reqres.in', 'password': 'pistol' }
#二) ログインエンドポイントを使用したPOSTリクエスト( https://reqres.in/api/login )上記と同じリクエスト本文を使用します。
#3) ユーザーID4のGETリクエスト。
私たちが達成しようとするワークフローは次のとおりです。
登録(POST)->ユーザー詳細(GET)->ログイン(POST)
これらのリクエストがどのように構成されていても、この順序で実行されるワークフローを作成します。
リクエストには、それぞれRegister User、Get User、LoginUserという名前が付けられていることに注意してください。これらのリクエスト名をスクリプトで正確かつ正確に指定することが重要です。そうしないと、ワークフローがスタックします。
スクリプトがどのように見えるか見てみましょう。
#1) 登録するPOSTリクエスト。
postman.setNextRequest('Login User');
#二) ログインのPOSTリクエスト。
postman.setNextRequest('Get User');
#3) ユーザーの詳細を取得するためのGETリクエスト。ここで重要なのは、このリクエストの後に何も起こらないようにすることです。ここにワークフロースクリプトを追加しない場合、Postmanコレクションは、論理的またはデフォルトの順序で次のリクエストを再開するように設計されています。
したがって、コレクション内のリクエストの元の順序は次のようになります。 登録、ユーザーの取得 そして ログイン そして私たちのワークフローは ユーザーを取得 コントロールは次に進むリクエストを知らないため、次の論理リクエストに進みます。 ログイン 最終的には無限ループになります。
このような状況を防ぐには、次を使用してワークフローを終了すると便利です。
postman.setNextRequest(null)
コレクションの実行中に上記のスクリプトが検出されると、ワークフローの実行が停止し、コレクションランナーが終了します。
Javaのバイナリ検索ツリープログラム
次のリクエストの循環参照がある場合、コレクションランナーは無限ループでスタックし、遅かれ早かれメモリリークを引き起こします。
ワークフローを実行するには、最初のリクエストまたは開始リクエストを手動で実行する必要があることに注意してください。それを投稿すると、リクエスト後のスクリプトで定義されているワークフローに従います。
つまり、ワークフローの一部として実行する必要がある最初の要求は、コレクションまたはコレクションフォルダー内の最初の要求でもある必要があります。これにより、ワークフローの実行は、ワークフローの最初の要求でもある最初の要求から開始されます。 。
Postmanによる高度なワークフローチェーン
上記の例では、同じコレクション内の一連のリクエスト間でワークフローを構成しただけの線形ワークフローです。同じ手法を使用して、一部の応答値または環境変数に基づいて要求を複数回ループすることもできます。
ショッピングカートアプリの統合テストを検討してください。ユーザーが商品を検索してカートに追加し、同じ操作を5回実行する必要があるシナリオ、つまりカートに合計5つのアイテムが含まれるまでテストする必要があります。最後にチェックアウト。
したがって、この種のテストの線形フローを作成する場合、コレクション内で個々のリクエストを繰り返すことになります。基本的に、コレクションには、アイテムを検索するための5つのリクエストと、カートに商品を追加するための5つのリクエストがあります。チェックアウトをリクエストします。
このワークフロー機能を使用すると、コレクション内で同じリクエストを繰り返すことを回避し、ワークフローを使用してリクエスト間をループできます。
このようなシナリオのフローシーケンスを見てみましょう(これは、環境変数の組み合わせとともにPostmanワークフローを使用して使用/作成できます)。
Postmanワークフローを使用してSpotifyプレイリストを作成する興味深い例もあります。参照 ここに 詳細については。
重要なヒント
以下に、ワークフローの構築に取り組む際に覚えておくべきいくつかの重要なヒントを示します。
- postment.setNextRequestが設定されていないリクエストがほとんどない場合にコレクションを実行している間、実行はデフォルトのコレクションの順序で続行されます。したがって、一般的には、すべてのリクエストにPostman.setNextRequestを含めるか、いずれにも含めないことをお勧めします。
- コレクションを使用して実行しているときに、コレクション内にフォルダがある場合、Postman.setNextRequestは同じフォルダに属するリクエストにのみ使用できます。つまり、リクエストの選択は現在のフォルダを超えることはできません。
- Postman.setNextRequestは、言及されている場所と順序に関係なく、ポストリクエストまたはプレリクエストスクリプトで実行される最後のステートメントです。
setNextRequestに複数の値が見つかった場合は、最後に説明した値が有効です。
結論
このチュートリアルでは、環境変数とローカル変数を組み合わせてPostman内の異なるリクエスト間でデータを渡すなど、いくつかの高度なスクリプトトピックと、ループや分岐などの高度な機能を可能にするPostmanリクエストチェーンを使用してリクエストの実行順序を制御する方法について説明しました。
さまざまなAPIとやり取りする方法でアプリケーションの動作を模倣するのは便利な機能であり、APIエンドポイントとの統合テストを使用してエンドツーエンドのワークフローを作成するのに役立ちます。
=> ここで完璧な郵便配達員トレーニングガイドをチェックしてください。
推奨読書
- 最高のソフトウェアテストツール2021 (QAテスト自動化ツール)
- PrimereBookダウンロードのテスト
- POSTMANチュートリアル:POSTMANを使用したAPIテスト
- LoadRunnerVuGenスクリプトを使用したWebサービスパフォーマンステスト
- さまざまなAPI形式をテストするためにPostmanを使用する方法は?
- HPLoadRunnerチュートリアルを使用した負荷テスト
- デスクトップ、クライアントサーバーテスト、およびWebテストの違い
- あなたは新しいテスターですか、それとも高度なテスターですか?このカードゲームから探す