Blog

PostmanによるAPI試験自動化

2021/09/06

背景:なぜAPIクライアントを使いたいのか

新規構築されたVMware NSX-Tの環境で、上限値試験を実施するため、一括で数十台のEdge VM(※1)とEdgeクラスタ(※2)を作成・削除が必要となります。1台のEdge VMをNSX-Tの管理GUIで作成する場合は、10分ほどかかります。かつ、繰り返して作成・削除を実施するため、自動化の仕組みが当然必要です。 自動化の仕組みとして、いくつかの選択肢がありますが:

  • BashでCurlで実装:リクエストボディの編集はしにくい
  • NSX-T python API:使い始まるための準備作業と勉強時間が長い、ドキュメントは中途半端
  • APIクライアントを使用する:今回の紹介対象

※1: NSX-T仮想ルータ、ロードバランサーなどの機能をまとめて管理する単位です。ESXi上の仮想マシンとして作成させるため、Edge VMといいます。 ※2: 2台のEdge VMを1つのクラスタに組むことで、1台のEdge VMがダウンする際のフェールオーバーを実現されるための機能です。

Postmanの簡単紹介

URL

公式サイト:https://www.postman.com/

特徴

  • 機能豊富なGUI、無料版かつオフラインでも十分使えます。
  • Windowsでも、OSXでも簡単に導入できます。
  • 「Collection」という単位で、作成したAPIたちをまとめて管理でき、JSON形式でエクスポート、チームメンバーに共有はできます。

Postmanの起動画面

postman start menu

左側から右まで「Request」「Collection」「Environment」の3つの「Building Block」があります:

  • Request: 1つのRESTful APIコールの内容を定義
  • Collection: 複数のRequestをまとめて管理する単位であり、中に共通の環境変数や設定を指定可能
  • Environment:環境によって異なるパラメータを抽出し定義することで、別のNSX-T環境でも同じAPIを使用
  • Environmentの設定例1: 環境ごとのURLを指定

postman env url

  • Environmentの設定例2: API共通の認証情報を指定

postman env 2

PostmanでAPI作成・実行・共有の簡単流れ

  • 全体流れを示すAPI作成画面は以下のようになります。 Step1. 環境変数を使用してAPIコールを作成 Step2. 「Send」ボタンを押して、作成したAPIを実行 Step3. 問題なければ、「Save」ボタンを押して、自分のCollectionにAPIを保存

postman create api flow

Postmanで操作自動化の実現

これまで、Postmanの基本構成、操作方法を紹介しました。これから今回のメインテーマである「自動化」にまいります。 自動化操作を実現するために、以下の要素は不可欠です。

  1. 変数
  2. ループ
  3. 条件式

これから、Postmanでそれぞれの自動化要素をどうやって実装できるかについて共有したいと思います。

変数の実装

Collection Runnerの作成

PostmanでAPIを自動化する際に、「Colletion Runner」を作成する必要があります。Runnerの作成する際に、以下のプロパティを指定します。

  1. 実行対象のAPI:事前に作成済みのcollectionを指定
  2. 環境変数:共通的な環境情報を指定
  3. 実行回数
  4. 毎回実行の間の休憩時間
  5. CSV形式の変数リスト

実際の画面の以下のようになっています。 postman create collection runner

Request中の変数引用

APIを実行化されるために、Runnerで定義された変数を引用するために少し改修工事が必要です。以下の画面に示したように、「pre-request-script」タグを開いて、javascript風で変数の引用を定義します。ここの「data」オブジェクトは、CSVファイルのことを指しています。「hostname_str」や「ip_str」はCSV中の列名となっています。まずCSV中の変数を環境変数に書き換えて、実際に右側のリクエストボディ定義に、環境変数として引用できるようになります。 postman using variables

実行結果の確認

「Collection Runner」を作成完了後、水色の実行ボタンを押せば自動実行が始まります。以下のような画面が開いて、実行中のステータスとそれぞれの実行結果は確認できます。同じ画面で、もう一度同じ内容の再実行もOne-Clickでできますので、繰り返して試験を実施する際に便利です。 postman runner result

ループと条件式

参照先:https://learning.postman.com/docs/running-collections/building-workflows/ 上記公式ドキュメントにはループと条件式のやり方は詳細に記載されています。変数の引用と同じで、実行対象のリクエストボディの中にjavascript風で定義できます。本記事の中には省略させていただきます。

最後に

今までAPI自動化を実装する際に、基本Bashとpythonで行いましたが、勉強コストが少ない、かつデバッグしやすい観点で、GUIの自動化ツールである「Postman」を試しました。同じニーズがあるエンジニア同士に自分の経験を共有する目的で、この記事を投稿しました。今後、さらに高度的な使い方、もっと便利な機能を掘り出して、再び皆さんと共有できればいいと思います。