QA

PostmanのPre-requestとPost-responseで便利なスクリプトまとめ

PostmanのPre-requestとPost-responseは、APIテストにおいて重要なスクリプト機能です。これらを効率的に活用することで、テスト自動化の精度が向上し、作業の効率化も実現できます。この記事では、Pre-requestとPost-responseの基礎から応用的な使い方、さらに具体的なスクリプト例や活用のポイントまで徹底解説します。

1. Pre-requestの便利なスクリプト例

Pre-requestスクリプトは、リクエストを送信する前に実行されるスクリプトです。これを活用すれば、リクエスト前の準備を自動化し、効率的なAPIテストが可能になります。以下の例を見ていきましょう。

1.1. JWTトークンの自動生成

多くのAPIでは認証が必要です。特にJWTトークンを使用する場合、このスクリプトでトークンを毎回自動生成することができます。

const header = {
    "alg": "HS256",
    "typ": "JWT"
};
const payload = {
    "sub": "user@example.com",
    "name": "John Doe",
    "admin": true
};
const secret = "your-256-bit-secret";
const token = jwt.sign(payload, secret, { algorithm: 'HS256', header: header });

pm.environment.set("jwt_token", token);

 

ポイント:

  • セキュリティ管理: トークン生成に使うシークレットキー(secret)は、セキュリティ上、安全なストレージ(例:Postmanの環境変数や暗号化されたVault)で管理しましょう。
  • 動的なペイロード: payloadの値をAPIのテストシナリオに応じて動的に変更することで、さまざまなユーザーパターンを簡単に再現できます。

 

1.2. 現在のタイムスタンプを設定

APIにタイムスタンプが必要な場合、以下のスクリプトを使うと便利です。

var timestamp = Math.floor(Date.now() / 1000);
pm.environment.set("current_timestamp", timestamp);

 

ユースケース例:

  • 認証トークンの有効期限(expフィールド)に使用。
  • 時間依存のAPIテスト(例:一定期間内のデータ取得)に活用。

 

1.3. ランダムなデータの生成

ランダムなデータを生成してAPIの負荷テストや異常値テストを行う際に便利です。

// ランダムな文字列
var randomString = Math.random().toString(36).substring(7);
pm.environment.set("random_string", randomString);

// ランダムなUUID
const uuid = require('uuid');
pm.environment.set("random_uuid", uuid.v4());

 

補足: ランダムなデータ生成を組み合わせることで、予期せぬエラーやバグを発見するテストケースを作成できます。

 

2. Post-responseの便利なスクリプト例

Post-responseスクリプトは、リクエストのレスポンスを受け取った後に実行されます。これにより、APIの動作確認やレスポンスデータの活用が効率化します。

2.1. ステータスコードの確認

ステータスコードをチェックする基本的なスクリプトです。

pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

 

ベストプラクティス:

  • エラーステータス(例:400, 404, 500など)に対するテストも事前に用意し、APIのエラーハンドリングを検証しましょう。

 

2.2. レスポンスデータの検証

レスポンスに含まれる特定のフィールドや値が期待通りかをチェックできます。

pm.test("Response has user_id", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData).to.have.property('user_id');
});

 

2.3. レスポンスデータを次のリクエストに利用する

以下の例では、レスポンスデータからuser_idを抽出し、後続のリクエストで利用できるように設定します。

var jsonData = pm.response.json();
pm.environment.set("user_id", jsonData.user_id);

 

Tip: データをチェーン化することで、より複雑なテストシナリオを簡単に構築できます。

 

2.4. レスポンスタイムの確認

レスポンスが一定の時間以内に返されるかどうかをテストします。

pm.test("Response time is less than 500ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(500);
});

 

3. Pre-requestとPost-responseの応用的な使い方

3.1. テストスイートの構築

複数のリクエストを連携させ、以下のようなテストスイートを構築できます。

  • Pre-request: 各リクエストに必要なトークンや動的変数を生成。
  • Post-response: 各リクエストの結果を次のリクエストに引き継ぐ。

 

3.2. カスタムライブラリの活用

Postmanでは、requireを使ってNode.jsライブラリをインポートできます。たとえば、暗号化ライブラリを使って安全なトークン生成を行うことも可能です。

const crypto = require('crypto');
const hash = crypto.createHash('sha256').update('example').digest('hex');
pm.environment.set("hash_value", hash);

 

 

4. 使い分けのポイント

PostmanでAPIテストを行う際には、Pre-requestとPost-responseを組み合わせることで、テストの準備と検証を効率的に行うことができます。Pre-requestではリクエスト前のデータ準備を自動化し、Post-responseではレスポンスの正確性やパフォーマンスを検証できます。

目的 Pre-request Post-response
リクエスト前にトークンやデータを生成する
環境変数やグローバル変数を設定する
ランダムなデータを生成する
リクエスト後にレスポンスを検証する
レスポンスのデータを変数に保存する
APIのパフォーマンステストを行う

 

5. より高機能なテストを作るためのヒント

  1. エラーパターンを意識したテスト:
    正常系だけでなく、異常系(例:無効なトークン、不正な入力データ)のテストも設定することで、APIの堅牢性を確認できます。
  2. CI/CDパイプラインとの連携:
    Postmanのスクリプトは、新しいAPI変更を即座に検証するためにCI/CDツール(例:Jenkins、GitLab CI)と統合するのが理想的です。
  3. パフォーマンスモニタリング:
    レスポンスタイムの測定や負荷テストのスクリプトを追加して、APIのパフォーマンスを監視する習慣をつけましょう。

 

6.まとめ

PostmanのPre-requestとPost-responseは、APIテストを効率化する強力なツールです。スクリプトの使い方次第で、複雑なテストシナリオや動的なデータ生成が簡単に実現できます。この記事を参考に、より高度なテスト環境を構築してみてください!

ABOUT ME
りん
このブログでは、Web開発やプログラミングに関する情報を中心に、私が日々感じたことや学んだことをシェアしています。技術と生活の両方を楽しめるブログを目指して、日常で触れた出来事や本、ゲームの話題も取り入れています。気軽に覗いて、少しでも役立つ情報や楽しいひとときを見つけてもらえたら嬉しいです。