テスト

Postmanとは?APIテスト自動化とNewmanでのCI組み込みまで実装手順で解説

Postmanとは?APIテスト自動化とNewmanでのCI組み込みまで実装手順で解説

PostmanはAPIへリクエストを送ってレスポンスを確認するGUIツールですが、そこで止めると導入効果は半分も出ません。本体価値は、リクエストをコレクションとして保存し、テストスクリプトで検証を自動化し、NewmanやPostman CLIでCIから同じ検証を回すところにあります。この記事ではリクエスト・コレクション・環境の3層構造、pm.testでの検証コード、newman runの実行オプション、GitHub Actionsへの組み込みYAMLまでを公式ドキュメント準拠で並べました。2026年9月時点の料金4プランと、NewmanとPostman CLIの選択条件も実額と機能差で示します。

まとめ:Postmanの導入から自動テスト運用までで先に押さえるべき結論

Postmanは3階層で捉えると迷いません。個々のHTTPリクエスト、それを束ねるコレクション、接続先やトークンを差し替える環境。この3つを分けて設計すれば、開発環境と検証環境を同じコレクションで回せます。

自動化の入口はPost-responseタブに書くテストスクリプトです。pm.test()でステータスコードとレスポンスボディを検証しておけば、Collection Runnerで一括実行したときに合否が並びます。ここまではGUIだけで完結します。

CIに載せる段になって、はじめてCLIが要ります。コマンドラインからコレクションを実行する手段は2つ。Node.js製のnewmanと、Postman公式のPostman CLIが並存しています。JSONを直接渡してオフラインでも回したいならNewman、Postman Cloud上のコレクションを常に最新の状態で実行しlintまで使いたいならPostman CLIという分岐になります。

料金は2026年9月時点でFree・Solo・Team・Enterpriseの4プランです。日本語記事に多いBasicやProfessionalという名称は現行ページに存在しません。Freeは1ユーザー分のため、受託開発でチーム共有を始めた瞬間に有料化の判断が要ります。

Postmanの構成要素とAPIクライアントとして担う実行範囲

最初に押さえるのは、Postmanが何を保存し何を実行するツールなのかという境界です。ここが曖昧だと、コレクションが個人の端末に散らばり再現できなくなります。

リクエスト・コレクション・環境という3層構造とデータ保存先の違い

リクエストは1本のHTTP呼び出しで、メソッド、URL、ヘッダー、ボディ、認証設定を持ちます。コレクションはそのリクエストをフォルダ構造で束ねた単位で、コレクション自体にも認証設定と前後処理スクリプトを持たせられます。環境はbase_urlやaccess_tokenのような値の集合。同じコレクションを開発用と検証用で切り替えるために使います。

3層を分ける実利は、テスト対象の切り替えコストです。リクエスト側のURLに{{base_url}}と書いておけば、環境を切り替えるだけで検証先が変わります。ベタ書きしたコレクションは環境が増えた時点で複製が発生し、片方だけ修正が漏れます。

保存先も分けて考える必要があります。ワークスペースをPersonalで作るとコレクションは作成者のアカウントに紐づき、Teamワークスペースに置けばメンバー全員が同じコレクションを編集できます。公式の入門ドキュメントGet started in Postmanも、設計をワークスペース単位で始める前提の構成です。受託案件では着手時点でTeamワークスペースを1案件1つ作り、そこにコレクションを置く運用に固定するのが安全です。

デスクトップ版とWeb版の機能差とDesktop Agentが要る条件

PostmanにはデスクトップアプリとブラウザのWeb版があります。機能面はほぼ同等ですが、Web版だけはブラウザのサンドボックス制約を受けるため、localhostやイントラネット内のホストへ直接リクエストを送れません。この制約を回避するために、ローカルに常駐してリクエストを中継するPostman Desktop Agentという仕組みが用意されています。

判断は単純です。開発中のAPIが自分のマシン上で動いている、あるいは社内ネットワークからしか到達できない。どちらかに当てはまるならデスクトップアプリを入れるかDesktop Agentを起動します。検証対象がすべて公開エンドポイントなら、Web版のみで完結します。

Desktop Agentは常駐してローカルからの送信を代行するため、広い意味では端末側で動く代理プロセスの一種です。同じエージェントという語でも系統が複数あり、混同されがち。整理はデスクトップエージェントとは?3つの意味と代表ツールで別途扱っています。実務で最も多い詰まり方は、Agentが起動しないままWeb版からhttp://localhost:3000を叩いて接続エラーになるパターンです。

