APIテストの「地獄」から脱出しよう:Postmanで実現する自動検証の極意
こんにちは。API開発の世界へようこそ。
あなたは今、こんな「手作業の地獄」に陥っていませんか?
「APIの修正をするたびに、Postmanで送信ボタンを押し、レスポンスを目視して『お、200 OKだ。よし、値も合ってるな』と確認する……」
これ、今日で終わりにしましょう。エンジニアがやるべきことは、「テストコードを一度書いて、あとはツールに働かせること」です。今日は、API開発の強力な武器であるPostmanの「Testsタブ」を使いこなし、あなたのAPI開発を劇的に楽にする方法を伝授します。
—
1. なぜPostmanで自動テストをするのか?
PostmanのTestsタブに書くコードは、JavaScriptで書かれた「自動判定員」です。
手動でチェックしていると、必ず「うっかりミス」が発生します。しかし、テストコードを書けば、「仕様変更でバグが混入した瞬間に赤信号で教えてくれる」環境が手に入ります。
これが構築できるだけで、あなたのコードに対する自信は100倍になります。
—
2. 最初のセットアップ:HelloWorld的な検証
まずは、Postmanをインストールし、適当なAPI(`https://jsonplaceholder.typicode.com/posts/1` など)を叩いてみてください。
「Send」ボタンを押すとレスポンスが返ってきますよね。そのすぐ下にある「Tests」タブを開いてください。ここに魔術を記述していきます。
最初の一歩:ステータスコードの検証
まずは、APIが正しく「200 OK」を返しているか、機械に判定させましょう。
// 1. レスポンスのステータスが200であることを期待する
pm.test(“Status code is 200”, function () {
pm.response.to.have.status(200);
});
これを記述して「Send」を押すと、「Test Results」タブに緑色のチェックマークが表示されるはずです。これが、あなたの最初の自動テストです!
—
3. JSONレスポンスを深掘りする:アサーションの極意
ステータスコードだけでは不十分です。重要なのは「中身」ですよね。
例えば、以下のようなJSONが返ってくるとします。
{
“id”: 1,
“title”: “foo”,
“userId”: 1
}
この値を検証するには、`pm.response.json()` を使ってレスポンスをオブジェクトとして取得します。
// 2. JSONレスポンスの特定フィールドを検証する
pm.test(“レスポンスの内容が正しいか検証”, function () {
// レスポンスをパースして変数に格納
const jsonData = pm.response.json();
// idが1であることを確認
pm.expect(jsonData.id).to.eql(1);
// titleが期待通りの文字列か確認
pm.expect(jsonData.title).to.be.a(‘string’);
pm.expect(jsonData.title).to.eql(“foo”);
});
なぜこれが強力なのか?
`pm.expect` を使うと、失敗した時に「何が期待値で、何が結果だったのか」がコンソールに明確に表示されます。デバッグの手間が最小限になるのです。
—
4. 現場で震えるほど役立つ「プロのテクニック」
初心者から脱却し、中級者になるためのヒントを2つだけ共有します。
① スキーマバリデーション(型チェック)
一つ一つ値をチェックするのは大変ですよね。そんな時は「JSONスキーマ」で構造全体を一気に検証しましょう。
const schema = {
“type”: “object”,
“properties”: {
“id”: { “type”: “integer” },
“title”: { “type”: “string” }
},
“required”: [“id”, “title”]
};
pm.test(“スキーマが仕様通りか確認”, () => {
pm.response.to.have.jsonSchema(schema);
});
これを使えば、APIのレスポンス形式が崩れた瞬間に即座に検知できます。
② Collection Runnerで一括実行
個別のリクエストだけでなく、左メニューの「Collections」にリクエストをまとめましょう。そして、フォルダを右クリックして「Run collection」を選択してください。
これで、数百個のAPIテストが数秒で完了します。朝、PCを開いてコーヒーを淹れている間に、全APIが健全かどうかを確認できるのです。
—
最後に:自動化は「あなたの時間」を取り戻す
「テストを書く時間がない」と多くの人は言います。しかし、「テストを書かないことで発生する修正とバグ対応のループ」の方が、遥かに膨大な時間を奪っています。
今日ご紹介した `pm.test` は、そのループを断ち切るための最初のステップです。
まずは一つのリクエストから。次に、そのAPIの全フィールドへ。少しずつ自動化を広げていってください。
これをマスターすれば、あなたはもう「動いたはずなのにバグが出た」と怯える必要はありません。自信を持って、堂々とデプロイしてください。応援しています!