メインコンテンツへスキップ
SDETRole
SDETRole

用語集 · API テスト

HTTP ステータスコード

英語: HTTP status code

別名: ステータスコード, レスポンスコード, HTTPステータス, HTTP status codes

定義

すべての HTTP レスポンスに含まれる 3 桁の数字で、リクエストが成功したか、リダイレクトされたか、クライアントまたはサーバーの原因で失敗したかを示します。

HTTP ステータスコードは、リクエストに対するサーバーの短い回答です。最初の桁がクラスを表します。1xx は情報、2xx は成功、3xx はリダイレクト、4xx はクライアントエラー(リクエストが誤っている)、5xx はサーバーエラー(リクエストは正しかったかもしれないが、サーバーが失敗した)です。正確なステータスコードをアサートすることは、通常どの API テストでも最初のチェックになります。

テスターがよく使うコード

コード 意味 主な用途
200 OK ボディ付きの成功 GET、またはリソースを返す更新
201 Created リソースが作成された POST。Location ヘッダーを伴う
204 No Content 成功、ボディなし DELETE、一部の PUT
301 / 302 / 304 移動した、別の場所で見つかった、変更なし リダイレクトとキャッシュ
400 Bad Request 形式が不正、または無効なリクエスト 壊れた JSON、誤った型
401 Unauthorized 認証されていない トークンがない、期限切れ、または無効
403 Forbidden 認証済みだが許可されていない 有効なユーザーだがロールが違う
404 Not Found そのようなリソースはない 未知の id、または禁止されたリソースを隠す場合
409 Conflict 現在の状態と衝突する メールアドレスの重複、バージョンの競合
422 Unprocessable Content 形式は正しいがバリデーションに失敗 ビジネスルール違反
429 Too Many Requests レート制限を超えた Retry-After を伴うことが多い
500 / 502 / 503 / 504 サーバーエラー、不正なゲートウェイ、利用不可、ゲートウェイタイムアウト バグとインフラの問題

401 と 403 の違い

名前に反して、401 Unauthorized は認証に関するものです。サーバーはあなたが誰か分かっていません。解決策はログインするか有効なトークンを送ることで、レスポンスには WWW-Authenticate ヘッダーを含めるべきです。403 Forbidden は認可に関するものです。サーバーはあなたが誰か分かったうえで、その操作を許可していません。再ログインしても解決しません。テストスイートでは、トークンなし、期限切れのトークン、適切な権限を持たないユーザーの有効なトークン、のすべてをカバーすべきです。

よくある間違い

  • 200 だけを確認する。 欠陥の大半はエラーパスに潜んでいます。不正な入力には 4xx が返るべきで、500 は入力が処理されていないことを意味し、バグとして報告する価値があります。
  • 200 ステータスでエラーを返す。 200 のボディにエラーメッセージを入れると、クライアントや監視が正しく動かなくなります。
  • 規約の不統一。 すべての不正な入力に 400 を使う API もあれば、バリデーションの失敗に 422 を使う API もあります。どちらでもかまいませんが、1 つの API の中で混在させるのはバグです。

キーワードを入力すると SDETRole 全体を検索できます。

Pagefind による全文検索 · ブラウザ内で動作します 検索ページを開く →