1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Postmanを使ったテストのテクニック

Posted at

はじめに

PostmanとはAPIのテストツールです。開発時の動作確認や自動テスト等で活用できます。
今回はPostmanのちょっとしたテクニックを紹介します。

目次

  1. Postmanの使い方
  2. コレクションの作成
  3. リクエストの作成
  4. 環境変数
  5. 複雑な処理の委託

Postmanの使い方

使い方について詳しくは説明しません。公式ドキュメントや他記事をご参照ください。
ここでは最低限の使い方について説明します。

コレクションの作成

PostmanはAPIのリクエストについて定義して実行する事ができます。
コレクションとはそれらをまとめたものです。
また、APIについてテストシナリオがある場合、一連の流れをまとめたものとも捉えることできます。

実際の操作はPostmanの左側にあるCreate New Collectionを押下するだけです。
コレクション作成.PNG

リクエストの作成

さきほど作成したコレクションを右クリックするとAdd requestと出ます。
これを押下すると新しいリクエストについて追加する事ができます。

リクエスト追加.PNG

リクエスト送信

URLを入力してSendを押下するとHTTPリクエストが送信できます。
ここではhttpbinに対して送ります。
リクエスト送信.PNG
画像下部でレスポンスボディが確認できます。

環境変数

Postmanには環境変数を定義する事ができます。用途は主に2つあります。
1つはテスト対象の切替です。例えばAPIのドメインを切り替えるのは、環境変数を利用すると楽に行えます。

環境変数を追加.PNG
環境変数を定義.PNG
環境変数を参照.PNG

このように定義した環境変数は{{}}で囲むことでURLはもちろん、クエリパラメータやリクエストボディ等に利用できます。

もう1つはテストシナリオ中に発生した値の受け渡しです。

例えばレスポンスボディの値を環境変数に入れることで次のリクエストの実行のパラメータにする事ができます。

複雑な処理の委託

Postmanはリクエストを送る前と後でjavascriptを実行する事ができます。ただし、ライブラリを読み込ませて複雑な処理をすることはできません。さきほど説明した環境変数の操作やリクエストの実行結果のAssert程度です。
ただし、テストシナリオを自動化する中で、クライアント側で少し器用な処理が行えると便利なときがあります。これはローカルに委託先のサーバを作成する事で対応できる場合があります。今回はローカルでテストが自動化できれば要件を満たせたため問題はありませんでしたがCICDに組み込むなら検討が必要になることに注意してください。

非同期処理のAPIを実行して、数秒待機してから次のAPIを実行したい場合は、以下のように実現できます。

const express = require('express');
const bodyParser = require('body-parser');

const app = express();
const PORT = 9999;

app.use(bodyParser.json());

app.post('/delay', (req, res) => {
    const { delayInSeconds } = req.body;

    if (typeof delayInSeconds !== 'number' || delayInSeconds <= 0) {
        return res.status(400).send('Invalid delay value');
    }

    setTimeout(() => {
        res.send(`Delayed for ${delayInSeconds} seconds!`);
    }, delayInSeconds * 1000);
});

const server = app.listen(PORT, () => {
    console.log(`Server is running on http://localhost:${PORT}`);
});

process.on('SIGTERM', () => {
    console.log('Stopping server gracefully');
    server.close(() => {
      console.log('Server stopped');
      process.exit(0);
    });
  });

nodejsで簡単なサーバを構築します。nodeをインストールして実行しても良いですし、dockerで動かしても良いと思います。

http://localhost:9999/delay にPOSTリクエストを送ると指定された秒数待機してからレスポンスを返します。これをコレクションのリクエストの間に挟むことで実現できます。

まとめ

今後はnewmanやdockerと合わせた自動テストについて紹介したいと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?