APIテストケースの書き方:テンプレートと例

INEZA Felin-Michel

INEZA Felin-Michel

22 5月 2026

APIテストケースの書き方:テンプレートと例

Apidog エンタープライズ

オンプレミスデプロイ

SSO & RBAC

SOC 2 準拠

Apidog Enterpriseを見る

不安定なAPIは、誰かがテストを忘れたために失敗することはめったにありません。テストが間違ったものを確認したか、200ステータスコード以外何も確認しなかったために失敗します。適切に書かれたAPIテストケースは、リリース前に契約の破損を検知できるか、それとも後で障害を説明することになるかの違いを生みます。

このガイドでは、APIテストケースとは何か、優れたテストケースに必要なフィールド、そしてゼロからテストケースを作成する方法を説明します。ログインエンドポイントの完全な作業例を見てから、スクリプトを書かずにApidogで同じテストを構築します。

APIテストケースとは何か

APIテストケースとは、特定のエンドポイントが特定の条件下で正しく動作することを確認するために使用される、定義された入力、アクション、および期待される結果のセットです。これはテストシナリオよりも範囲が狭いです。シナリオは「ユーザーログインを確認する」と言いますが、テストケースは「/auth/loginに有効な認証情報をPOSTし、800ミリ秒以内にボディにJWTを含む200レスポンスを確認する」と言います。

各ケースは単一の動作をターゲットとします。この焦点が重要です。広範で多目的なテストが失敗した場合、どの部分が壊れたのかを調査する必要があります。焦点を絞ったケースが失敗した場合、失敗の名前がその答えを教えてくれます。ケースがシナリオやスクリプトとどのように関連しているかまだ把握できていない場合は、テストシナリオ vs テストケーステストケース vs テストスクリプトが明確に線引きしています。

APIテストは通常、5つの側面をカバーし、あなたのケースはそれらすべてにわたって広がるべきです。

ハッピーパスのみをチェックするテストスイートは、実際のユーザーが空のパスワードフィールドを送信するまでは合格し続けます。

テストケーステンプレートが必要な理由

白紙の状態から各ケースを作成すると、一貫性のないカバレッジが生じます。あるエンジニアは期待されるステータスコードを記録し、別のエンジニアはレスポンスボディを記録し、3人目は「動作するはずだ」と書きます。テンプレートは、毎回同じ構造を強制することでこれを解決します。

共有テンプレートは、4つの具体的な利点をもたらします。すべてのケースが同じフィールドを持ち、ギャップが可視化されるため、カバレッジは監査可能になります。新しいテスターが5つの異なる形式ではなく1つの形式を読むため、オンボーディングが加速します。構造化されたケースは複製や調整が容易であるため、ケースはリリース間で再利用可能になります。そして、各ケースが要件やエンドポイントにリンクしているため、トレーサビリティが維持されます。

テンプレートは自動化も現実的にします。構造化されたケースは自動テストステップにきれいにマッピングされますが、曖昧なケースは機械が実行する前に書き直す必要があります。

強力なAPIテストケースの構成要素

完全なAPIテストケーステンプレートは、以下のフィールドを持ちます。すべてのケースでこれらすべてが必要なわけではありませんが、コアとなるセットは譲れません。

フィールド 目的
テストケースID 一意の参照、例: AUTH-LOGIN-001
タイトル テスト対象の動作を説明する1行
エンドポイント メソッドとパス、例: POST /auth/login
事前条件 実行前に必要な状態、例: 「ユーザーが存在する」
ヘッダー 必須のリクエストヘッダー
リクエストボディ / パラメータ 正確な入力ペイロード
期待されるステータス 期待するHTTPコード
期待されるレスポンス アサートするボディフィールド、スキーマ、または値
期待される応答時間 レイテンシーの予算
優先度 重要、高、中、低
テストタイプ 機能、ネガティブ、セキュリティ、パフォーマンス

チームが最も省略しがちなフィールドは、期待される応答時間と期待されるレスポンスボディです。これらを省略すると、空のペイロードで200が返されたり、正しいペイロードが3秒も遅れて返されたりしてもテストが「合格」してしまいます。

APIテストケースの作成手順

まずAPIドキュメントを読みます。必須パラメータ、認証方法、文書化されたステータスコード、レスポンススキーマをメモします。すべてのテストケースは文書化された動作に関する主張であるため、ドキュメントがあなたの信頼できる情報源です。OpenAPI仕様を読み込んでテストコレクションを生成するツールは、最初の骨格を提供できます。

テストに値する条件をリストアップします。単一のエンドポイントの場合、通常は次のようになります。有効な入力、それぞれ欠落している必須フィールド、それぞれ不正な形式のフィールド、未承認のリクエスト、期限切れのトークン、過大なペイロード。それぞれの条件が1つのケースになります。

明確なテストデータを準備します。ネガティブケースには、厳密に1つの方法で誤っているデータが必要です。ケース間で同じペイロードを再利用すると、常に1つのパスしか実行しないため、バグが隠れてしまいます。

期待される結果を正確に記述します。「成功を返す」はアサーションではありません。「200を返し、ボディに空でないtoken文字列が含まれ、expires_inが3600に等しい」がアサーションです。ここでの精度が、ケースを実行する価値を高めます。

