コンテンツにスキップ

⚡ しきい値テスト用ファイル

アップロード上限の境界値テスト用に、バイト単位でぴったりサイズのファイルを用意しました。

境界値テストとは

多くのサービスにはファイルサイズの上限があります。その上限付近(ちょうど・直前・直後)でテストすることで、バリデーション処理の正しさを効率的に検証できます。

直前(9.9MB / 24.9MB)

上限以下。アップロード成功するはず。

ちょうど(10MB / 25MB)

境界値。成功するか要確認。

直後(10.1MB / 25.1MB)

上限超過。エラーになるはず。

PNG

JPG

ZIP

主要サービスのアップロード上限

サービス上限テスト用ファイル
Gmail 添付25MB24.9MB / 25MB / 25.1MB
Discord (無料)25MB24.9MB / 25MB / 25.1MB
WordPress (デフォルト)10MB9.9MB / 10MB / 10.1MB

📖 つまずきやすいポイント

9.9 / 10.0 / 10.1 MB のように、境界のすぐ手前・ちょうど・すぐ後ろをバイト単位で揃えたファイルです。上限が「以下」なのか「未満」なのか、どの層で弾かれるのかを 1 回のテストで切り分けられます。逆に言うと、境界の挙動しか分かりません。平常時の性能や同時実行時の挙動は別に測ってください。

ケース 何が起きるか どうする
10 MB 制限に 10 MB が通らない 10 MB が 10,000,000 バイトなのか 10,485,760 バイト (10 × 1024²) なのかで 48 万バイト違います。実装によって両方あります。 どちらの解釈かを先に確かめます。単位の対応表は ファイルサイズ単位、換算は バイト変換
エラーメッセージが出ずに切れる nginx が client_max_body_size で弾く場合、PHP まで届く前に 413 が返ります。アプリのログには何も残りません。 切り分けは nginx の access / error ログを見るのが確実です。413 の意味と対処は 413 エラーの記事にまとめてあります。
境界ちょうどが通ったり通らなかったりする 比較しているのがファイル本体のサイズではなくリクエスト全体のサイズだと、境界ちょうどのファイルはヘッダの分だけ超えます。ファイル名の長さでも変わります。 9.9 MB と 10.1 MB の結果を並べてどちら側で挙動が変わるかを見ます。両方落ちるなら閾値はもっと手前にあります。

境界が正しく効いていても、上限ぎりぎりのファイルが同時に何本も来たときにディスクやメモリが持つかは別問題です。upload_max_filesize × 同時接続数が空き容量を超えないか、あわせて確認してください。