2026年9月時点の料金4プランと無料枠で先に詰まる上限値の実額

公式のPlans & Pricingに掲載されている構成は、2026年9月時点で次の4つです。年払い時の月額単価で並べます。

プラン 年払い月額 ユーザー数 AIクレジット
Free 0ドル 1ユーザー 月50
Solo 9ドル 1ユーザー 月400
Team 19ドル/人 無制限 月400/人
Enterprise 49ドル/人 無制限 月800/人

無料枠で先に詰まるのは、機能ではなく人数とAPI監視の回数です。Freeは1ユーザー分のため、2人目が共同編集を始めた時点で有料プランが要ります。API監視は月1,000リクエスト、外部サービス統合は5個という上限も設定されています。5分間隔の死活監視を1本仕掛ければ月8,640回。無料枠の監視は日次実行程度の用途に限られます。

日本語の解説記事の多くはBasic・Professionalという旧プラン名で書かれています。プラン構成が再編されているため、旧名称の月額で社内稟議を書くと金額が合いません。見積り段階では公式の料金ページを開き、年払いか月払いかまで確認してください。

ワークスペース作成から最初のGETリクエスト送信までの操作手順

ここからは手を動かす工程です。アカウント作成後、最初のレスポンスを画面に出すまでは5分もかかりません。

ワークスペース作成からGETリクエスト送信までの5ステップ手順

初回操作は次の順で進みます。各ステップの成果物を意識すると、あとでコレクションを整理し直す手間が減ります。

  1. Postmanアカウントを作成し、デスクトップアプリまたはWeb版にサインインする
  2. 左サイドバーのWorkspacesから案件名でTeamワークスペースを1つ作る
  3. Collectionsタブで新規コレクションを作り、対象APIの名前を付ける
  4. コレクション配下にリクエストを追加し、メソッドをGET、URLに検証対象のエンドポイントを入力する
  5. Sendを押し、下部ペインにステータスコードと応答時間、レスポンスボディが表示されることを確認する

動作確認だけならPostman公開のエコーサーバーhttps://postman-echo.com/getにGETを投げると、送信したクエリパラメータがそのまま返ります。自社APIの認証設定に入る前にツールの往復が成立することを確かめておくと、切り分けが速くなります。

環境変数でホスト名とアクセストークンを切り替える設定と参照記法

変数はGlobal、Collection、Environment、Data、Localの5スコープを持ちます。公式ドキュメントのStore and reuse values using variablesには、同名の変数が複数スコープに存在する場合は最も狭いスコープの値が使われると明記されています。優先順位はLocal、Data、Environment、Collection、Globalの順です。

実務での使い分けはこうなります。接続先ホストとAPIキーはEnvironmentに置き、環境セレクタで開発用と検証用を切り替える。全環境共通のバージョン番号はCollectionに置く。Globalはワークスペース全体を汚すため使わない。

参照記法は二重波括弧です。URL欄に{{base_url}}/v1/orders、AuthorizationヘッダーにBearer {{access_token}}と書けば、環境の切り替えだけで接続先と資格情報が入れ替わります。よくある事故が、環境変数のInitial valueに本番トークンを入れてしまうケース。Initial valueはワークスペース共有時に他メンバーへ同期されるのに対し、Current valueはローカルにしか保存されません。秘密の値は必ずCurrent value側だけに入れてください。

テストスクリプトによるレスポンス自動検証とコレクション実行の実装

ここがGUIツールと自動テスト基盤の分かれ目です。リクエストごとにJavaScriptで検証を書いておくと、Postmanは手動確認の道具から回帰テストの実行環境に変わります。

pm.testでステータスコードとJSONボディを検証するコード

検証コードはリクエスト画面のPost-responseタブに書きます。公式のWrite scripts to test API response data in Postmanでは、Pre-requestタブがリクエスト送信前、Post-responseタブが送信後の実行タイミングと説明されています。次は受注APIのGETに対する検証例です。

// Post-response タブに記述する
pm.test("Status test", function () {
    pm.response.to.have.status(200);
});

pm.test("response must be valid and have a body", function () {
    pm.response.to.be.ok;
    pm.response.to.be.json;
});

pm.test("orderId が数値で返る", function () {
    const body = pm.response.json();
    pm.expect(body.orderId).to.be.a("number");
});

