0
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?

自動化テストのリアル | [第4回]: APIテストをPostmanで自動化

Posted at

🚀自動化テストのリアル:Postmanで始めるAPIテストの自動化入門

1. はじめに:なぜ今、APIテストを自動化すべきか?

近年、マイクロサービス化や**SPA(Single Page Application)**の普及により、バックエンドのAPIがシステムの心臓部となっています。それに伴い、APIの品質保証はますます重要になってきました。

しかし、現場でよく聞く悩みとしては…

  • リリース前のAPI手動テストに時間がかかる
  • テスト手順が属人化しており、ドキュメントが古い
  • QAと開発間での認識齟齬が発生している
  • フロント側のテストはしていてもAPI単体はノーマーク…

そんな状況を救う一手が、Postmanを使ったAPI自動化テストです。

この記事では、Postmanを使って実践的なAPI自動化テストの仕組みを構築する方法を、実際のコード例とともに丁寧に解説します。


2. Postmanとは?自動化テストにどう使える?

Postmanは、もともとAPIの開発者向けクライアントツールとして登場しましたが、現在は以下のように強力な自動化機能も備えています。

✅ Postmanの主な機能

機能 説明
Request作成 REST/GraphQL/HTTPなど様々なAPI形式に対応
Testスクリプト JavaScriptでレスポンス検証が可能
Collection テストケースのセットを整理・管理できる
Runner 複数リクエストを一括実行
CI連携 Newman(CLI)を使えばGitHub Actions等と連携可能

つまり、Postman = APIテストのIDE的存在と言っても過言ではありません。


3. 実践:PostmanでAPI自動テストのフローを作ってみよう

ここでは「ToDo API」を例に、Postmanでの自動化の流れを紹介します。

📘 3-1 テスト対象API(例)

GET    /api/todos         // ToDo一覧取得  
POST   /api/todos         // ToDo新規作成  
DELETE /api/todos/:id     // ToDo削除

🔧 3-2 Collectionの作成と変数定義

  1. PostmanでCollectionを作成
  2. {{base_url}}{{token}} などの変数を環境設定で管理
{
  "base_url": "https://api.example.com",
  "token": "your_api_token"
}

✅ 3-3 テストスクリプトの例

pm.test("ステータスコードは200であること", function () {
  pm.response.to.have.status(200);
});

pm.test("レスポンスは配列であること", function () {
  var jsonData = pm.response.json();
  pm.expect(jsonData).to.be.an("array");
});

Postmanの「Tests」タブに上記コードを記述するだけで、テストが自動で実行されます!

▶️ 3-4 Collection Runnerで一括テスト実行

  • テストケースを一気に実行
  • 各リクエストのレスポンス結果を可視化
  • CSVによるデータ駆動テストも可能(データパラメータを使う)

🔄 3-5 NewmanによるCI連携

npm install -g newman

newman run ./collection.json \
  --environment ./env.json \
  --reporters cli,html

GitHub ActionsやGitLab CIと連携することで、API変更時に自動テストをトリガーできます。


4. 現場のTips:よくある落とし穴と回避策

❌ テストが「成功しているように見えるだけ」問題

  • レスポンスが200でも中身が正しいとは限らない → JSON内容の検証必須
  • エラーハンドリングの検証も入れるべき(400/401/500系)

💡 変数の乱用でカオスになる前に

  • 共通値は環境変数へ、テストごとの値はData File
  • Pre-request Scriptでダイナミックなデータ生成も可能
pm.environment.set("now", new Date().toISOString());

⚠️ テストのメンテ地獄を避けるには?

  • Collectionを小さく分割して管理
  • コメントや命名を工夫してわかりやすく

5. 応用:データ駆動テストや外部連携の活用

Postmanでは、CSV/JSONファイルを読み込んでパラメータの組み合わせテストが可能です。

title,description
"掃除","週1回"
"買い物","週2回"

これにより、大量のテストケースを網羅的に検証できます。

さらに、以下のような応用も現場で効果的です。

  • Slack通知:Webhookで失敗時アラート
  • モックAPIと切り替えて検証環境を維持
  • OpenAPI Spec(Swagger)と連携して自動生成テスト

6. まとめ:Postman自動化テストのリアルとは?

✅ メリット

  • 手動テストの工数削減
  • バグの早期発見
  • CI/CDへの統合による品質向上
  • QA・開発間の認識合わせに貢献

❌ デメリット

  • 初期セットアップにやや学習コスト
  • テストスクリプトの保守が必要

🚀 最後に:とにかく「まず1本書いて実行してみる」

Postmanの自動テストは、学習コストが低く、再現性が高いのが魅力です。

現場でありがちな「API動いてるよね?(たぶん)」という曖昧さから脱却し、誰が見てもわかる・再現できるテストを目指しましょう。

「品質は文化」です。今日からPostmanで、テスト自動化をチームの文化にしていきませんか?


📚 参考リンク


この投稿が、現場でAPIテストをもっと効率化したい方の参考になれば幸いです。
もし「うちの現場こうしてるよ!」などあれば、ぜひコメントで共有してください 🙌


✍️ 書いた人:AI活用が好きなクラウドインフラ+API設計エンジニア
📩 ご質問・改善リクエストもお気軽にどうぞ!


0
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
0
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?