エンジニアの皆さん、こんにちは。
API開発の現場で「手動でPostmanをポチポチ叩いてテストする」という日々に、そろそろ限界を感じていませんか?
APIは生き物です。コードを修正するたびに手動テストを行っていては、いつか必ず「修正漏れ」という悪魔が顔を出します。今日は、Postmanで作成したテストをGitHub Actionsに乗せ、CI/CDパイプラインの中で全自動で実行する「守りの要」の作り方を伝授します。
これをマスターすれば、あなたのGitHubへのプッシュがそのまま品質保証のセレモニーに変わります。さあ、始めましょう。
—
1. Newmanとは何か?なぜ必要なのか?
PostmanはGUIツールですが、CI/CD環境(サーバー上)には画面がありません。そこで登場するのが、Newmanです。
- Postman: 開発者のための「実験室」。テストを書く場所。
- Newman: CLI(コマンドライン)版のPostman。サーバー上でテストを自動実行する「実行エンジン」。
つまり、Postmanでテストを作り、Newmanにそれを渡して、GitHub Actionsで回す。この連携こそが、API開発の黄金パターンです。
—
2. ステップ1:Postmanから「資産」をエクスポートする
まずはPostmanで書いたテストを、Newmanが読める形に書き出します。
1. Postmanで、テストを含んだ「Collection」を選択。
2. 「…」ボタンから Export をクリック。
3. `Collection v2.1` を選択して保存。`my-api-test.json` というファイルが手に入ります。
※ 重要: 環境変数(URLや認証トークンなど)を使っている場合は、それも「Environment」としてExportしておいてください。
—
3. ステップ2:Newmanをローカルで試す
いきなりCI環境に投げるのではなく、まず自分のPCで動かします。Node.jsがインストールされている環境で、ターミナルを開いてください。
Newmanをインストール
npm install -g newman
テストを実行!
newman run my-api-test.json -e my-env.json
ここで「全部緑色(PASSED)」になれば成功です。もしここでエラーが出るなら、それはCI環境でも必ず落ちるバグです。今のうちに潰しておきましょう。
—
4. ステップ3:GitHub Actionsで自動化する
ここからが本番です。プロジェクトのルートディレクトリに `.github/workflows/api-test.yml` を作成します。
name: API Automated Testing
on:
push:
branches: [ main ] # mainブランチにプッシュされたら実行
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: ’16’
- name: Install Newman
run: npm install -g newman
- name: Run API Tests
# エクスポートしたファイルをリポジトリに入れておくか、シークレットから読み込む
run: newman run postman/my-api-test.json -e postman/my-env.json
ここがプロのポイント
- シークレット管理: 認証トークンなどを環境ファイルにベタ書きするのは厳禁です! GitHubの「Secrets」機能を使い、実行時に `–env-var “TOKEN=${{ secrets.API_TOKEN }}”` のように注入するのが安全な設計です。
—
5. 伝説のエンジニアからのアドバイス:精度を高めるために
ただNewmanを動かすだけでは不十分です。「落ちるべき時に落ちる」テストこそが、信頼できるCI/CDです。
1. Status CodeだけでなくPayloadを見る:
`pm.response.to.have.status(200);` だけでは不十分です。JSONのスキーマが正しいか、期待したフィールドが返っているかを必ずアサーションに含めてください。
2. テストデータの分離:
テストに使うデータ(IDや入力値)を環境変数から読み込むように設計してください。これにより、ステージング環境、本番環境への移行がコマンド一つで完了します。
3. 失敗時のログを追いやすくする:
Newman実行時に `–reporters cli,junit` を付与してください。JUnit形式のレポートを出力しておけば、GitHub Actionsの「Actions」タブでテスト結果がグラフで可視化されます。
—
最後に
「自動化」とは、単に作業を減らすことではありません。「いつでも安心してコードをデプロイできる」という精神的な余裕を買うことです。
今日からあなたのGitHubには、常に最新の状態をチェックする「24時間働いてくれるQAエンジニア」が配属されました。エラーを恐れず、自信を持ってコードを書き進めてください。
何かわからないことがあれば、またいつでも聞きに来てくださいね。応援しています!