pm.test("応答時間は800ms以内", function () {
    pm.expect(pm.response.responseTime).to.be.below(800);
});

アサーションはChaiの記法です。pm.response.to.have.status(200)のようにHTTPレスポンス全体を対象にする書き方と、pm.expect()で任意の値を検証する書き方の2系統。実務で効くのは4つ目で、機能は壊れていないのにレイテンシだけ悪化した変更をプルリクエスト段階で捕まえられます。しきい値は本番SLOから逆算します。

Pre-requestスクリプトでトークンを取得し変数へ格納する記述

認証が必要なAPIでは、トークンを手で貼り直す運用がすぐ破綻します。Pre-requestタブから認証エンドポイントを叩き、取得したトークンを環境変数へ書き戻す処理を入れておきます。

pm.sendRequest({
    url: pm.environment.get("base_url") + "/auth/token",
    method: "POST",
    header: { "Content-Type": "application/json" },
    body: {
        mode: "raw",
        raw: JSON.stringify({
            client_id: pm.environment.get("client_id"),
            client_secret: pm.environment.get("client_secret")
        })
    }
}, function (err, res) {
    if (err) { console.error(err); return; }
    pm.environment.set("access_token", res.json().access_token);
});

このスクリプトはコレクション単位のPre-requestタブに置くのが定石です。リクエストごとに書くと同じ処理が何本も走り、認証サーバーへ無駄な負荷をかけます。トークンの有効期限を環境変数に保存し、期限内なら再取得しない分岐を足すと実行がさらに軽くなります。

Collection Runnerとデータファイルで反復実行する設定手順

コレクションを選んでRunボタンを押すと、Collection Runnerが起動します。フォルダ内のリクエストが上から順に実行され、テスト結果が合否一覧で並びます。実行順はコレクション内の並び順どおり。認証を先頭に置き、作成、取得、更新、削除の順に並べるとリソースのライフサイクルをそのまま検証できます。

入力値を変えて同じシナリオを回すなら、CSVまたはJSONのデータファイルを読み込ませます。ファイルの1行が1イテレーションに対応し、列名はそのままData変数として参照可能。境界値テストをこの仕組みに寄せると、リクエストを値の数だけ複製せずに済みます。

ここで作った合否判定は、後段のCIでそのまま再利用されます。Runnerで緑にならないコレクションはCIに載せても意味がありません。依存先APIがまだ無い段階の検証には、Postmanのモックサーバーか別のテストダブルを使う判断になります。選び分けはモックとスタブの違いとテストダブル5分類の整理が使えます。

NewmanでコレクションをCIパイプラインに載せる実装とYAML記述例

GUIで作った検証をプルリクエストごとに自動で回すには、コマンドラインからコレクションを実行する必要があります。Node.js製のコレクションランナーであるNewmanが、その役割を担います。

newmanのインストールとnewman runの基本コマンド構成

NewmanはPostman公式のGitHubリポジトリpostmanlabs/newmanで開発されています。同リポジトリの互換性表では、Newman v6系の動作要件がNode.js v16以上と記載されています。

npm install -g newman

newman run ./collections/orders.postman_collection.json \
  -e ./env/staging.postman_environment.json \
  -d ./data/order-cases.csv \
  -n 3

コレクションと環境はGUIからJSONとしてエクスポートしたファイルを渡します。-eが環境ファイル、-dがイテレーション用のデータファイル、-nが繰り返し回数です。Cloud上のコレクションをURL指定で実行することもできますが、ネットワーク到達性に依存します。CIではエクスポート済みJSONをリポジトリに含めるほうが結果は安定します。

レポーター指定と–bailで失敗時にCIジョブを止める設定の要点

公式のNewman command referenceに載っているレポーターは、cli、json、junit、progress、emojitrainの5種です。カンマ区切りで複数を同時指定できます。CIに載せるなら、人が読むcliと、テスト結果の集計に使うjunitの2つを出すのが実用的です。

newman run ./collections/orders.postman_collection.json \
  -e ./env/staging.postman_environment.json \
  -r cli,junit \
  --reporter-junit-export ./reports/newman-result.xml \
  --timeout-request 5000 \
  --bail