実行可能なスイートにケースを追加します。スプレッドシート内のケースは意図を文書化しますが、テストツール内のケースは合否を生成します。関連するケースをグループ化して、エンドポイント全体がワンクリックで実行されるようにします。テストスイートはまさにこのために存在します。

ケースを最新の状態に保ちます。APIが変更された場合、ケースもそれに合わせて変更されます。古いスキーマをアサートする古いケースは、存在しないケースよりも悪いものです。なぜなら、間違った理由で失敗し、チームに赤いビルドを無視するように仕向けるからです。

作業例: ログインエンドポイントのテスト

標準的な認証エンドポイントを例にとります: POST /auth/login。これはメールアドレスとパスワードを受け取り、JWTを返します。以下に、これを適切にカバーする4つのケースを示します。

AUTH-LOGIN-001: 有効な認証情報 (機能、重要)

AUTH-LOGIN-002: 間違ったパスワード (ネガティブ、重要)

AUTH-LOGIN-003: パスワードフィールドの欠落 (ネガティブ、高)

AUTH-LOGIN-004: 不正な形式のメールアドレス (ネガティブ、中)

4つのケースで1つのエンドポイントに対し、契約、エラーの形状、ステータスコード、レイテンシー予算をすでにチェックしています。メールフィールドにSQLインジェクション文字列を含むセキュリティケースを追加すれば、コミットごとに実行する価値のあるスイートが完成します。

Apidogで同じテストケースを作成する

上記の4つのケースは、一行のスクリプトも書かずにすべて実行できます。Apidogでは、APIテストケースは視覚的に構築されます。

  1. エンドポイントをインポートまたは定義します。OpenAPIファイル、PostmanコレクションからPOST /auth/loginを取り込むか、直接定義します。リクエストスキーマがすべてのアサーションの基礎となります。
  2. リクエストデータを追加します。ケースAUTH-LOGIN-001のボディを入力します。データ駆動型のカバレッジについては、CSVまたはJSONファイルを添付することで、1つのケースがすべての認証情報行に対して実行されます。これが、データ駆動型APIテストがほぼ同じ4つのケースを1つに置き換える方法です。
  3. アサーションを視覚的に設定します。クリックして、ステータスが200に等しいこと、tokenが存在し空でない文字列であること、expires_inが3600に等しいこと、および応答時間が800ミリ秒未満であることをアサートします。スクリプトは不要です。
  4. ケースをテストシナリオにグループ化します。4つのログインケースすべてを1つのシナリオに追加し、エンドポイントが単一の実行で完全にテストされるようにします。
  5. 実行してレポートを読みます。Apidogはシナリオを実行し、ケースごとの合否レポートを生成し、問題が発生した正確なアサーションを特定します。シナリオはローカルで、スケジュールで、またはCI内で実行できます。

スクリプト作成が間違っているということではありません。構造化された視覚的なケースの方が、作成が速く、レビューが容易で、微妙な間違いが起こりにくいということです。コードが必要な場合でも、Apidogではカスタムスクリプトを記述できます。完全にスクリプト不要のワークフローについては、PostmanなしのAPIテストでより広範なアプローチを説明しています。

避けるべきよくある間違い

ステータスコードのみをアサートすること。200はリクエストが処理されたことを意味し、レスポンスが正しかったことを意味しません。常にボディフィールドをアサートしてください。

エンドポイントごとに1つの巨大なケースを作成すること。失敗しても何も学習できません。条件ごとに分割してください。

テストデータを再利用すること。すべてのネガティブケースで同じペイロードを送信すると、テストするのは1つの失敗モードだけになります。

レイテンシーのアサーションがないこと。応答時間を測定しないと、パフォーマンスの回帰が静かにすり抜けてしまいます。

自動化されないケース。ランナーが実行しない文書化されたケースは、テストではなくコメントです。ケースを実行するスイートに移動させ、すべてのビルドで実行されるようにしてください。OpenAPI仕様からテストスクリプトを生成するのは、そのスイートを迅速にブートストラップする方法です。

例に従って4つのログインケースを自分で構築したい場合は、Apidogをダウンロードしてください。

よくある質問

1つのエンドポイントにはいくつのテストケースが必要ですか?ハッピーパス、すべての必須フィールドの失敗、1つの認証失敗、1つのセキュリティプローブをカバーするのに十分な数です。シンプルなエンドポイントであれば4〜6ケース、複雑なエンドポイントであればそれ以上になることもあります。

APIが構築される前にケースを作成すべきですか?はい。設計に対して、デザインファーストでケースを作成することで、契約のギャップを早期に発見できます。これをAIアシストによるテストケース生成と組み合わせることで、最初のセットを迅速に作成し、手動で洗練させることができます。

ケースを保存するにはスプレッドシートとテストツールのどちらが良いですか?スプレッドシートは意図を文書化しますが、実行することはできません。ケースは実行して結果を報告するツールに保存し、常にケースがグリーンまたはレッドになるようにしてください。

テストケースとテストシナリオの違いは何ですか?シナリオは高レベルの目標(「ログインを確認する」)であり、ケースはその中の具体的で実行可能な1つのチェックです。テストシナリオ vs テストケースを参照してください。

ApidogでAPIデザイン中心のアプローチを取る

APIの開発と利用をよりシンプルなことにする方法を発見できる