--bailはテストが失敗した時点でコレクション実行を打ち切るオプションです。付けるかどうかは目的で変わります。デプロイ前のゲートとして使うなら、最初の失敗で止めてジョブを落とすほうが待ち時間を短縮できます。夜間の全件チェックのように失敗箇所を洗い出す実行では、--bailを外して最後まで走らせ、junitレポートで内訳を見るべきです。--timeout-requestはリクエスト単位の応答待ちをミリ秒で指定するもので、外部API依存のコレクションでこれを省くとジョブが長時間ハングします。

GitHub Actionsのワークフローに組み込むYAML記述の全文

プルリクエスト作成時にNewmanを走らせる最小構成です。実行結果のXMLを残しておくと、失敗時の原因追跡が楽になります。

name: api-test
on:
  pull_request:
    branches: [ main ]

jobs:
  newman:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm install -g newman
      - name: Run Postman collection
        env:
          API_TOKEN: ${{ secrets.STAGING_API_TOKEN }}
        run: |
          newman run ./collections/orders.postman_collection.json \
            -e ./env/staging.postman_environment.json \
            --env-var "access_token=$API_TOKEN" \
            -r cli,junit \
            --reporter-junit-export ./reports/newman-result.xml \
            --bail
      - uses: actions/upload-artifact@v4
        if: always()
        with:
          name: newman-report
          path: ./reports/

資格情報の扱いがこの構成の肝です。環境ファイルにトークンを書いたままコミットすると、履歴に平文で残り続けます。エクスポートする環境ファイルからは秘密の値を空にしておき、実行時に--env-varで上書きしてください。if: always()を付けたアーティファクト保存は、テストが落ちたときこそレポートが必要になるための指定です。

NewmanとPostman CLIの選択条件と受託開発で見送る場面

コマンドライン実行の手段が2つ並存しているため、どちらを採るかで運用設計が変わります。

NewmanとPostman CLIの機能差と選ぶときの条件分岐

Postman CLIは公式ドキュメントでPostmanのコマンドライン用コンパニオンと位置づけられ、コレクション実行に加えAPI定義のlintコマンドを持ちます。公式のインストール手順ではnpmのほか専用のインストーラースクリプトが案内されています。

# macOS / Linux / WSL
curl -o- "https://dl-cli.pstmn.io/install/unix.sh" | sh

# npm 経由
npm install -g postman-cli
観点 Newman Postman CLI
実行対象 エクスポート済JSON Cloud上のコレクション
Postman接続 不要(オフライン可) APIキーが必要
lint・ガバナンス 非対応 対応
実装 Node.js製OSS 公式バイナリ

選び方の分岐は明確です。閉域網のJenkinsやオンプレのCIで外部通信を通せない環境ならNewman一択。コレクションJSONをリポジトリに置けば完結し、Node.js v16以上さえあれば動きます。Postman Cloudでコレクションを一元管理していてGUIの編集を即座にCIへ反映したい、あるいはAPI定義のlintをパイプラインに組み込みたいならPostman CLIを選びます。両方入れる必要はありません。

Postmanを採用しない方がよい3条件と代替ツールの選び分け

Postmanが過剰、あるいは不向きになる場面があります。次の3条件に当てはまるなら、導入は見送るべきです。

1つ目は、検証対象が単発のヘルスチェックだけの場合。curlと数行のシェルスクリプトで済む規模にコレクション管理を持ち込むと、メンテナンス対象が増えるだけになります。2つ目は、コレクションをクラウドに置けない制約がある場合です。Postmanの共同編集はクラウド同期が前提のため、社外へのデータ持ち出しが禁止された案件では機能の大半が使えず費用に見合いません。3つ目は負荷試験が主目的の場合で、シナリオを細かく制御した高負荷試験ではk6やGatlingのような専用ツールのほうが表現力があります。

クラウド同期が制約になるケースでは、ローカル保存を前提にした代替ツールを検討します。オフライン利用やAPI設計との一体管理を重視する選択肢の比較は、Apidogとは?機能・使い方・Postmanとの違いで機能単位に整理しています。乗り換えの判断は、チームが月あたり何時間をAPI疎通確認に使っているかを先に測ってからにしてください。逆に1人の手動確認だけで足りるなら、Chrome拡張で登録不要のTalend API Testerとの使い分けも選択肢になります。無料版の制限と判断基準はTalend API Testerの使い方:Free Editionの制限とCI化・Postman比較で整理しています。

APIキーとワークスペース公開範囲の設計で情報流出を防ぐ実務手順

Postman運用の事故は、ほぼすべてが資格情報の取り扱いに起因します。対策は3つの設定に絞れます。

  • ワークスペースの可視性をPublicにしない。検索エンジンからも到達可能な公開領域になる
  • 環境変数の秘密の値はInitial valueへ入れず、Current valueにのみ保存する。Initialは共有時に同期される
  • CI実行時のトークンはコレクションや環境ファイルに埋めず、--env-varとCI側のシークレット機能で注入する

加えて、案件終了時にワークスペースからメンバーを外す手順を撤収チェックリストに入れてください。Teamプランはユーザー単位課金のため、離任者を残すと費用面でも損失が続きます。外部システムとの接続方式の設計から相談したい場合は、API開発・システム連携で受託の範囲を確認できます。

よくある質問

Postmanの導入検討と運用でよく出る質問を、2026年9月時点の公式情報に基づいて整理します。

Postmanは無料でどこまで使えますか?

Freeプランは月額0ドルで、リクエスト送信、コレクション管理、テストスクリプト、Collection Runnerといった基本機能は制限なく使えます。制約は共有と自動監視の側です。1ユーザー分のみで複数人の共同編集はできず、API監視は月1,000リクエスト、外部サービス統合は5個まで。2人目が参加した時点でTeamプラン(年払い月19ドル/人)への切り替えを検討してください。

PostmanとcURLはどう使い分けますか?

単発の疎通確認や、サーバー上でその場に叩く用途はcURLが速いです。Postmanが優位になるのは、同じリクエスト群を繰り返し実行する場合と、検証を自動化して結果を残す場合。判断基準は再現回数に置いてください。2回以上繰り返すならコレクション化する価値があります。PostmanはcURLコマンドをインポートしてリクエストに変換でき、逆方向のコード生成も可能。既存資産を持ち込めるため移行コストは低く済みます。

Postmanのコレクションはチームでどう共有しますか?

方法は2つあります。1つはTeamワークスペースにコレクションを置いてメンバーを招待する方法で、編集がリアルタイムに同期されます。もう1つはJSONにエクスポートしGitリポジトリで管理する方法。前者はクラウド保存が前提、後者は変更履歴がコードと同じ流れで残ります。CIでNewmanを回すなら、実行対象を固定できる後者を併用する構成が扱いやすくなります。

Newmanが動かないときは何を確認しますか?

確認順は3段階です。まずNode.jsのバージョンで、Newman v6系はv16以上を要求します。次にコレクションと環境ファイルのパス、そしてエクスポート時のスキーマ形式。古い形式のJSONは読み込めないことがあります。最後が環境変数で、GUIでは動くのにCLIで401が返る場合、Current valueにしか入っていない値がエクスポートされていない可能性が高くなります。--env-varで実行時に注入して切り分けてください。自己署名証明書のエンドポイントでは-kでSSL検証を無効化できますが、本番向けの実行では使わないでください。

Postmanで作ったテストはE2Eテストの代わりになりますか?

代わりにはなりません。Postmanが検証するのはAPI層の入出力で、ブラウザ上の画面遷移やフォーム操作を含む経路は対象外です。位置づけは、単体テストと画面主体のE2Eテストの中間にあるAPI結合テストの層になります。Postmanのコレクションを結合テスト層に置き、画面まで通す検証はPlaywrightなどのブラウザ自動化ツールに担わせる分担が現実的です。層ごとの配分はE2Eテストのベストプラクティスで扱っています。

関連記事

お気に入りに入れた記事の一覧

この記事は以下の記事からリンクされています

ほか 2 件の記事からもリンクされています。

資料請求

今日のトレンド記事 直近 24 時間で、いつもより多く読まれている記事

  1. 2026.10.07 テックブログ ファインズの不正アクセスと153万件の予約者情報|予約システムを使う店舗の報告と通知の手順
  2. 2026.10.19 テックブログ コミックシーモア不正アクセスで会員情報流出:再開時期・パスワード再設定と運営側のログ点検
  3. 2026.10.16 テックブログ バーガーキング情報漏洩どうしたらいい?約1,118万件の対象確認・補償・退会とメールの真偽
  4. 2026.10.15 テックブログ 銀のさら不正アクセス:最大650万件の対象確認と窓口、パスワード変更・退会の手順
  5. 2026.10.14 テックブログ ブックオフ不正アクセス:約638万人の対象確認と本物メールの見分け方

RELATED POSTS 関連記事

目次